使用 Section Access 管理資料安全性
Section Access 用來控制應用程式安全性。這基本上屬於資料載入指令碼,您可在此新增安全性表格以定義誰能看見什麼。 Qlik Cloud 使用此資訊在使用者開啟應用程式時將資料減少為適當範圍,亦即會根據使用者的身分識別向使用者隱藏應用程式中的某些資料。區段存取與應用程式中的資料密切整合並依賴資料以控制存取權限。此動態資料減少的形式可將表格列、欄或兩者合併設為目標。如需更多資訊,請參閱 Qlik 的信任和安全性。
載入指令碼中的區段
資料存取控制是透過一個或數個安全性表格來管理,而安全性表格的載入方式與通常載入資料的方式相同。因此就可以將這些表格儲存在標準資料庫或試算表中。管理安全性表格的指令碼陳述式會在授權區段中指定,而這個在指令碼中的存取區段是由 Section Access 陳述式來起始。
列於區段存取中的所有欄位名稱和欄位值一律會轉換為大寫。因此,屬於資料減少的所有欄位必須轉換為大寫,以符合區段存取陳述式中陳述的內容,即使位於區段存取陳述式之外也是如此。資料庫中若有任何欄位名稱包含小寫字母,您可以先使用 Upper 函數轉換為大寫,才能由 LOAD 或 SELECT 陳述式讀取欄位。
如需詳細資訊,請參閱 Upper - 指令碼與圖表函數。
如果在指令碼中定義授權區段,必須將載入應用程式資料的指令碼部分放置於不同區段,且由 Section Application 陳述式來起始。
範例:
請注意,變更載入指令碼後,務必載入資料,變更才能生效。
區段存取系統欄位
存取層級會指派給指令碼的 Section Access 部分內載入的一或多個安全性表格中的使用者。這些表格必須至少包含兩個系統欄位:ACCESS,此為定義存取層級的欄位,以及 USERID 或 USER。EMAIL。其他選用系統欄位可以根據使用情況來新增。以下描述全套的 Section Access 系統欄位。
ACCESS
定義對應使用者應擁有的存取權。
可授權指定的使用者存取 Qlik Sense 應用程式。在安全性表格中,可將使用者指派為 ADMIN 或 USER 存取層級。具有 ADMIN 權限的人員可以存取應用程式中的所有資料,除非其受限於安全性表格。具有 USER 權限的使用者只能存取安全性表格中定義的資料。如果未指派有效的存取層級,則使用者無法開啟應用程式。
USERID
包含對應於 Qlik Cloud 使用者名稱的字串。Qlik Cloud 將從 IdP 主體獲得登入資訊,並將其與此欄位中的值比較。如需使用電子郵件地址驗證使用者身分識別的替代方式,請參閱 USER.EMAIL。對於多雲端環境,可以針對內部 Windows 識別對應 IdP 主體。使用 Qlik Account 時,無法針對內部 Windows 識別對應主體。 可以在 管理 活動中心的使用者區段中檢視使用者 IdP 主體。
萬用字元 (*) 解譯為所有使用者,需遵守安全性表格中指定的其他條件。例如,在下列安全性表格中,位於 Qlik Sense 租用戶管理員中的使用者可以查看所有列出的 REDUCTION 值。
NTNAME
欄位應包含對應至 NetBIOS 版本 Windows NT 網域使用者名稱或群組名稱的字串。若使用其他驗證系統,應包含驗證使用者的名稱。
Qlik Cloud 將從識別提供者的 subject 宣告擷取登入資訊,並將其與此欄位中的值比較。
USER.EMAIL
包含對應於使用者電子郵件地址的字串。Qlik Cloud 將從識別提供者獲得此資訊,並將其與此欄位中的值比較。
GROUP
包含對應於 Qlik Cloud 中群組的字串。Qlik Cloud 將從識別提供者的 “groups” 宣告獲得資訊,並將其與此欄位中的值比較。
OMIT
包含針對此特定使用者要省略的欄位名稱。可使用萬用字元,且欄位可為空白。
管理使用者存取應用程式
具有 USERID AD_DOMAIN\C 的使用者完全無法開啟應用程式,因為該使用者 ID 未列於安全性表格中。
Section access 在其最簡單的形式下,可用來限制特定使用者存取應用程式。會透過排除方式拒絕使用者存取應用程式。換言之,若特定使用者 電子郵件地址未列於安全性表格中,將無法存取應用程式。此規則的唯一例外情況是若將萬用字元 (*) 指派至安全性表格其中一列的 USER.EMAIL 欄位。在此情況下,萬用字元代表所有已驗證的使用者都能存取應用程式。以下是具有使用者 ID 清單的安全性表格範例:
具有 USER.EMAIL USER4@example.com 的使用者完全無法開啟應用程式,因為該使用者 電子郵件地址未列於安全性表格中。
管理使用者存取應用程式中的特定資料
在向使用者授權存取應用程式本身之後,動態資料減少會限制存取 Qlik Sense 應用程式內資料表格中的列和欄。
管理存取列層級資料
將資料減少欄新增至載入指令碼存取區段中的安全性表格,以限制存取列層級資料。將 Section Access 資料與實際資料連結即可向使用者隱藏特定記錄 (列)。將一或多個具有通用名稱的減少欄位放置在指令碼的 Section Access 與區段應用部分,即可控制要顯示或排除的資料選項。使用者登入後,Qlik Sense 會將存取區段中減少欄位的選項與欄位名稱完全相同之應用程式區段的任何欄位配對 (欄位名稱必須為大寫)。選取項目後,Qlik Sense 會向使用者永久隱藏這些選項排除的所有資料。若萬用字元 (*) 作為資料減少欄中的欄位值使用,這會解譯為允許使用者存取與安全性表格中所有選取的減少欄位關聯的記錄。
Qlik Sense 比較區段存取中的減少欄位與資料模型中的欄位時,預期會有下列行為:
若資料模型中的欄位值符合區段存取中的減少欄位,應用程式將會開啟,為指定使用者顯示與相符內容相關的資料。將會隱藏其他資料。
若減少欄位值不符合資料模型中的任何值,則應用程式不會為一般使用者開啟。不過,這將會為標記為 ADMIN (管理員) 的使用者以不減少的方式開啟。
不建議使用區段存取中的數個減少欄位,因為這會允許合併目標存取權限以外的其他存取權限。
資料減少欄中的萬用字元 * 僅參考安全性表格中的所有值。如果安全性表格的減少欄中不可用的區段應用中存在多個值,則這些值會減少。
範例: 以使用者身分識別為基礎的列層級資料減少
在此範例中,欄位 REDUCTION (大寫) 欄位現在會同時出現在 Section Access 與區段應用 (所有欄位值也同樣為大寫) 中。這兩個欄位通常會不同且各自分開,但是使用區段存取,這些欄位將互相連結,並減少向使用者顯示的記錄數。
結果將是:
- 使用者 USER1@EXAMPLE.COM 可以查看所有欄位,若為 REDUCTION = 1 或 REDUCTION =2,只能看到其他使用者可以看到的那些記錄。
- 使用者 USER2@EXAMPLE.COM 可看見所有欄位,但只能看見與 REDUCTION=1 關聯的記錄。
- 使用者 USER3@EXAMPLE.COM 可看見所有欄位,但只能看見與 REDUCTION=2 關聯的記錄。
- 使用者 USER4@EXAMPLE.COM 可以查看所有欄位,若為 REDUCTION = 1 或 REDUCTION =2,只能看到其他使用者可以看到的那些記錄。
管理存取欄層級資料
將 OMIT 系統欄位新增至區段存取指令碼中的安全性表格,以限制存取欄層級資料。下列範例基於上一個已進行列資料減少的範例。
範例: 以使用者身分識別為基礎的欄資料減少
Section Access 中的 OMIT 欄位可定義應該向使用者隱藏的欄位。
結果將是:
- 使用者 USER1@example.com 可以查看所有欄位,但當 REDUCTION 為 1、2 或 3 時,只能看到其他使用者在此範例中看到的那些記錄。
- 使用者 USER2@example.com 可看見所有欄位,但只能看見與 REDUCTION=1 關聯的記錄。
- 使用者 USER3@example.com 可看見除了 NUM 之外的所有欄位,且只能看見與 REDUCTION=2 關聯的記錄。
- 使用者 USER4@example.com 可看見除了 ALPHA 之外的所有欄位,且只能看見與 REDUCTION=3 關聯的記錄。
管理存取使用者群組
Section Access 透過群組成員身分向您提供選項,以限制使用者可見的資料範圍。若要使用使用者群組限制資料,將 GROUP 欄位名稱新增至存取區段中的安全性表格,並定義 GROUP 欄位的值。
範例: 以使用者群組為基礎的資料減少
結果將是:
- 屬於 ADMIN 群組的使用者可以查看所有欄位,但當 REDUCTION 為 1、2 或 3 時,只能看到其他使用者在此範例中看到的那些記錄。
- 允許屬於 A 群組的使用者查看所有欄位中與 REDUCTION=1 關聯的資料。
- 允許屬於 B 群組的使用者查看與 REDUCTION=2 關聯但並不在 NUM 欄位中的資料
- 允許屬於 C 群組的使用者查看與 REDUCTION=3 關聯但並不在 ALPHA 欄位中的資料
- 允許屬於 GROUP1 群組的使用者查看所有欄位中與 REDUCTION=3 關聯的資料
- 使用者 AD_DOMAIN\DEV 可以查看所有欄位中的所有資料。
Qlik Cloud 會比較使用者與 UserID,並針對表格中的群組解析使用者。如果使用者屬於允許存取的群組,或者使用者符合條件,則他們可以存取應用程式。
在 Qlik Cloud 中載入資料
若要在 Qlik Cloud 中載入應用程式而不要進行資料減少,建議使用安全性表格中的 USER.EMAIL 系統欄位。USER.EMAIL 欄位的值應為使用者的電子郵件地址,且該使用者能夠編輯和載入應用程式。這會套用至共用空間和受管理空間中的應用程式。例如︰
在此範例中,具有電子郵件地址 test@example.com 的使用者是 ADMIN,能夠載入應用程式。
若您正在使用群組,下列範例同樣適用於 Qlik Sense 和 Qlik Cloud:
您也可以將安全性表格中的 USERID 對應到識別提供者的 subject claim,如以下示例所示。此設定建議用於從 Qlik Sense 遷移至 Qlik Cloud 並適用於多雲端環境。如需更多關於將 USERID 對應至 subject claim 的資訊,請參閱 在多雲端環境中管理使用者存取
在多雲端環境中管理使用者存取
Qlik Sense 多雲端環境涉及混合使用者驗證機制。通常,藉由 Qlik Sense Enterprise on Windows,會透過 Proxy 服務驗證 Section Access 安全性表格中的 USERID 。在 Qlik Cloud 中,識別提供者會假設該驗證角色。因此,為 Qlik Sense Enterprise on Windows 等內部部署環境設定的 Section Access 將不會在雲端環境中運作。
搭配 Qlik Cloud 使用 OIDC 或 SAML 識別提供者 (Qlik IdP 或自訂 IdP) 時,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 | USER.EMAIL | 註解 | 國家/地區 |
---|---|---|---|---|
使用者 | 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 | 瑞典 |
授權指令碼:
請注意,每個使用者有兩個記錄:一個用於內部部署存取,一個用於雲端存取。萬用字元可確保僅使用相關驗證欄位。在此範例中,COUNTRY 作為資料減少欄位使用。
QlikView 授權欄位
對於回溯相容性,Qlik Cloud 會從 QlikView 辨識授權欄位。雖然在 QlikView 和 Qlik Cloud 中以不同的方式解譯 USERID,在 Qlik Sense 中將以相同的方式解譯 Qlik Cloud:這將會比對驗證使用者的名稱。
PASSWORD, NTSID 及 NTDOMAINSID
若使用欄位 PASSWORD、NTSID 和 NTDOMAINSID 之一,且包含相關值,則會拒絕文件的存取權限。若欄位包含萬用字元 (*),可能會根據授權表格中的其他欄位授予存取權限。
序列
若使用欄位 SERIAL 具其中包含授權號碼,區段存取列將會拒絕存取文件。若欄位包含萬用字元 (*),可能會根據授權表格中的其他欄位授予存取權限。
此外,在 Qlik Cloud 中,此欄位也能用來定義環境。這表示,若欄位包含字串 ‘QLIKCLOUD’,可能會根據授權表格中的其他欄位授予存取權限。
混合環境
若您計畫在 QlikView 和 Qlik Cloud 中使用相同的安全性表格,請注意:
• USERID 在 QlikView 和 Qlik Cloud 中有不同的意義,若使用,可能會造成安全性問題。請改用 NTNAME 或與 SERIAL 合併,如下所述。
•GROUP 和以 ‘USER.’ 開頭的欄位,例如 'USER.NAME' 和 'USER.EMAIL',是 (或將會是) Qlik Cloud 中的授權欄位。若您在區段存取中使用這些欄位,Qlik Cloud 中可能會拒絕存取權限。
•PASSWORD, NTSID 和 NTDOMAINSID 無法用於 Qlik Cloud。將拒絕存取權限,除非使用萬用字元。
•SERIAL 無法用來檢查 Qlik Cloud 中的授權號碼。不過,若此欄位包含字串 ‘QLIKCLOUD’,可能會授予存取權限。這表示可以有如下的安全性表格:行 1 將在 QlikView 中 (但不是在 Qlik Cloud 中) 授予存取權限,而行 2 將在Qlik Cloud 中 (但不是在 QlikView 中) 授予存取權限。
線條 | 序列 | 使用者 ID | 註解 |
---|---|---|---|
1 | 4600 0123 4567 8901 | * | 授予存取權限以校正 QlikView 中的授權號碼。 |
2 | QLIKCLOUD | JOHN DOE | 授予存取權限以校正 Qlik Cloud 中的使用者。 |
授權指令碼:
使用 Section Access 和 Insight Advisor Chat
使用 Section Access 的應用程式使用索引使用者來判定 Insight Advisor Chat 從應用程式擷取多少資訊。索引使用者應為在 Section Access 指令碼中對應用程式具有最高存取層級的使用者。不過,向最終使用者提供的資料仍然透過 Section Access 限制來控制。
如需如何使用區段存取和 Insight Advisor Chat 的視覺示範,請參閱:
若您在應用程式名稱、欄位名稱或主項目名稱中有敏感資訊,可能會透過讓應用程式使用可用於 Insight Advisor Chat 的 Section Access 而暴露這些內容。應用程式查詢建議包括空間中使用者可存取的應用程式。這些可能包括使用者在應用程式的區段存取中無法存取的應用程式。不過,選取這些應用程式不會執行任何事項。按一下維度或量值以從使用 Section Access 的應用程式檢視可用項目時,使用者可能會看見他們無法存取的項目。不過,按一下這些項目不會向使用者提供任何資料。
依照預設,應用程式擁有者是索引使用者。您可以在詳細資訊中變更索引使用者。
請執行下列動作:
在 Qlik Cloud 中,前往應用程式。
按一下應用程式上的 並選取詳細資訊。
在索引使用者中,選取索引使用者。
按一下返回。
按一下應用程式上的 並選取載入。
使用 QVD 與區段存取
可以讀取 QVD 檔案作為一般載入或最佳化載入。最佳化載入是載入期間沒有進行任何資料轉換且 WHERE 子句中沒有任何篩選的情況。
使用 QVD 與區段存取時,最佳化載入不會運作。若您想要使用 QVD 檔案將資料載入到區段存取中,您必須展開 QVD 檔案。展開 QVD 檔案最簡單的方式是在載入資料時進行格式變更。
在下列範例中,不會展開 QVD 檔案,因為沒有對資料進行格式化。
範例: 沒有資料格式化而不運作的範例 (最佳化載入)
例如,您可以改用 upper() 函數,以格式化將會展開 QVD 檔案的資料。
範例: 有資料格式化而運作的範例
您也可以將 Where 1=1 陳述式新增至 LOAD 陳述式。
範例: 另一個有資料格式化而運作的範例
使用 Section Access 的準則和提示
以下是瞭解 Section Access 的一些重要事實和實用提示。
- 列於區段存取中的所有欄位名稱和欄位值一律會轉換為大寫。因此,屬於資料減少的所有欄位必須轉換為大寫,以符合區段存取陳述式中陳述的內容,即使位於區段存取陳述式之外也是如此。資料庫中若有任何欄位名稱包含小寫字母,您可以先使用 Upper 函數轉換為大寫,才能由 LOAD 或 SELECT 陳述式讀取欄位。
如需詳細資訊,請參閱 Upper - 指令碼與圖表函數。
- 您無法使用列出的區段存取系統欄位名稱作為您資料模型中的欄位名稱。
- 必須先發佈應用程式,才能套用 Section Access 控制。載入應用程式不會套用任何新的或已變更的 Section Access 指令碼。
- 快照會根據取得快照之使用者的存取權來顯示資料,然後快照可以在故事中進行共用。然而,當使用者從故事返回視覺化以查看應用程式中的即時資料時,他們會受到自己存取權的限制。
- 若您使用區段存取或處理敏感資料,請勿將色彩指派至主維度值,因為這可能會透過色彩設定暴露值。
- 若要避免公開限制的資料,請使用區段存取設定移除所有附加檔案,然後再發佈應用程式。發佈應用程式時會納入附加的檔案。如果複製發佈的應用程式,則附加檔案會包括在副本中。然而,如果區段存取限制已套用至附加的資料檔案中,複製檔案時將不會保留區段存取設定,因此複製應用程式的使用者將可以查看附加檔案中的所有資料。
- 萬用字元 (*) 會解譯為表格中欄位的所有 (已列出的) 值。如果用於指令碼的存取區段中所載入表格內的其中一個系統欄位 (USERID、GROUP),則會解譯為此欄位的所有 (含未列出) 可能值。
- 安全性欄位可置於不同的表格中。
- 從 QVD 檔案載入資料時,Upper 函數將會減慢載入速度。