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