本頁面說明如何搭配使用精細存取控制功能,以及 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
。您可以使用 read 函式讀取變更串流記錄。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_STREAMS
INFORMATION_SCHEMA.CHANGE_STREAM_TABLES
INFORMATION_SCHEMA.CHANGE_STREAM_COLUMNS
INFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
系統角色 spanner_info_reader
及其成員一律會看到未篩選的 INFORMATION_SCHEMA
。
PostgreSQL
information_schema.change_streams
information_schema.change_stream_tables
information_schema.change_stream_columns
information_schema.change_stream_options
系統角色 spanner_info_reader
及其成員會看到未經過篩選的 information_schema
。
資料列篩選功能也適用於變更串流讀取函式中的下列中繼資料檢視:
GoogleSQL
PostgreSQL
注意事項
變更串流會使用中繼資料資料庫來維護內部狀態。您可以使用與應用程式資料庫相同或不同的結構描述資料庫。建議您改用其他資料庫。不過,對於精細存取權控管使用者而言,中繼資料資料庫不得與應用程式資料庫相同。這是因為執行 Dataflow 工作的 IAM 使用者主體,需要在中繼資料資料庫的資料庫層級取得讀取或寫入權限。這會覆寫為應用程式資料庫設定的精細存取權控管權限。
詳情請參閱「考慮使用獨立的中繼資料資料庫」。
變更串流包含追蹤表格和資料欄的資料獨立副本,因此請謹慎授予使用者變更串流的存取權。變更資料流的讀者可以查看追蹤表格和欄的資料變更,即使他們沒有這些表格和欄的
SELECT
權限也一樣。雖然針對變更串流和其追蹤的資料表和欄設定個別控管機制可提供更大的彈性,但仍存在潛在風險,因此請務必相應地建構資料庫角色和權限。舉例來說,當您從角色撤銷資料表的SELECT
權限時,請考慮是否也要撤銷變更串流的SELECT
,以及撤銷相關聯的讀取函式EXECUTE
。如果您在追蹤所有資料表的變更串流上授予
SELECT
,授權對象就能查看日後新增的任何資料表資料變更。