變更串流的精細存取權控管

本頁面說明如何搭配使用精細存取權控管和 Spanner 變更串流,適用於 GoogleSQL 方言資料庫和 PostgreSQL 方言資料庫。

對於精細的存取權控管使用者,您可以使用下列授權,允許讀取變更串流資料。兩項授權都必須授予。

  • 在變更串流上授予 SELECT

    GoogleSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE_NAME;
  • 在系統為變更串流自動建立的讀取函式上,授予 EXECUTE。您可以使用讀取函式讀取變更串流記錄。

    GoogleSQL

    GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;

    如要瞭解變更串流讀取函式的命名慣例,以及傳回資訊的格式,請參閱下列主題:

INFORMATION_SCHEMA 變更串流的檢視畫面

下列檢視畫面會顯示變更串流的資料庫角色和權限資訊:

系統會根據變更串流的目前資料庫角色權限,篩選這些檢視表中的資料列。這可確保主體只能查看自己有權存取的角色、權限和變更串流。

列篩選也適用於下列變更串流相關檢視畫面:

GoogleSQL

系統角色 spanner_info_reader 和其成員一律會看到未經過濾的內容 INFORMATION_SCHEMA

PostgreSQL

系統角色 spanner_info_reader 和其成員會看到未經過濾的 information_schema

資料列篩選也適用於變更串流讀取函式的下列中繼資料檢視:

注意事項

  • 變更串流會使用中繼資料庫來維護內部狀態。中繼資料庫可以與應用程式資料庫相同,也可以不同。建議您使用其他資料庫。不過,對於細部存取控管使用者,中繼資料資料庫不能與應用程式資料庫相同。這是因為執行 Dataflow 工作的 IAM 主體需要中繼資料資料庫的資料庫層級讀取或寫入權限。這會覆寫為應用程式資料庫設定的精細存取控管權限。

    詳情請參閱「考慮使用獨立的中繼資料資料庫」。

  • 由於變更串流包含所追蹤資料表和資料欄的個別資料副本,因此授予使用者變更串流存取權時,請務必小心謹慎。即使變更串流的讀取者沒有資料表和資料欄的 SELECT 權限,仍可查看所追蹤資料表和資料欄的資料變更。雖然針對變更串流及其追蹤的資料表和資料欄設定個別控制項,彈性較高,但仍有潛在風險,因此請務必相應地設定資料庫角色和權限。舉例來說,從角色撤銷資料表的 SELECT 權限時,請考慮是否也要撤銷變更串流的 SELECT 權限,以及撤銷相關讀取函式的 EXECUTE 權限。

  • 如果您在追蹤所有資料表的變更串流上授予 SELECT,受讓人就能查看日後新增的任何資料表資料變更。

後續步驟