借助 Identity and Access Management (IAM),您可以控制用户对 Spanner Omni 资源的访问权限。例如,用户可以对特定数据库拥有完全控制权,但无法在部署中创建或修改其他数据库。借助 IAM,您可以向用户授予权限,而无需单独修改每个 Spanner Omni 数据库权限。
本文档重点介绍与 Spanner Omni 相关的 IAM 权限和授予这些权限的 IAM 角色。如需详细了解 IAM 及其功能,请参阅 Identity and Access Management 开发者指南。
权限
有了权限,用户便可对 Spanner Omni 资源执行特定操作。例如,拥有 spanner.databases.read 权限的用户可以使用 Spanner Omni 的读取 API 从数据库读取数据,而拥有 spanner.databases.export 权限的用户可以导出 Spanner Omni 数据库。您并非直接向用户授予权限,而是向其授予预定义角色(角色本身会具有一项或多项权限)。
下表列出了与 Spanner Omni 相关的 IAM 权限。部分权限与 Spanner 共享,部分权限仅供 Spanner Omni 使用。
数据库
以下权限适用于 Spanner Omni 数据库。
| 数据库权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.databases.create |
创建数据库。 | ✔ | |
spanner.databases.createBackup |
从数据库创建备份。此外,还需要 spanner.backups.create 以创建备份资源。 |
✔ | |
spanner.databases.get |
获取数据库的元数据。 | ✔ | |
spanner.databases.getIamPolicy |
获取数据库的 IAM 政策。 | ✔ | |
spanner.databases.list |
列出数据库。 | ✔ | |
spanner.databases.read |
使用读取 API 从数据库读取数据。 | ✔ | |
spanner.databases.setIamPolicy |
设置数据库的 IAM 政策。 | ✔ | |
spanner.databases.update |
更新数据库的元数据。 | ✔ | |
spanner.databases.updateDdl |
更新数据库架构。 | ✔ | |
spanner.databases.write |
写入数据库。 | ✔ | |
spanner.databases.compact |
压缩数据库中的表 | ✔ | |
spanner.databases.export |
导出 Spanner Omni 数据库 | ✔ | |
spanner.databases.import |
导入 Spanner Omni 数据库 | ✔ | |
spanner.databases.addSplitPoints |
向数据库添加拆分点。 | ✔ |
数据库操作
以下权限适用于 Spanner Omni 数据库操作。
| 数据库操作权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.databaseOperations.cancel |
取消数据库操作。 | ✔ | |
spanner.databaseOperations.delete |
删除数据库操作。 | ✔ | |
spanner.databaseOperations.get |
获取特定的数据库操作。 | ✔ | |
spanner.databaseOperations.list |
列出数据库并恢复数据库操作。 | ✔ |
备份
以下权限适用于 Spanner Omni 备份。
| 备份权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.backups.copy |
复制备份。 | ✔ | |
spanner.backups.create |
创建备份。 此外,还需要对源数据库使用 spanner.databases.createBackup。 |
✔ | |
spanner.backups.createDatabaseFromBackup |
从备份创建数据库。 | ✔ | |
spanner.backups.delete |
删除备份。 | ✔ | |
spanner.backups.get |
获取备份。 | ✔ | |
spanner.backups.getIamPolicy |
获取备份的 IAM 政策。 | ✔ | |
spanner.backups.list |
列出备份。 | ✔ | |
spanner.backups.restoreDatabase |
使用备份恢复数据库。此外,还需要 spanner.databases.create 来创建恢复的数据库。 |
✔ | |
spanner.backups.setIamPolicy |
设置备份的 IAM 政策。 | ✔ | |
spanner.backups.update |
更新备份。 | ✔ | |
spanner.backups.import |
从外部存储空间导入备份 | ✔ |
备份操作
以下权限适用于 Spanner Omni 备份操作。
| 备份操作权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.backupOperations.cancel |
取消备份操作。 | ✔ | |
spanner.backupOperations.get |
获取特定的备份操作。 | ✔ | |
spanner.backupOperations.list |
列出备份操作。 | ✔ |
备份时间表
以下权限适用于 Spanner Omni 备份时间表。
| 备份时间表权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.backupSchedules.create |
创建备份时间表。此外,还需要对源数据库使用 spanner.databases.createBackup。 |
✔ | |
spanner.backupSchedules.delete |
删除备份时间表。 | ✔ | |
spanner.backupSchedules.get |
获取备份时间表。 | ✔ | |
spanner.backupSchedules.list |
列出备份时间表。 | ✔ | |
spanner.backupSchedules.update |
更新备份时间表。 | ✔ | |
spanner.backupSchedules.getIamPolicy |
获取备份时间表的 IAM 政策。 | ✔ | |
spanner.backupSchedules.setIamPolicy |
设置备份计划的 IAM 政策。 | ✔ |
备份描述符
以下权限适用于 Spanner Omni 备份描述符。
| 备份描述符权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.backupDescriptors.import |
从备份描述符导入备份 | ✔ | |
spanner.backupDescriptors.list |
列出备份描述符。 | ✔ |
会话
以下权限适用于 Spanner Omni 会话。
| 会话权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.sessions.create |
创建会话。 | ✔ | |
spanner.sessions.delete |
删除会话。 | ✔ | |
spanner.sessions.get |
获取会话。 | ✔ | |
spanner.sessions.list |
列出会话。 | ✔ |
地理位置和可用区
以下权限适用于 Spanner Omni 位置和可用区。
| 权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.locations.create |
创建 Spanner Omni 位置 | ✔ | |
spanner.locations.delete |
删除 Spanner Omni 位置 | ✔ | |
spanner.locations.get |
获取 Spanner Omni 位置 | ✔ | |
spanner.locations.list |
列出 Spanner Omni 位置 | ✔ | |
spanner.locationDistances.create |
创建 Spanner Omni 位置距离 | ✔ | |
spanner.locationDistances.delete |
删除 Spanner Omni 位置距离 | ✔ | |
spanner.locationDistances.get |
获取 Spanner Omni 位置距离 | ✔ | |
spanner.locationDistances.list |
列出 Spanner Omni 位置距离 | ✔ | |
spanner.locationDistances.update |
更新 Spanner Omni 位置距离 | ✔ | |
spanner.zones.create |
创建 Spanner Omni 可用区 | ✔ | |
spanner.zones.delete |
删除 Spanner Omni 可用区 | ✔ | |
spanner.zones.get |
获取 Spanner Omni 可用区 | ✔ | |
spanner.zones.list |
列出 Spanner Omni 可用区 | ✔ |
服务器
以下权限适用于 Spanner Omni 服务器。
| 服务器权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.servers.create |
创建 Spanner Omni 服务器 | ✔ | |
spanner.servers.delete |
删除 Spanner Omni 服务器 | ✔ | |
spanner.servers.get |
获取 Spanner Omni 服务器 | ✔ | |
spanner.servers.list |
列出 Spanner Omni 服务器 | ✔ |
用户和角色
以下权限适用于 Spanner Omni 用户和角色。
| 权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.users.create |
创建 Spanner Omni 用户 | ✔ | |
spanner.users.delete |
删除 Spanner Omni 用户 | ✔ | |
spanner.users.get |
获取 Spanner Omni 用户 | ✔ | |
spanner.users.list |
列出 Spanner Omni 用户 | ✔ | |
spanner.users.update |
更新 Spanner Omni 用户 | ✔ | |
spanner.roles.get |
获取 Spanner Omni 角色 | ✔ | |
spanner.roles.list |
列出 Spanner Omni 角色 | ✔ |
外部存储
以下权限适用于 Spanner Omni 外部存储空间。
| 外部存储权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.externalStorages.create |
创建外部存储空间 | ✔ | |
spanner.externalStorages.delete |
删除外部存储空间 | ✔ | |
spanner.externalStorages.get |
获取外部存储空间 | ✔ | |
spanner.externalStorages.getIamPolicy |
获取外部存储空间的 IAM 政策 | ✔ | |
spanner.externalStorages.list |
列出外部存储空间 | ✔ | |
spanner.externalStorages.setIamPolicy |
设置外部存储空间的 IAM 政策 | ✔ |
文件系统和描述符
以下权限适用于 Spanner Omni 文件系统。
| 权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.filesystem.cat |
打印 Spanner Omni 文件系统中的文件 | ✔ | |
spanner.filesystem.ls |
列出 Spanner Omni 文件系统中的文件 | ✔ | |
spanner.descriptors.print |
输出 Spanner Omni 文件系统中的描述符 | ✔ |
其他管理员权限
以下权限适用于其他 Spanner Omni 管理员任务。
| 权限名称 | 说明 | Spanner 和 Spanner Omni | 仅限 Spanner Omni |
|---|---|---|---|
spanner.chubby.list |
列出 Chubby 单元 | ✔ | |
spanner.chubby.print |
输出 Chubby 单元格内容 | ✔ | |
spanner.deployment.get |
获取 Spanner Omni 部署 | ✔ | |
spanner.diagnostics.create |
从 Spanner Omni 服务器收集制品以进行调试 | ✔ | |
spanner.internal-tables.sql |
针对内部表运行 SQL 查询 | ✔ | |
spanner.logs.copy |
从 Spanner Omni 服务器复制日志 | ✔ | |
spanner.tablet.move |
将片从一个 Spanner Omni 服务器移动到另一个服务器 | ✔ | |
spanner.workflows.delete |
删除数据库中的工作流 | ✔ | |
spanner.groups.compact |
压缩分组中的平板电脑 | ✔ | |
spanner.directories.compact |
压缩目录中的平板电脑 | ✔ |
预定义角色
预定义角色是一个或多个权限的集合。Spanner Omni 支持以下预定义角色:
| 角色 | 说明 |
|---|---|
roles/spanner.admin |
对所有 Spanner Omni 资源拥有完整访问权限。包含所有权限。 |
roles/spanner.backupAdmin |
对 Spanner Omni 备份和备份操作拥有完整访问权限。 |
roles/spanner.backupWriter |
可以创建备份,但无法更新或删除备份。 |
roles/spanner.databaseAdmin |
对项目中的所有 Spanner Omni 数据库拥有完整访问权限。 |
roles/spanner.databaseReader |
可以从 Spanner Omni 数据库读取数据并查看架构。 |
roles/spanner.databaseUser |
可以读取和写入 Spanner Omni 数据库。 |
roles/spanner.editor |
Spanner Omni 的编辑者角色。 |
roles/spanner.restoreAdmin |
可以从备份中恢复数据库。 |
roles/spanner.viewer |
可以查看所有 Spanner Omni 资源,但无法修改这些资源。 包括只读权限。 |
Spanner Omni 还有一些值得注意的限制:
- 没有自定义角色。
- 没有精细的访问权限控制。
- 无 IAM 条件。
后续步骤
- 详细了解 IAM。
- 了解 Spanner Omni 中的身份验证和授权。