# 使用區段存取管理資料安全性

Section Access 用來控制應用程式安全性。這基本上屬於資料載入指令碼，您可在此新增安全性表格以定義誰能看見什麼。 Qlik Sense 使用此資訊將資料縮減至適當範圍，當使用者開啟應用程式時，也就是說，應用程式中的部分資料會根據使用者的身分向其隱藏。Section Access 與應用程式中的資料密切整合並依賴資料以控制存取權限。此動態資料減少的形式可將表格列、欄或兩者合併設為目標。如需更多資訊，請參閱 [Qlik 的信任和安全性](https://www.qlik.com/us/trust)。

## 載入指令碼中的區段

資料存取控制是透過一個或數個安全性表格來管理，而安全性表格的載入方式與通常載入資料的方式相同。因此就可以將這些表格儲存在標準資料庫或試算表中。管理安全性表格的指令碼陳述式會在授權區段中指定，而這個在指令碼中的存取區段是由 Section Access 陳述式來起始。

如果在指令碼中定義授權區段，必須將載入應用程式資料的指令碼部分放置於不同區段，且由 Section Application 陳述式來起始。

```
Section Access;
Load * INLINE [
    ACCESS,  USERID,                 REDUCTION
    USER,    AD_DOMAIN\ADMIN,        *
    USER,    AD_DOMAIN\A,            1
    USER,    AD_DOMAIN\B,            2
    USER,    AD_DOMAIN\C,            3
    ADMIN,   INTERNAL\SA_SCHEDULER,        
];
Section Application;
T1:
Load *,
NUM AS REDUCTION;
LOAD
Chr(RecNo()+ord('A')-1) AS ALPHA,
RecNo() AS NUM
AUTOGENERATE 3;
		
```

請注意，變更載入指令碼後，務必載入資料，變更才能生效。

### 區段存取系統欄位

存取層級會指派給指令碼的 Section Access 部分內載入的一或多個安全性表格中的使用者。這些表格必須至少包含兩個系統欄位：ACCESS，這是定義存取層級的欄位，以及USERID或USER。EMAIL。其他選用系統欄位可以根據使用情況來新增。以下描述全套的 Section Access 系統欄位。

#### ACCESS

定義對應使用者應擁有的存取權。

可授權指定的使用者存取 Qlik Sense 應用程式。在安全性表格中，可將使用者指派為 ADMIN 或 USER 存取層級。具有 ADMIN 權限的人員可以存取應用程式中的所有資料，除非其受限於安全性表格。具有 USER 權限的使用者只能存取安全性表格中定義的資料。如果未指派有效的存取層級，則使用者無法開啟應用程式。

若在載入情境中使用 Section Access，則排程器服務使用者 INTERNAL\SA\_SCHEDULER 需要 ADMIN 存取權限才能執行載入。例如︰

```
Section Access;
LOAD * inline [
    ACCESS,  USERID
    ADMIN,   INTERNAL\SA_SCHEDULER
];
```

若您不想要使用 INTERNAL\SA\_SCHEDULER 帳戶，請參閱 [使用模擬載入資料](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/Security/manage-security-with-section-access.htm#Impersonation) 瞭解替代方法。

若區段存取用於範本應用程式中的 on-demand 應用程式 產生 (ODAG) 狀況， INTERNAL\SA\_API 使用者必須納入為區段存取表格中的 ADMIN。例如︰

```
Section Access;
LOAD * inline [
    ACCESS,  USERID
    ADMIN,   INTERNAL\SA_API
];
```

#### USERID

包含對應於 Qlik Sense 的網域名稱和使用者名稱。 Qlik Sense 將從 Proxy 服務獲得登入資訊，並將其與此欄位中的值比較。

萬用字元 (\*) 解譯為所有使用者，需遵守安全性表格中指定的其他條件。例如，在下列安全性表格中，位於 Qlik Sense 租用戶管理員中的使用者可以查看所有列出的 REDUCTION 值。

Section Access; LOAD \* INLINE [ ACCESS, USERID, GROUP, REDUCTION ADMIN, \*, Qlik Sense Tenant Admins, \* USER, QLIK-POC\SOMEOTHERUSER1, \*, 1 USER, QLIK-POC\SOMEOTHERUSER2, \*, 2 ... ];

資訊備註 USERID 和 NTNAME 都使用相同的驗證資訊，因此不必在安全性表格中相同的列上檢查兩者。兩個欄位之間的差異是 NTNAME 也會檢查群組。

#### NTNAME

資訊備註NTNAME 是舊版 QlikView 欄位，若 QlikView 沒有使用相同的安全性表格，建議使用 USERID。

欄位應包含對應至 Windows NT 網域使用者名稱或群組名稱的字串。若使用其他驗證系統，應包含驗證使用者的名稱。Qlik Sense 將從作業系統擷取登入資訊，並將其與此欄位中的值進行比較。

#### GROUP

包含一個字串，對應到 Qlik Sense 中的群組。Qlik Sense 將解析 Proxy 服務針對此群組提供的使用者。

#### SERIAL

資訊備註SERIAL 是舊版 QlikView 欄位，若您僅使用 Qlik Sense 則不會使用。

包含對應於平台的字串。若欄位包含字串 ‘QLIKSENSE’ 或萬用字元 ‘\*’，可根據安全性表格中的其他欄位授予存取權限。

資訊備註若欄位 SERIAL 包含授權號碼，區段存取列將會拒絕存取文件。此設定僅在 QlikView 中有效。

#### OMIT

包含針對此特定使用者要省略的欄位名稱。可使用萬用字元，且欄位可為空白。

資訊備註建議您不要在索引鍵欄位上套用 OMIT。被忽略的索引鍵欄位可見於資料模型檢視器中，但內容無法使用，這可能會讓使用者感到困擾。此外，在用於OMIT視覺化的欄位上套用 會對無法存取省略欄位的使用者造成不完整的視覺化。

## 管理使用者存取應用程式

Section access 在其最簡單的形式下，可用來限制特定使用者存取應用程式。會透過排除方式拒絕使用者存取應用程式。換言之，如果特定使用者 ID 未列在安全性表格中，他們將無法存取應用程式。此規則的唯一例外情況是若將萬用字元 (\*) 指派至安全性表格其中一列的 USERID 欄位。在此情況下，萬用字元表示所有已驗證的使用者都可以存取應用程式。以下是包含使用者 ID 清單的安全性表格範例：

Section Access; LOAD \* inline [ ACCESS, USERID ADMIN, AD\_DOMAIN\ADMIN USER, AD\_DOMAIN\A USER, AD\_DOMAIN\B ]; Section Application;

## 管理使用者存取應用程式中的特定資料

在向使用者授權存取應用程式本身之後，動態資料減少會限制存取 Qlik Sense 應用程式內資料表格中的列和欄。

### 管理存取列層級資料

將資料減少欄新增至載入指令碼存取區段中的安全性表格，以限制存取列層級資料。將 Section Access 資料與實際資料連結即可向使用者隱藏特定記錄 (列)。將一或多個具有通用名稱的減少欄位放置在指令碼的 Section Access 與區段應用部分，即可控制要顯示或排除的資料選項。使用者登入後，Qlik Sense 會將存取區段中減少欄位的選項與欄位名稱完全相同之應用程式區段的任何欄位配對 (欄位名稱必須為大寫)。選取項目後，Qlik Sense 會向使用者永久隱藏這些選項已排除的所有資料。若萬用字元 (\*) 作為資料減少欄中的欄位值使用，這會解譯為允許使用者存取與安全性表格中所有選取的減少欄位關聯的記錄。

Qlik Sense 比較區段存取中的減少欄位與資料模型中的欄位時，預期會有下列行為：

* 若資料模型中的欄位值符合區段存取中的減少欄位，應用程式將會開啟，為指定使用者顯示與相符內容相關的資料。將會隱藏其他資料。

* 若減少欄位值不符合資料模型中的任何值，則應用程式不會為一般使用者開啟。不過，這將會為標記為 ADMIN (管理員) 的使用者以不減少的方式開啟。

不建議使用區段存取中的數個減少欄位，因為這會允許合併目標存取權限以外的其他存取權限。

資訊備註

資料減少欄中的萬用字元 \* 僅參考安全性表格中的所有值。如果安全性表格的減少欄中不可用的區段應用中存在多個值，則這些值會減少。

資訊備註上述傳輸中使用的所有欄位名稱與這些欄位的所有欄位值都必須為大寫，因為在存取區段中所有欄位名稱與欄位值預設都會轉換為大寫。

資訊備註依照預設，若您想要在 Qlik 管理主控台 任務中啟用載入指令碼，則需要具有 INTERNAL\SA\_SCHEDULER 存取權限的 ADMIN 帳戶使用者。若您不想要使用 INTERNAL\SA\_SCHEDULER 帳戶，請參閱 [使用模擬載入資料](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/Security/manage-security-with-section-access.htm#Impersonation) 瞭解替代方法。

範例： 以使用者身分識別為基礎的列層級資料減少

Section Access; Authorization: LOAD \* inline [ ACCESS, USERID, REDUCTION ADMIN, AD\_DOMAIN\ADMIN, \* USER, AD\_DOMAIN\A, 1 USER, AD\_DOMAIN\B, 2 USER, AD\_DOMAIN\C, \* ADMIN, INTERNAL\SA\_SCHEDULER, \* ]; Section Application; T1: LOAD \*, NUM AS REDUCTION; LOAD RecNo() AS NUM AUTOGENERATE 3;

在此範例中，欄位 REDUCTION (大寫) 欄位現在會同時出現在 Section Access 與區段應用 (所有欄位值也同樣為大寫) 中。這兩個欄位通常會不同且各自分開，但是使用區段存取，這些欄位將互相連結，並減少向使用者顯示的記錄數。

結果將是：

* 使用者 ADMIN 可以查看所有欄位，但當 REDUCTION = 1 或 REDUCTION =2 時，只能看到其他使用者可以看到的記錄。
* 使用者 A 可看見所有欄位，但只能看見與 REDUCTION=1 關聯的記錄。
* 使用者 B 可看見所有欄位，但只能看見與 REDUCTION=2 關聯的記錄。
* 使用者 C 可以查看所有欄位，並且只能看到其他使用者在 REDUCTION = 1 或 REDUCTION =2 時可以看到的記錄。

### 管理存取欄層級資料

將 OMIT 系統欄位新增至區段存取指令碼中的安全性表格，以限制存取欄層級資料。下列範例基於上一個已進行列資料減少的範例。

範例： 以使用者身分識別為基礎的欄資料減少

Section Access; LOAD \* inline [ ACCESS, USERID, REDUCTION, OMIT ADMIN, AD\_DOMAIN\ADMIN, \*, USER, AD\_DOMAIN\A, 1, USER, AD\_DOMAIN\B, 2, NUM USER, AD\_DOMAIN\C, 3, ALPHA ADMIN, INTERNAL\SA\_SCHEDULER, \*, ]; Section Application; T1: LOAD \*, NUM AS REDUCTION; LOAD Chr( RecNo()+ord('A')-1) AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

Section Access 中的 OMIT 欄位可定義應該向使用者隱藏的欄位。

結果將是：

* 使用者 ADMIN 可以查看所有欄位，但當 REDUCTION 為 1、2 或 3 時，只能看到其他使用者在此範例中看到的那些記錄。
* 使用者 A 可看見所有欄位，但只能看見與 REDUCTION=1 關聯的記錄。
* 使用者 B 可看見除了 NUM 之外的所有欄位，且只能看見與 REDUCTION=2 關聯的記錄。
* 使用者 C 可看見除了 ALPHA 之外的所有欄位，且只能看見與 REDUCTION=3 關聯的記錄。

資訊備註有些視覺化具有必須達到的最低資料要求才能轉譯。因此，若從使用者資料檢視省略欄層級欄位，可能會顯示「不完整的視覺化」。

### 管理存取使用者群組

Section Access 透過群組成員身分向您提供選項，以限制使用者可見的資料範圍。若要使用使用者群組限制資料，將 GROUP 欄位名稱新增至存取區段中的安全性表格，並定義 GROUP 欄位的值。

範例： 以使用者群組為基礎的資料減少

Section Access; LOAD \* inline [ ACCESS, USERID, GROUP, REDUCTION, OMIT USER, \*, ADMIN, \*, USER, \*, A, 1, USER, \*, B, 2, NUM USER, \*, C, 3, ALPHA USER, \*, GROUP1, 3, ADMIN, INTERNAL\SA\_SCHEDULER, \*, \*, ]; section application; T1: LOAD \*, NUM AS REDUCTION; LOAD Chr( RecNo()+ord('A')-1) AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

結果將是：

* 屬於 ADMIN 群組的使用者可以查看所有欄位，但當 REDUCTION 為 1、2 或 3 時，只能看到其他使用者在此範例中看到的那些記錄。
* 允許屬於 A 群組的使用者查看所有欄位中與 REDUCTION=1 關聯的資料。
* 屬於 B 群組的使用者可以看見關聯到 REDUCTION=2 的資料，但無法在 NUM 欄位中看見
* 屬於 C 群組的使用者可以看見關聯到 REDUCTION=3 的資料，但無法在 ALPHA 欄位中看見
* 允許屬於 GROUP1 群組的使用者查看所有欄位中與 REDUCTION=3 關聯的資料。

Qlik Sense 會比較使用者與 UserID，並針對表格中的群組解析使用者。如果使用者屬於允許存取的群組，或者使用者符合條件，則他們可以存取應用程式。

## 使用模擬載入資料

依照預設，內部系統帳戶 SA\_SCHEDULER 會用來執行載入任務。此帳戶提升了權限，技術上可以使用任何資料來源。不過，在 QMC 中有設定，這使用模擬來通過應用程式擁有者權限而不是內部系統帳戶去執行重新下載任務。透過進行此設定，是應用程式擁有者而不是 SA\_SCHEDULER 用於下載，這表示您不會在區段存取表格中新增 SA\_SCHEDULER，而是新增應用程式擁有者。在任務鏈內，應用程式可以有不同的擁有者，其來源權限視每個擁有者的存取權限而定。請參閱[服務叢集](https://help.qlik.com/en-US/sense-admin/May2026/Subsystems/DeployAdministerQSE/Content/Sense_DeployAdminister/QSEoW/Administer_QSEoW/Managing_QSEoW/service-cluster.htm) （僅提供英文版）瞭解更多資訊。

## 在多雲端環境中管理使用者存取

Qlik Sense 多雲端環境涉及混合使用者驗證機制。通常，藉由 Qlik Sense Enterprise on Windows，會透過 Proxy 服務驗證 Section Access 安全性表格中的 USERID 。在 Qlik Cloud 中，識別提供者會假設該驗證角色。因此，為 Qlik Sense Enterprise on Windows 等內部部署環境設定的 Section Access 將不會在雲端環境中運作。

搭配 OIDC 或 SAML 識別提供者 (Qlik IdP 或自訂 IdP) 使用 Qlik Cloud 時，subject claim 用來在登入時識別使用者。透過 Section Access，安全性表格中 USERID 欄位的值會與 subject claim 的值比較。設定 租用戶 時，請確保 SAM 帳戶名稱映射到 subject claim 的識別提供者。因此，舉例來說，若 SAM 帳戶名稱為 AD\_DOMAIN\Dev，請將 subject claim 設定為 AD\_DOMAIN\Dev。若您想要查看 IdP subject claim 的值，在瀏覽器將 /api/v1/diagnose-claims 附加到租用戶 URL，例如 your-tenant.us.qlikcloud.com/api/v1/diagnose-claims。在 JSON 回應中，subject claim 稱為 sub。

若您無法使用 SAM 帳戶名稱，有替代方式可以驗證使用者。由於電子郵件地址傾向在不同的環境中保持相同，您可以使用 USER。安全性表格中的 EMAIL 欄位，而非 USERID。以下範例呈現安全性表格可能看起來的樣子：

| 存取 | 使用者 ID | 使用者電子郵件 | 註解 | 國家/地區 |
| --- | --- | --- | --- | --- |
| 使用者 | ABC\Joe | \* | Access-on-prem | 美國 |
| 使用者 | \* | joe.smith@example.com | Access-in-cloud | 美國 |
| 使用者 | ABC\Ursula | \* | Access-on-prem | 德國 |
| 使用者 | \* | ursula.schultz@example.com | Access-in-cloud | 德國 |
| 使用者 | ABC\Stefan | \* | Access-on-prem | 瑞典 |
| 使用者 | \* | stefan.svensson@example.com | Access-in-cloud | 瑞典 |

授權指令碼：

Section Access; LOAD \* INLINE [ ACCESS, USERID, USER.EMAIL, COUNTRY USER, ABC\Joe, \*, United States USER, \*, joe.smith@example.com, United States USER, ABC\Ursula, \*, Germany USER, \*, ursula.schultz@example.com, Germany USER, ABC\Stefan, \*, Sweden USER, \*, stefan.svensson@example.com, Sweden ];

請注意，每個使用者有兩個記錄：一個用於內部部署存取，一個用於雲端存取。萬用字元可確保僅使用相關驗證欄位。在此範例中，COUNTRY 作為資料減少欄位使用。

## 使用 Section Access 和 Insight Advisor Chat

若要讓使用區段存取的應用程式可用於 Insight Advisor Chat，您必須確保下列服務使用者在區段存取指令碼中具有管理員存取權限：

* INTERNAL/sa\_repository：這可讓 Section Access 指令碼可用於控制使用者存取的存放庫服務。

* INTERNAL/sa\_scheduler：這允許應用程式使用 QMC 任務載入。

警告備註

若您在應用程式名稱、欄位名稱或主項目名稱中有敏感資訊，可能會透過讓應用程式使用可用於 Insight Advisor Chat 的 Section Access 而暴露這些內容。用於查詢的應用程式建議包括使用者可存取的串流中的應用程式。這可能包括使用者在應用程式的區段存取中無法存取的應用程式。不過，選取這些應用程式將沒有任何作用。按一下維度或量值以從使用 Section Access 的應用程式檢視可用項目時，使用者可能會看見他們無法存取的項目。不過，按一下這些項目不會向使用者提供任何資料。

例如︰

Section Access; LOAD \* inline [ USERID ,ACCESS INTERNAL\sa\_repository ,ADMIN INTERNAL\sa\_scheduler ,ADMIN DOMAINNAME\user1 ,ADMIN DOMAINNAME\user2 ,USER DOMAINNAME\user3 ,USER ];

這些使用者處於 區段存取 指令碼後，您就能讓應用程式可用於 Insight Advisor Chat。載入應用程式後，應用程式將可用於 Insight Advisor Chat。

## 使用 QVD 與區段存取

可以讀取 QVD 檔案作為一般載入或最佳化載入。最佳化載入是載入期間沒有進行任何資料轉換且 WHERE 子句中沒有任何篩選的情況。

使用 QVD 與區段存取時，最佳化載入不會運作。若您想要使用 QVD 檔案將資料載入到區段存取中，您必須展開 QVD 檔案。展開 QVD 檔案最簡單的方式是在載入資料時進行格式變更。

在下列範例中，不會展開 QVD 檔案，因為沒有對資料進行格式化。

範例： 沒有資料格式化而不運作的範例 (最佳化載入)

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd);

例如，您可以改用 upper() 函數，以格式化將會展開 QVD 檔案的資料。

範例： 有資料格式化而運作的範例

section access; LOAD ACCESS, USERID, PASSWORD, upper([GROUP]) as [GROUP] FROM SAccess.qvd (qvd);

您也可以將 Where 1=1 陳述式新增至 LOAD 陳述式。

範例： 另一個有資料格式化而運作的範例

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd) where 1=1;

## 使用 Section Access 的準則和提示

以下是瞭解 Section Access 的一些重要事實和實用提示。

* 存取區段中 LOAD 或 SELECT 陳述式列出的所有欄位名稱和值都必須為大寫。資料庫中若有任何欄位名稱包含小寫字母，應先使用 Upper 函數轉換為大寫，才能由 LOAD 或 SELECT 陳述式讀取欄位。

  如需詳細資訊，請參閱[Upper 指令碼與圖表函數](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Upper.htm)。

* 您無法使用列出的區段存取系統欄位名稱作為您資料模型中的欄位名稱。

* 如果您對已發佈應用程式的開發副本進行變更，則必須重新發佈開發副本，才能將區段存取控制套用至已發佈的應用程式。

* 快照會根據取得快照之使用者的存取權來顯示資料，然後快照可以在故事中進行共用。然而，當使用者從故事返回視覺化以查看應用程式中的即時資料時，他們會受到自己存取權的限制。

* 若您使用區段存取或處理敏感資料，請勿將色彩指派至主維度值，因為這可能會透過色彩設定暴露值。

* 若要避免公開限制的資料，請使用區段存取設定移除所有附加檔案，然後再發佈應用程式。發佈應用程式時，將包括附加檔案。如果複製發佈的應用程式，則附加檔案會包括在副本中。然而，如果區段存取限制已套用至附加的資料檔案中，複製檔案時將不會保留區段存取設定，因此複製應用程式的使用者將可以查看附加檔案中的所有資料。

* 萬用字元 (\*) 會解譯為表格中欄位的所有 (已列出的) 值。如果用於指令碼的存取區段中所載入表格內的其中一個系統欄位 (USERID、GROUP)，則會解譯為此欄位的所有 (含未列出) 可能值。

* 安全性欄位可置於不同的表格中。

* 從 QVD 檔案載入資料時，Upper 函數將會減慢載入速度。

* 如果您透過設定區段存取將自己鎖在應用程式之外，您可以在沒有資料的情況下開啟應用程式，並在資料載入指令碼中編輯存取區段。要執行這項操作，您必須擁有編輯和重新載入資料載入指令碼的權限。

  如需詳細資訊，請參閱[開啟沒有資料的應用程式](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Apps/open-app.htm#open-app-without-data)。

* 二進位載入將會使新的 Qlik Sense 應用程式繼承存取限制。