授權檢視表總覽
Bigtable 資料表的授權檢視畫面可對 Bigtable 資料套用精細的存取權控管機制。授權 view 是資料表的一部分,可進行設定,讓授權 view 包含特定的資料表資料。然後單獨授予這個檢視表的存取權給特定人員,以區隔子資料表和主資料表的存取權。
如果資料表含有不應開放所有使用者存取的資料,授權檢視區塊就非常實用,適用於多租戶資料表或其他情況。與其他資料庫服務中的檢視區塊不同,Bigtable 授權檢視區塊可用於控管讀取和寫入權限。您可以透過程式輔助建立數千個授權檢視區塊,就像其他儲存系統的「可更新檢視區塊」或「已篩選別名」一樣。
本文說明授權檢視區塊,並提供定義檔案的範例。閱讀本文之前,請先熟悉 Bigtable 儲存空間模型。如需操作說明,請參閱「建立及管理授權檢視表」。
授權檢視表的定義
建立授權檢視表時,請使用下列其中一個參數指定要納入授權檢視表的資料,藉此定義授權檢視表:
- 資料列索引鍵前置字串,例如所有以
examplepetstore1|
開頭的資料列 - 資料欄限定詞前置字元 - 例如,限定詞以指定資料欄系列中的
order#
開頭的所有資料欄 - 資料欄限定詞 - 例如,指定資料欄系列中的
order-examplepetstore
資料欄 - 資料列索引鍵前置字串和資料欄限定詞的組合
如果多個資料欄系列使用相同的資料欄限定詞,且您想在檢視畫面中納入所有具有該限定詞的資料欄,定義檢視畫面時,必須分別指定資料欄限定詞和資料欄系列的每個組合。
您用來定義授權檢視區塊的資料列鍵和資料欄限定詞值,會視為服務資料。因此,請勿使用含有機密資訊的資料列索引鍵或資料欄限定詞值,建立授權檢視表。如要瞭解服務資料的處理方式,請參閱Google Cloud 隱私權聲明。
在系列或所有資料列中加入資料欄
如要確保基礎資料表中新增至資料欄系列的任何資料欄,也會納入授權檢視畫面,請將空字串 (""
) 指定為資料欄限定符前置字元。舉例來說,定義檔會在系列子集中包含以下內容:"qualifierPrefixes": [""]
。
同樣地,如要定義授權 view,納入資料表中的所有資料列,請指定空字串 (""
) 做為資料列鍵前置字串。在定義檔案中,這會以 "rowPrefixes": [""]
形式寫入檢視區塊子集。
為避免授權檢視區過於複雜,Bigtable 最多可指定 10 個不同的限定詞前置字元。也就是說,授權檢視表可以指定一個資料欄系列和 10 個限定詞前置字串、10 個資料欄系列和單一限定詞前置字串,或介於兩者之間的任何組合,只要限定詞總數最多為 10 個即可。
最佳做法是每個 JSON 物件只指定一次鍵。如果您多次指定金鑰 (例如資料欄系列名稱),系統會以金鑰的最後一個項目覆寫金鑰的所有先前項目。
定義檔範例
本節將以 JSON 格式呈現授權檢視定義檔案的範例。
以下是授權檢視區塊的定義檔案範例,其中包含 customer
資料欄系列的 address
資料欄,以及開頭為 tel
的資料欄 (適用於資料列鍵前置字串為 examplepetstore1#
的資料列)。
{
"subsetView":
{
"rowPrefixes": ["examplepetstore1#"],
"familySubsets":
{
"customer":
{
"qualifiers":["address"],
"qualifierPrefixes":["tel"]
}
}
},
"deletionProtection": true
}
以下是授權檢視的定義檔範例,其中包含 order
資料欄系列中的 skus
資料欄,以及 customer
資料欄系列中的所有資料欄。
{
"subsetView": {
"rowPrefixes": [""],
"familySubsets": {
"order": {
"qualifiers": ["skus"]
},
"customer": {
"qualifierPrefixes": [""]
}
}
}
}
以下是授權檢視區塊的定義檔案範例,其中只包含資料列中 order
資料欄系列內 skus
資料欄的資料,且資料列的資料列鍵前置字元為 examplepetstore1#
。
{
"subsetView": {
"rowPrefixes": ["examplepetstore1#"]
"familySubsets": {
"order": {
"qualifiers": ["skus"]
}
}
}
}
以下是授權檢視的定義檔範例,其中只包含 order
資料欄系列中的 skus
和 agents
資料欄,以及 pet_id
資料欄系列中的 dog
、cat
和 bird
資料欄。
{
"subsetView": {
"rowPrefixes": [""]
"familySubsets": {
"order": {
"qualifiers": ["skus", "agents"]
"pet_id": {
"qualifiers": ["dog", "cat", "bird"]
}
}
}
}
}