安全性

QlikView 中的安全性機制可以兩種不同方式設定:可內建在 QlikView 文件指令碼中,或者使用 QlikView Publisher 來設定。

驗證與授權

驗證是用來確定某人身分是否如其所稱的程序。QlikView 可讓 Windows 作業系統進行驗證,或提示輸入使用者識別碼與密碼 (與 Windows 使用者識別碼與密碼不同),或使用 QlikView 授權金鑰做為簡單驗證方法。

授權則是查明經識別的某人是否有權限擁有資源。QlikView 可讓 Windows 作業系統進行授權,或自行進行授權。若為後者,則必須將安全性表格內建於指令碼。

使用 QlikView Publisher 的安全性

如果將 QlikView Publisher 設定為處理安全性,則每個 QlikView 檔案將會分成數個檔案,其中每個檔案包含與相關使用者或使用者群組有關的資料。這些檔案會使用正確的作業系統安全性設定儲存在資料夾中,亦即 QlikView 讓作業系統處理驗證與授權。

不過,檔案本身並未內建安全性,所以下載的檔案沒有任何保護。

檔案大小通常較小,因為一個單一檔案將會分成數個檔案,且使用者只會開啟包含其自有資料的檔案。不過,這也表示 QlikView Server 可以使用比所有資料皆保存在一個檔案中還多的記憶體,因為有時會載入數個包含相同資料的檔案。

如需進一步資訊,請參閱 QlikView Publisher 文件。

使用 QlikView 指令碼中區段存取的安全性

如果設定 QlikView 指令碼中的 [區段存取] 來處理安全性,則可設定一個單一檔案來保存數個使用者或使用者群組的資料。QlikView 將使用 [區段存取] 中的資訊來進行驗證與授權,並大量減少資料,因此使用者只能看見自己的資料。

這個安全性內建於檔案本身,因此下載的檔案也能獲得保護。不過,如果安全性需求高,則應該避免下載檔案與離線使用。檔案應限定由 QlikView Server 發佈。

因為所有資料都保存在一個檔案中,這個檔案的大小可能會非常的大。

QlikView 文件可在離線模式中隱藏。如要隱藏離線使用者文件,使用 QMC 在使用者文件中的文件資訊區段新增以下屬性:

  • 名稱: 隱藏
  • 值:True

以下所有資訊參考在 QlikView 指令碼中使用 [Section Access] 的安全性方法。

指令碼中的區段

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

如果在指令碼中定義存取區段,必須將載入「一般」資料的指令碼部分放置於不同區段,且由 section application 陳述式來起始。

Example:  

Section Access;

Load * inline

[ACCESS,USERID,PASSWORD

ADMIN, A,X

USER,U,Y ];

Section Application;

Load... ... from... ...

區段存取中的存取層級

可授權指定的使用者或使用者群組存取 QlikView 文件。在安全性表格中,可將使用者指派為 ADMIN 或 USER 存取層級。如果未指派存取層級,則使用者無法開啟 QlikView 文件。

具有 ADMIN 存取權的使用者可變更文件中的所有內容。使用文件屬性工作表屬性對話方塊中的安全性頁面,具有 ADMIN 存取權的使用者可限制使用者修改文件的可能性。具有 USER 權限的使用者無法存取安全性頁面。

備註: ADMIN 權限只對本機文件相關!一律可透過 USER 權限存取在伺服器上開啟的文件。

區段存取系統欄位

存取層級會指派給區段存取內,載入的一或多個表格中的使用者。這些表格可包含數個不同的使用者特定系統欄位,通常會是 USERID 與 PASSWORD,以及定義存取層級的欄位 ACCESS。所有區段存取系統欄位將會用於驗證或授權。以下描述全套的區段存取系統欄位。

無安全性欄位、所有安全性欄位或任一組合的安全性欄位都可以載入於存取區段中。因此不一定要使用 USERID,可使用其他欄位來進行的授權,例如僅使用序號。

 

ACCESS 定義對應使用者應擁有之存取權的欄位。
USERID 應包含已接受之使用者識別碼的欄位。QlikView 將提示輸入使用者識別碼,並將其與此欄位中的值比較。此使用者識別碼與 Windows 使用者識別碼不同。
PASSWORD 應包含已接受之密碼的欄位。QlikView 將提示輸入密碼,並將其與此欄位中的值比較。此密碼與 Windows 密碼不同。
SERIAL 應包含對應 QlikView 序號之號碼的欄位。
範例:4900 2394 7113 7304
QlikView 會檢查使用者的序號,並將其與此欄位中的值比較。
NTNAME 應包含對應 Windows NT 網域使用者名稱或群組名稱之字串的欄位。
QlikView 將從作業系統擷取登入資訊,並將其與此欄位中的值比較。
NTDOMAINSID 應包含對應 Windows NT 網域 SID 之字串的欄位。
範例:S-1-5-21-125976590-4672381061092489882
QlikView 將從作業系統擷取登入資訊,並將其與此欄位中的值比較。
NTSID 應包含 Windows NT SID 的欄位。
範例:S-15-21-125976590-467238106-1092489882-1378
QlikView 將從作業系統擷取登入資訊,並將其與此欄位中的值比較。
OMIT

應包含該為此特定使用者省略之欄位的欄位。可使用萬用字元,且欄位可為空白。為此可以使用子欄位方便作業。

備註: 您不得在索引鍵欄位上套用 OMIT,因為這會變更基礎資料結構。這可能會造成邏輯島及運算不一致。

QlikView 會將 QlikView 序號與 SERIAL 欄位比較、將 Windows NT 使用者名稱和群組與 NTNAME 比較、將 Windows NT 網域 SID 與 NTDOMAINSID 比較,及將 Windows NT SID 與 NTSID 比較。QlikView 也將會進一步提示輸入使用者識別碼與密碼,並將它們與 USERIDPASSWORD 欄位比較。

