本页介绍了当您是精细访问权限控制用户时,如何访问 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