本頁面說明精細的存取控管如何與 GoogleSQL 方言資料庫和 PostgreSQL 方言資料庫的 Spanner 變更串流搭配運作。
如要允許精細的存取控管使用者讀取變更串流資料,請使用下列授權。兩者缺一不可。
授予變更串流的
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 方言資料庫:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES - PostgreSQL 方言資料庫:
information_schema.change_stream_privileges
系統會根據變更串流的目前資料庫角色權限,篩選這些檢視表中的資料列。這可確保主體只能查看有權存取的角色、權限和變更串流。
資料列篩選也適用於下列變更串流相關檢視表:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMSINFORMATION_SCHEMA.CHANGE_STREAM_TABLESINFORMATION_SCHEMA.CHANGE_STREAM_COLUMNSINFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
系統角色 spanner_info_reader 及其成員一律會看到未經篩選的 INFORMATION_SCHEMA。
PostgreSQL
information_schema.change_streamsinformation_schema.change_stream_tablesinformation_schema.change_stream_columnsinformation_schema.change_stream_options
系統角色 spanner_info_reader 及其成員會看到未篩選的 information_schema。
資料列篩選也適用於下列變更串流讀取函式的中繼資料檢視:
GoogleSQL
PostgreSQL
注意事項
變更串流會使用中繼資料資料庫維護內部狀態。中繼資料資料庫可以與應用程式資料庫相同或不同。建議您使用其他資料庫。不過,如果是精細的存取控管使用者,中繼資料資料庫不得與應用程式資料庫相同。這是因為執行 Dataflow 工作的 Identity and Access Management (IAM) 主體,需要中繼資料資料庫的資料庫層級讀取或寫入權限。這會覆寫為應用程式資料庫設定的精細存取控管權限。
詳情請參閱「考慮使用獨立的中繼資料資料庫」。
由於變更串流包含受追蹤資料表和資料欄的資料副本,因此在授予使用者變更串流存取權時,請務必謹慎。即使變更串流的讀取器沒有資料表和資料欄的
SELECT權限,仍可查看追蹤資料表和資料欄的資料變更。雖然對變更串流及其追蹤的資料表和資料欄設定個別控制項較有彈性,但可能會有風險,因此請務必據此建構資料庫角色和權限。舉例來說,撤銷角色的資料表SELECT權限時,請考量是否也要撤銷變更串流的SELECT權限,以及相關聯讀取函式的EXECUTE權限。如果您在追蹤所有資料表的變更串流上授予
SELECT,被授權者就能查看日後新增的任何資料表的資料變更。