访问权限控制和权限

本页面介绍了如何使用 Identity and Access Management (IAM) 控制 Memorystore for Redis 项目访问和权限。

概览

Google Cloud 提供 IAM,可让您分配对特定 Google Cloud 资源的精细访问权限,并防止对其他资源进行不必要的访问。本页介绍了 Memorystore for Redis IAM 角色和权限。如需详细了解角色和权限,请参阅 IAM 文档

Memorystore for Redis 提供了一组预定义角色,旨在帮您轻松控制对 Redis 资源的访问权限。如果预定义的角色未提供您所需的权限集,您还可以创建自己的自定义角色。此外,旧版基本角色(Editor、Viewer、Owner)仍可供您使用,但这些角色提供的控制不如 Memorystore for Redis 角色那样精细。具体而言,基本角色提供的是对整个 Google Cloud 资源的访问权限,而不仅仅是对 Memorystore for Redis 的访问权限。如需详细了解基本角色,请参阅基本角色

权限和角色

本部分汇总了 Memorystore for Redis 支持的权限和角色。

预定义角色

Memorystore for Redis 提供了一些预定义角色,可供您用来为项目成员授予更精细的权限。您授予项目成员的角色决定了该成员可以执行的操作。项目成员可以是个人、群组或服务帐号

您可以向同一项目成员授予多个角色;如果您具有相应权限,您还可随时更改授予项目成员的角色。

权限范围较广的角色拥有权限范围较窄的角色的所有权限。例如,Redis 编辑者角色包含 Redis 查看者角色的所有权限,并还包含 Redis 编辑者角色的特有权限。同样地,Redis 管理员角色包括 Redis 编辑者角色的所有权限,并具备更多权限。

基本角色(Owner、Editor、Viewer)提供对整个 Google Cloud 的权限。Memorystore for Redis 专有角色仅提供 Memorystore for Redis 权限,但以下 Google Cloud 权限除外,因为这些是 Google Cloud 常规使用所需的权限:

resourcemanager.projects.get
resourcemanager.projects.list

下表列出了适用于 Memorystore for Redis 的预定义角色及其所含 Memorystore for Redis 权限:

角色 名称 Redis 权限 说明

roles/owner

Owner

redis.*

对所有 Google Cloud 资源拥有完整访问权限和控制权;可以管理用户访问权限

roles/editor

Editor 除以下权限以外的所有 redis 权限: *.getIamPolicy.setIamPolicy 对所有 Google Cloud 和 Redis 资源拥有读写权限(拥有完全控制权,但不能修改权限)

roles/viewer

Viewer

redis.*.get redis.*.list

对所有 Google Cloud 资源(包括 Redis 资源)拥有只读权限

roles/redis.admin

Redis Admin

redis.*

对所有 Memorystore for Redis 资源拥有完全控制权。

roles/redis.editor

Redis Editor 除以下权限以外的所有 redis 权限

redis.instances.create redis.instances.delete redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

可以管理 Memorystore for Redis 实例,无法创建或删除实例。

roles/redis.viewer

Redis Viewer 除以下权限以外的所有 redis 权限

redis.instances.create redis.instances.delete redis.instances.update redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

拥有对所有 Memorystore for Redis 资源的只读权限。

权限及其对应的角色

下表列出了 Memorystore for Redis 支持的每个权限以及包含权限的 Memorystore for Redis 角色:

权限 Redis 角色 基本角色

redis.instances.list

Redis Admin
Redis Editor
Redis Viewer
Reader

redis.instances.get

Redis Admin
Redis Editor
Redis Viewer
Reader

redis.instances.create

Redis 管理员 Writer

redis.instances.update

Redis Admin
Redis Editor
Writer

redis.instances.updateAuth

Redis 管理员 写入者

redis.instances.getAuthString

Redis 管理员 写入者

redis.instances.delete

Redis 管理员 Writer

redis.instances.upgrade

Redis Admin Writer

redis.instances.import

Redis Admin Writer

redis.instances.export

Redis Admin Writer

redis.locations.list

Redis Admin
Redis Editor
Redis Viewer
Reader

redis.locations.get

Redis Admin
Redis Editor
Redis Viewer
Reader

redis.operations.list

Redis Admin
Redis Editor
Redis Viewer
Reader

redis.operations.get

Redis Admin
Redis Editor
Redis Viewer
Reader

redis.operations.delete

Redis 管理员 Writer

自定义角色

如果预定义角色不能满足您的独特业务需求,您可以使用指定的权限定义自己的自定义角色。为此,IAM 提供了自定义角色。在为 Memorystore for Redis 创建自定义角色时,请务必同时包含 resourcemanager.projects.getresourcemanager.projects.list。否则,Google Cloud Console 将无法正常处理 Memorystore for Redis。如需了解详情,请参阅权限依赖项。 如需了解如何创建自定义角色,请参阅创建自定义角色

Cloud Console 中常见任务所需的权限

为了让用户能够通过 Cloud Console 使用 Memorystore for Redis,用户的角色必须包含 resourcemanager.projects.getresourcemanager.projects.list 权限。

下表提供了 Cloud Console 中的一些常见任务所需的其他权限:

