本頁面說明精細存取權控管使用者如何存取 Spanner 資料庫。
如要瞭解精細的存取權控管機制,請參閱「關於精細的存取權控管機制」。
精細存取權控管使用者必須選取資料庫角色,才能執行 SQL 陳述式和查詢,以及對資料庫執行資料列作業。在變更角色之前,系統會在整個工作階段中保留您選取的角色。
提交查詢、DML 或資料列作業時,Spanner 會使用下列規則檢查授權:
- Google Cloud 控制台
Spanner 會先檢查您是否具備資料庫層級的 IAM 權限。如果是,Google Cloud 控制台就不會顯示資料庫角色選取器,工作階段會繼續使用資料庫層級的權限。
如果您只有精細的存取權控管權限,沒有 IAM 資料庫層級權限,則必須已獲授與
spanner_sys_reader
系統角色或其中一個成員角色。在資料庫「總覽」頁面選取角色,讓 Google Cloud 控制台工作階段以必要權限繼續執行。
- Google Cloud SDK
提交查詢、DML 或列作業時,如果指定資料庫角色,Spanner 會檢查精細的存取控管權限。如果檢查失敗,Spanner 就不會檢查資料庫層級的 IAM 權限,作業也會失敗。
如果您未指定資料庫角色,Spanner 會檢查資料庫層級的 IAM 權限,如果檢查成功,您的工作階段就會繼續使用資料庫層級的權限。
存取 Spanner 資料庫時,請使用下列方法指定資料庫角色:
控制台
選取資料庫,然後在資料庫的「總覽」頁面中,按一下「目前角色」欄位旁的「變更資料庫角色」 (鉛筆) 圖示。
在預設情況下,精細存取權控管使用者登入時,這個欄位的值為
public
。如要瞭解public
系統角色,請參閱精細的存取權控管系統角色。在「變更資料庫角色」對話方塊中,從可用角色清單中選取其他角色。
按一下「更新」。
「目前角色」欄位會顯示新角色。
gcloud
將
--database-role
選項新增至gcloud spanner databases execute-sql
指令,如下所示:gcloud spanner databases execute-sql DATABASE_NAME \ --instance=INSTANCE_NAME \ --sql="SELECT * from TABLE_NAME;" \ --database-role=ROLE_NAME
用戶端程式庫
C++
C#
Go
Java
Node.js
PHP
Python
Ruby