授權檢視表總覽

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 資料欄系列中的 skusagents 資料欄,以及 pet_id 資料欄系列中的 dogcatbird 資料欄。

    {
      "subsetView": {
        "rowPrefixes": [""]
        "familySubsets": {
          "order": {
            "qualifiers": ["skus", "agents"]
          "pet_id": {
            "qualifiers": ["dog", "cat", "bird"]
          }
          }
        }
      }
    }

後續步驟