任务 其他必需权限
显示实例列表页面

redis.instances.get
redis.instances.list

创建和修改实例

redis.instances.create
redis.instances.get
redis.instances.list
compute.networks.list

删除实例

redis.instances.delete
redis.instances.get
redis.instances.list

使用 Cloud Shell 连接到实例

redis.instances.get
redis.instances.list
redis.instances.update

查看实例信息

redis.instances.get
monitoring.timeSeries.list

导入和导出 RDB 备份文件

redis.instances.import
redis.instances.export

升级实例的 Redis 版本

redis.instances.upgrade

gcloud 命令所需的权限

为了让用户能够通过 gcloud 命令使用 Memorystore for Redis,用户的角色必须包含 resourcemanager.projects.getresourcemanager.projects.list 权限。

下表列出了调用 gcloud 命令的用户必须对各个 gcloud redis 子命令拥有的权限:

命令 所需权限
gcloud redis instances auth

redis.instances.updateAuth
redis.instances.getAuthString

gcloud redis instances create

redis.instances.get
redis.instances.create

gcloud redis instances delete

redis.instances.delete

gcloud redis instances update

redis.instances.get
redis.instances.update

gcloud redis instances list

redis.instances.list

gcloud redis instances describe

redis.instances.get

gcloud redis instances import

redis.instances.import

gcloud redis instances export

redis.instances.export

gcloud redis instances upgrade

redis.instances.upgrade

gcloud redis operations list

redis.operations.list

gcloud redis operations describe

redis.operations.get

gcloud redis regions list

redis.locations.list

gcloud redis regions describe

redis.locations.get

gcloud redis zones list

redis.locations.list

API 方法所需的权限

下表列出了调用者在调用 Memorystore for Redis API 中的每种方法或通过使用该 API 的 Google Cloud 工具(例如 Cloud Console 或 gcloud 命令行工具)执行任务时必须具备的权限:

方法 所需权限

locations.get

redis.locations.get

locations.list

redis.locations.list

instances.create

redis.instances.create

instances.delete

redis.instances.delete

instances.get

redis.instances.get

instances.list

redis.instances.list

instances.patch

redis.instances.update

instances.import

redis.instances.import

instances.export

redis.instances.export

instances.upgrade

redis.instances.upgrade

operations.get

redis.operations.get

operations.list

redis.operations.list

Redis AUTH 权限

下表显示了用户完成一些基本的 Memorystore for Redis AUTH 任务所需的最低权限。

所需权限 创建启用 Redis AUTH 的 Memorystore 实例 在现有 Redis 实例上启用/停用 AUTH 查看 AUTH 字符串 查看是否为 Redis 实例启用/停用了 AUTH
redis.instances.update X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.updateAuth X X
redis.instances.getAuthString X X X

传输加密权限

下表显示了为 Memorystore for Redis 启用和管理传输加密所需的权限。

所需权限 创建使用传输加密的 Memorystore 实例 下载证书授权机构
redis.instances.create X
redis.instances.get X

维护政策权限

下表显示了管理 Memorystore for Redis 的维护政策所需的权限。

所需权限 创建启用了维护政策的 Memorystore 实例 在现有 Memorystore 实例上创建或修改维护政策 查看维护政策设置 重新安排维护
redis.instances.create X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.rescheduleMaintenance X X X

导入和导出权限

使用自定义角色进行导入和导出需要两个单独的自定义角色。一个用户自定义角色,以及一个 Redis 实例服务帐号的其他自定义角色。服务帐号的自定义角色使用 Cloud Storage 存储分区级权限。

服务帐号所需的权限

请注意,您只需在存储分区级层(而不是整个项目范围内)授予服务帐号的存储权限。如需查看说明,请参阅将成员添加到存储分区级层政策中

为您的服务帐号授予存储分区层级权限后,您可以忽略如下消息:“Memorystore 无法验证服务帐号 xxxxxxxxxxxx-compute@developer.gserviceaccount.com 是否具有导入/导出所需的权限。如需有关验证或更新权限的帮助,请与项目管理员联系。如需了解所需的权限,请参阅导入/导出权限文档。”如果您将下面列出的权限应用于用户帐号和服务帐号的自定义角色,则导入/导出将成功。

服务帐户的自定义角色的权限 使用 gcloud 导入 使用 gcloud 导出 使用 Cloud Console 导入 使用 Cloud Console 导出
storage.buckets.get
storage.objects.get X X
storage.objects.create X X
storage.objects.delete X 可选。
(授予覆盖现有 RDB 文件的权限)。
X 可选。
(授予覆盖现有 RDB 文件的权限)。

用户帐号所需的权限

用户帐号的自定义角色的权限 使用 gcloud 导入 使用 gcloud 导出 使用 Cloud Console 导入 使用 Cloud Console 导出
resourcemanager.projects.get X X
redis.instances.get
redis.instances.list X X X X
redis.instances.import X X
redis.instances.export X X
redis.operations.get X X
redis.operations.list X X
redis.operations.cancel
storage.buckets.list X X
storage.buckets.get X X
storage.objects.list X X
storage.objects.get X X

下表显示了为 Memorystore for Redis 启用和管理传输加密所需的权限。

后续步骤