如果找到的使用者識別碼、密碼和環境屬性組合也出現在區段存取表格中,則會使用對應的存取層級來開啟文件。若沒有找到,QlikView 將拒絕使用者存取文件。如果嘗試三次都未正確輸入使用者識別碼及/或密碼,必須重複進行整個登入程序。

由於在存取區段中也使用相同的內部邏輯 (為 QlikView 的標誌),故可將安全性欄位置於不同的表格中。(因此,系統管理員可在安全性表格外製作 QlikView 文件。在此情況下,按一下對應的欄位值即可模擬正確的序號、密碼等等。)

在登入程序中,QlikView 會先檢查 SERIAL、NTNAME、NTDOMAINSIDNTSID,查看此資訊是否足以授與使用者進入文件的存取權。若資訊足夠,QlikView 會開啟文件,而不提示輸入使用者識別碼與密碼。

如果只載入部分存取欄位,則會使用上述適當需求。

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

Upper - 指令碼與圖表函數

不過,一般使用者開啟 QlikView 文件所輸入的使用者識別碼和密碼則不區分大小寫。

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

備註: 從 QVD 檔案載入資料時,使用 upper 函數將會減慢載入速度。
備註: 若要在 inline 陳述式中產生存取表格,請使用存取限制表格精靈
備註: 如果您已啟用了區段存取,就無法使用這裡列出的區段存取系統欄位名稱作為您資料模型中的欄位名稱。

Example 1:  

只檢查序號。一部特定電腦獲得 ADMIN 存取權。其他電腦獲得 USER 存取權。請注意,可使用星號來標示「任何序號」。

ACCESS SERIAL
ADMIN 4900 2394 7113 7304
USER *

Example 2:  

系統管理員與 QlikView 執行批次工作所在的伺服器獲得 ADMIN 存取權。網域中的其他電腦在輸入使用者識別碼 “USER” 與密碼之後獲得 USER 存取權。

ACCESS SERIAL NTDOMAINSID USERID PASSWORD
ADMIN * S-1-5-21-125976590-467238106-1092489882 ADMIN ADMIN
ADMIN 4900 2394 7113 7304 * * *
USER * S-1-5-21-125976590-467238106-1092489882 USER USER

QlikView 功能限制

文件屬性:安全性頁面與工作表屬性:安全性頁面上的控制項可禁止存取某些功能表項目,並禁止變更版面配置。如果要使用這些設定做為真正的保護措施,請務必讓文件使用者以 USER 身分登入。以 ADMIN 身分登入的任何人都可隨時變更安全性設定。

使用 USER 權限開啟文件的使用者,不會在 [屬性] 對話方塊中看見安全性頁面。

動態資料減少

QlikView 與 QlikView Server 支援根據區段存取登入向使用者隱藏文件中某些資料的功能。

首先,可使用系統欄位 OMIT 來隱藏欄位 (資料行)。

接著,將區段存取資料與實際資料連結即可隱藏記錄 (列):將一或多個通用名稱的欄位放置在區段存取區段應用中,即可控制要顯示/隱藏的值選項。使用者登入後,QlikView 會嘗試將區段存取之欄位中的選項複製到欄位名稱完全相同之區段應用的任何欄位 (欄位名稱必須為大寫)。選取項目後,QlikView 會向使用者永久隱藏這些選項排除的所有資料。

若要讓此程序進行,必須選取文件屬性:開啟頁面上的根據區段存取減少初始資料。如果要在其他非由 QlikView Server 發佈的文件上使用此功能,必須選取 [文件屬性] 的相同頁面上的禁止二進位檔載入選項,才能保護資料。

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

Example:  

section access;

load * inline [

ACCESS, USERID,REDUCTION, OMIT

ADMIN, ADMIN,*,

USER, A,1

USER, B, 2,NUM

USER, C, 3, ALPHA

];

section application;

T1:

load *,

NUM AS REDUCTION;

載入

Chr( RecNo()+ord(‘A’)-1) AS ALPHA,

RechNo() AS NUM

AUTOGENERATE 3;

REDUCTION (大寫) 欄位現在會同時出現在區段存取區段應用 (所有欄位值也同樣為大寫) 中。這兩個欄位通常會完全不同且各自分開,但如果選取根據區段存取減少初始資料選項,這兩個欄位將互相連結,並減少向使用者顯示的記錄數。

區段存取中的 OMIT 欄位可定義應該向使用者隱藏的欄位。

結果如下:

使用者 A 可看見所有欄位,但只能看見連結到 REDUCTION=1 的記錄。

使用者 B 除了 NUM 之外可看見所有欄位,但只能看見連結到 REDUCTION=2 的記錄。

使用者 C 除了 ALPHA 之外可看見所有欄位,但只能看見連結到 REDUCTION=3 的記錄。

繼承的存取限制

二進位檔載入將會使新的 QlikView 文件繼承存取限制。具有此新文件 ADMIN 權限的使用者可新增存取區段來變更新文件的存取權。具有 USER 權限的使用者可執行指令碼並變更指令碼,以將自己的資料新增到二進位檔載入的檔案中。具有 USER 權限的使用者無法變更存取權。如此,資料庫系統管理員就能同時控制使用者存取權以及二進位檔載入的 QlikView 文件。

加密

QlikView Server 與 QlikView Windows 用戶端間的通訊會經過加密。不過若使用 AJAX 用戶端,則不會加密通訊。

此外,所有 QlikView 文件會經過編碼,讓檢視者、除錯人員等等無法讀取資訊。