使用 IAM 控制访问权限

本文档介绍了您可以在 Secret Manager 中使用的访问权限控制选项。

分配 IAM 角色

Secret Manager 使用 Identity and Access Management (IAM) 进行访问权限控制。如需创建、管理、列出或访问 Secret,必须在项目级和单个资源级授予相应的 IAM 权限。您可以授予一个或多个预定义角色,也可以创建和授予自定义角色。无法针对 Secret 版本授予 IAM 角色。

如需添加角色:

  1. 转到 Google Cloud 控制台中的 IAM 页面。

    转到 IAM

  2. 点击页面顶部的项目选择器列表。

  3. 在随即显示的请选择:对话框中,选择要为其启用 Secret Manager 的组织。

  4. IAM 页面,点击用户名旁边的修改

  5. 在显示的修改权限面板中,添加必要的角色。

    1. 点击添加其他角色。选择要添加的角色,例如 Secret Manager Secret Accessor

    2. 要添加更多角色,请重复上述步骤。点击保存

Identity and Access Management (IAM) 角色决定了使用 Secret Manager API 的方式。下表列出了适用于 Secret Manager 的每个 IAM 角色以及授予该角色的权限。

Role Permissions

(roles/secretmanager.admin)

Full access to administer Secret Manager resources.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.*

  • secretmanager.locations.get
  • secretmanager.locations.list
  • secretmanager.secrets.create
  • secretmanager.secrets.createTagBinding
  • secretmanager.secrets.delete
  • secretmanager.secrets.deleteTagBinding
  • secretmanager.secrets.get
  • secretmanager.secrets.getIamPolicy
  • secretmanager.secrets.list
  • secretmanager.secrets.listEffectiveTags
  • secretmanager.secrets.listTagBindings
  • secretmanager.secrets.setIamPolicy
  • secretmanager.secrets.update
  • secretmanager.versions.access
  • secretmanager.versions.add
  • secretmanager.versions.destroy
  • secretmanager.versions.disable
  • secretmanager.versions.enable
  • secretmanager.versions.get
  • secretmanager.versions.list

(roles/secretmanager.secretAccessor)

Allows accessing the payload of secrets.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.versions.access

(roles/secretmanager.secretVersionAdder)

Allows adding versions to existing secrets.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.versions.add

(roles/secretmanager.secretVersionManager)

Allows creating and managing versions of existing secrets.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.versions.add

secretmanager.versions.destroy

secretmanager.versions.disable

secretmanager.versions.enable

secretmanager.versions.get

secretmanager.versions.list

(roles/secretmanager.viewer)

Allows viewing metadata of all Secret Manager resources

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.locations.*

  • secretmanager.locations.get
  • secretmanager.locations.list

secretmanager.secrets.get

secretmanager.secrets.getIamPolicy

secretmanager.secrets.list

secretmanager.secrets.listEffectiveTags

secretmanager.secrets.listTagBindings

secretmanager.versions.get

secretmanager.versions.list

最小权限原则

当您遵循最小权限原则时,您将为执行特定任务所需的资源授予最低级别的访问权限。例如,如果主账号需要访问单个密文,请勿向该主账号授予对项目或组织中其他密文或所有密文的访问权限。如果主账号只需要读取密文,请勿向该主账号授予修改密文的权限。

您可以使用 IAM 在 Google Cloud 密文、项目、文件夹或组织级别授予 IAM 角色和权限。始终在资源层次结构中应用最低级别的权限。

下表根据授予了 Secret Manager Secret Accessor 角色 (roles/secretmanager.secretAccessor) 的资源层次结构级别显示了服务帐号的有效功能。

资源层次结构 能力
密文 仅访问该密文
项目 访问项目中的所有密文
文件夹 访问文件夹中所有项目中的所有密文
组织 访问组织的所有项目中的所有密文

如果主账号只需要访问单个密文的值,请勿向该主账号授予访问所有密文的权限。例如,您可以为服务账号授予单个 Secret Manager Secret Accessor 角色 (roles/secretmanager.secretAccessor)。

如果主账号只需要管理单个密文,请勿向该主账号授予管理所有密文的权限。例如,您可以向服务帐号授予针对单个 Secret 的 Secret Manager Admin 角色 (roles/secretmanager.admin)。

IAM Conditions

IAM Conditions 允许您为某些 Google Cloud 资源(包括 Secret Manager 资源)定义和强制执行基于属性的条件访问权限控制。

在 Secret Manager 中,您可以根据以下属性强制执行条件访问权限:

  • 日期/时间属性:用于设置 Secret Manager 资源的可过期、定期或限制时长的访问权限。例如,您可以允许用户访问某个密文,直到指定日期为止。
  • 资源属性:用于根据资源名称、资源类型或资源服务属性配置条件访问权限。在 Secret Manager 中,您可以使用密文和密文版本的属性来配置条件访问权限。例如,您可以允许用户仅管理以特定前缀开头的密文,或仅允许访问特定密文版本。

如需详细了解 IAM 条件,请参阅条件概览

后续步骤