本页面介绍了如何在您是精细访问权限控制用户的情况下访问 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