本页面介绍如何创建和管理 Identity and Access Management (IAM) 自定义角色。管理角色的操作包括修改、停用、列出、删除和取消删除角色。
准备工作
Enable the IAM API.
设置身份验证。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
C++
如需在本地开发环境中使用本页面上的 C++ 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
C#
如需在本地开发环境中使用本页面上的 .NET 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Go
如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
了解 Google Cloud 资源层次结构。
阅读了解 IAM 自定义角色。
所需的角色
如需获得创建和管理自定义角色所需的权限,请让管理员向您授予以下 IAM 角色:
-
要管理其角色的项目的 Role Administrator (
roles/iam.roleAdmin
)(如需管理项目的角色) -
要管理其角色的组织的 Organization Role Administrator (
roles/iam.organizationRoleAdmin
)(如需管理组织的角色)
如需详细了解如何授予角色,请参阅管理访问权限。
查看项目、文件夹和组织的可用权限
您可以为整个组织或该组织中的特定项目创建自定义角色。自定义角色可用的权限取决于您创建该角色的位置。例如,如果有某项权限只能在组织级层使用,那么您便无法在项目级层自定义角色中添加该权限。
如需检查组织级层和项目级自定义角色可以使用哪些权限,您可以使用 gcloud CLI 或 Identity and Access Management API,列出特定组织或项目中可用的权限。例如,您可以获取可用于在项目中创建的自定义角色的所有权限。
某些权限可能对您不可见或不可用于自定义角色,即使这些权限在自定义角色中受支持也是如此。例如,如果您尚未为服务启用 API,则可能无法在自定义角色中使用某项权限。
如需详细了解可以添加到自定义角色的权限,请参阅支持的权限。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam list-testable-permissions
命令获取特定项目或组织中自定义角色可用的权限列表。响应会列出您可以在该项目或组织的自定义角色中使用的权限。要列出项目或组织的自定义角色中可用的权限,请运行此命令:
gcloud iam list-testable-permissions FULL_RESOURCE_NAME \ --filter="customRolesSupportLevel!=NOT_SUPPORTED"
将
FULL_RESOURCE_NAME
替换为以下某个值:-
项目:
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID
(例如//cloudresourcemanager.googleapis.com/projects/my-project
) -
组织:
//cloudresourcemanager.googleapis.com/organizations/NUMERIC_ID
(例如//cloudresourcemanager.googleapis.com/organizations/123456789012
)
结果会指明自定义角色是否支持每个权限。 没有
customRolesSupportLevel
字段的权限完全受支持。list-testable-permissions
命令可能会返回数百个结果。以下部分示例显示了每个结果的格式:--- name: appengine.applications.create stage: GA --- customRolesSupportLevel: TESTING name: appengine.applications.disable stage: GA --- name: appengine.applications.get stage: GA --- name: appengine.applications.update stage: GA --- name: appengine.instances.delete stage: GA --- name: appengine.instances.get stage: GA ---
-
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
REST
permissions.queryTestablePermissions
方法可列出组织或项目可用的权限。在使用任何请求数据之前,请先进行以下替换:
FULL_RESOURCE_NAME
:由服务名称和资源路径组成的 URI。如需查看示例,请参阅完整资源名称。PAGE_SIZE
:可选。要包含在响应中的权限的数量。默认值为 100,最大值为 1000。如果权限数大于页面大小,则响应中会包含分页令牌,您可以使用该令牌检索下一页结果。NEXT_PAGE_TOKEN
:可选。此方法之前的响应中返回的分页令牌。如果已指定,则可测试权限列表将从上一个响应结束的位置开始。
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/permissions:queryTestablePermissions
请求 JSON 正文:
{ "fullResourceName": "FULL_RESOURCE_NAME" "pageSize": PAGE_SIZE, "pageToken": "NEXT_PAGE_TOKEN" }
如需发送您的请求,请展开以下选项之一:
响应包含权限列表。
{ "permissions": [ { "name": "iam.serviceAccountKeys.create", "stage": "GA" }, { "name": "iam.serviceAccountKeys.delete", "stage": "GA" }, { "name": "iam.serviceAccountKeys.get", "stage": "GA" } ], "nextPageToken": "CgoHBajEfjUDQyABEPaIv5vIiMDTVhgDIhtpYW0uc2VydmljZUFjY291bnRLZXlzLmxpc3Q" }
获取角色元数据
在创建自定义角色之前,您应先获取预定义角色和自定义角色的元数据。角色元数据包括角色 ID 和角色所含的权限。您可以使用 Google Cloud 控制台或 IAM API 查看元数据。
要查看角色元数据,请使用以下方法之一:
控制台
在 Google Cloud 控制台中,转到角色页面。
从页面顶部的下拉列表中选择您的组织或项目。
选中一个或多个角色对应的复选框以查看角色权限。 右侧面板会显示相应角色中所含的权限(如有)。
类型列中的图标表明这是自定义角色
还是预定义角色如果您想要查找包含特定权限的所有角色,请在“角色”列表顶部的过滤条件框中输入权限名称。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam roles describe
命令查看预定义角色和自定义角色的元数据。要查看预定义角色的元数据,请执行以下命令:
gcloud iam roles describe ROLE_ID
ROLE_ID
是角色的 ID。预定义角色的 ID 中包含role
前缀,例如roles/iam.roleViewer
。以下示例演示了针对预定义角色
roles/iam.roleViewer
执行describe
命令时的输出结果:gcloud iam roles describe roles/iam.roleViewer
description: Read access to all custom roles in the project. etag: AA== includedPermissions: - iam.roles.get - iam.roles.list - resourcemanager.projects.get - resourcemanager.projects.getIamPolicy name: roles/iam.roleViewer stage: GA title: Role Viewer
要查看自定义角色的元数据,请执行以下命令之一:
-
要查看在组织级层创建的自定义角色的元数据,请执行以下命令:
gcloud iam roles describe --organization=ORGANIZATION_ID ROLE_ID
-
要查看在项目级层创建的自定义角色的元数据,请执行以下命令:
gcloud iam roles describe --project=PROJECT_ID ROLE_ID
每个占位值的说明如下:
-
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。 -
ROLE_ID
是角色的 ID,不包括projects/
、organizations/
或roles/
等任何前缀。例如myCompanyAdmin
。
如需了解详情,请参阅
gcloud iam roles describe
的参考文档。 -
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
REST
roles.get
方法可获取角色的定义。在使用任何请求数据之前,请先进行以下替换:
ROLE_NAME
:完整的角色名称,包括任何organizations/
、projects/
或roles/
前缀。例如organizations/123456789012/roles/myCompanyAdmin
。
HTTP 方法和网址:
GET https://iam.googleapis.com/v1/ROLE_NAME
如需发送您的请求,请展开以下选项之一:
响应中包含角色定义。
{ "name": "projects/my-project/roles/customRole", "title": "My Custom Role", "description": "My custom role description.", "includedPermissions": [ "storage.buckets.get", "storage.buckets.list" ], "etag": "BwWiPg2fmDE=" }
创建自定义角色
您可以在项目或组织级层创建自定义角色。
组织级层自定义角色可以包含自定义角色支持的任何 IAM 权限。项目级层自定义角色可以包含任何受支持的权限,但只能在组织或文件夹级层使用的权限除外,例如
resourcemanager.organizations.get
。如果您尝试将这类权限添加到项目级层自定义角色,则会收到错误消息:控制台
系统会显示以下警告消息:“不适用于项目级层自定义角色”。系统会从已包含权限列表中自动取消选择该权限,您可以继续创建此角色。
gcloud
系统会返回以下错误消息:
INVALID_ARGUMENT: Permission PERMISSION is not valid
。除非您先从角色定义中移除该权限并重试此操作,否则系统将不会创建该自定义角色。REST API
系统会返回以下错误消息:
Permission PERMISSION is not valid
,以及 HTTP 400 错误代码和INVALID_ARGUMENT
状态。除非您先从角色定义中移除该权限并重试此操作,否则系统将不会创建该自定义角色。每个自定义角色最多可以包含 3000 个权限。此外,自定义角色的名称、描述和权限名称的总大小不得超过 64 KB。如果您需要创建更大的自定义角色,可以将权限拆分给多个自定义角色。请选择可显示自定义角色之间关系的角色名称,例如
Custom Admin (1 of 2)
和Custom Admin (2 of 2)
。每个自定义角色都可以具有发布阶段。大部分发布阶段都是参考信息,可帮助您跟踪每个角色是否已准备好投入广泛使用。此外,您还可以借助
DISABLED
发布阶段停用自定义角色。如需详细了解发布阶段,请参阅测试和部署。控制台
一些预定义角色包含已弃用的权限或不允许在自定义角色中使用的权限。如果您尝试基于其中一个预定义角色创建自定义角色,则自定义角色将忽略已弃用的权限和受限的权限。
要从头开始创建新自定义角色,请执行以下操作:
在 Google Cloud 控制台中,转到角色页面。
在页面顶部的下拉列表中,选择要在哪个组织或项目中创建角色。
点击创建角色。
输入角色的名称、标题、说明和角色发布阶段。角色创建后,角色名称便无法更改。
点击添加权限。
选择要包含在角色中的权限,然后点击添加权限。可使用所有服务和所有类型下拉列表,按服务和类型过滤权限并选择权限。
基于现有预定义角色创建自定义角色:
- 在 Google Cloud 控制台中,转到角色页面。
- 选择要在哪个组织或项目中创建角色。
- 选择创建新自定义角色时要依据的基准角色。
- 点击基于所选角色创建角色。
- 输入角色的名称、标题、说明和角色发布阶段。角色创建后,角色名称便无法更改。
- 取消选中要从角色中排除的权限。
- 点击添加权限以包含任何权限。
- 点击创建。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam roles create
命令创建新的自定义角色。您可以通过以下两种方式使用此命令:-
提供包含角色定义的 YAML 文件
-
使用标志指定角色定义
创建自定义角色时,您必须使用
--organization=ORGANIZATION_ID
或--project=PROJECT_ID
标志指定该角色是应用于组织级层还是项目级层。 以下各示例都是在项目级层创建自定义角色。自定义角色只能具有自定义角色支持的权限。如果自定义角色具有其他权限,则该命令将失败。
要使用 YAML 文件创建自定义角色,请执行以下操作:
创建一个包含您自定义角色定义的 YAML 文件。该文件必须采用以下结构:
title: ROLE_TITLE description: ROLE_DESCRIPTION stage: LAUNCH_STAGE includedPermissions: - PERMISSION_1 - PERMISSION_2
每个占位值的说明如下:
-
ROLE_TITLE
是角色的易记标题,例如"My Company Admin"
。 -
ROLE_DESCRIPTION
是角色的简短说明,例如"My custom role description"
。 -
LAUNCH_STAGE
表示角色在发布生命周期中所处的阶段,例如ALPHA
、BETA
或GA
。 -
PERMISSION_1
和PERMISSION_2
是要包含在自定义角色中的权限,例如iam.roles.get
。 您不能在权限名称中使用通配符 (*
)。
保存 YAML 文件,然后执行以下命令之一:
-
要在组织级层创建自定义角色,请执行以下命令:
gcloud iam roles create ROLE_ID--organization=ORGANIZATION_ID \ --file=YAML_FILE_PATH
-
要在项目级层创建自定义角色,请执行以下命令:
gcloud iam roles create ROLE_ID --project=PROJECT_ID \ --file=YAML_FILE_PATH
每个占位值的说明如下:
-
ROLE_ID
是角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。 -
YAML_FILE_PATH
是包含自定义角色定义的 YAML 文件的位置路径。
示例
以下示例 YAML 文件演示了如何创建角色定义:
title: "My Company Admin" description: "My custom role description." stage: "ALPHA" includedPermissions: - iam.roles.get - iam.roles.list
以下示例演示了如何使用 YAML 文件在组织级层创建角色:
gcloud iam roles create myCompanyAdmin --organization=123456789012 \ --file=my-role-definition.yaml
如果成功创建了角色,则该命令的输出类似于以下内容:
Created role [myCompanyAdmin]. description: My custom role description. etag: BwVkBX0sQD0= includedPermissions: - iam.roles.get - iam.roles.list name: organizations/123456789012/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
以下示例演示了如何使用 YAML 文件在项目级层创建角色:
gcloud iam roles create myCompanyAdmin --project=my-project \ --file=my-role-definition.yaml
如果成功创建了角色,则该命令的输出类似于以下内容:
Created role [myCompanyAdmin]. description: My custom role description. etag: BwVkBX0sQD0= includedPermissions: - iam.roles.get - iam.roles.list name: projects/my-project/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
如需使用标志创建自定义角色,请执行以下操作:
执行以下命令之一:
-
要在组织级层创建自定义角色,请执行以下命令:
gcloud iam roles create ROLE_ID--organization=ORGANIZATION_ID \ --title=ROLE_TITLE --description=ROLE_DESCRIPTION \ --permissions="PERMISSIONS_LIST" --stage=LAUNCH_STAGE
-
要在项目级层创建自定义角色,请执行以下命令:
gcloud iam roles create ROLE_ID --project=PROJECT_ID \ --title=ROLE_TITLE --description=ROLE_DESCRIPTION \ --permissions="PERMISSIONS_LIST" --stage=LAUNCH_STAGE
每个占位值的说明如下:
-
ROLE_ID
是角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。 -
ROLE_TITLE
是角色的易记标题,例如"My Company Admin"
。 -
ROLE_DESCRIPTION
是角色的简短说明,例如"My custom role description."
。 -
PERMISSIONS_LIST
包含要纳入自定义角色的权限的英文逗号分隔列表。例如:iam.roles.get,iam.roles.list
。您不能在权限名称中使用通配符 (*
)。 -
LAUNCH_STAGE
表示角色在发布生命周期中所处的阶段,例如ALPHA
、BETA
或GA
。
示例
以下示例演示了如何使用标志在组织级层创建角色:
gcloud iam roles create myCompanyAdmin --organization=123456789012 \ --title="My Company Admin" --description="My custom role description." \ --permissions="iam.roles.get,iam.roles.list" --stage=ALPHA
如果成功创建了角色,则该命令的输出类似于以下内容:
Created role [myCompanyAdmin]. description: My custom role description. etag: BwVkBX0sQD0= includedPermissions: - iam.roles.get - iam.roles.list name: organizations/123456789012/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
以下示例演示了如何使用标志在项目级层创建角色:
gcloud iam roles create myCompanyAdmin --project=my-project \ --title="My Company Admin" --description="My custom role description." \ --permissions="iam.roles.get,iam.roles.list" --stage=ALPHA
如果成功创建了角色,则该命令的输出类似于以下内容:
Created role [myCompanyAdmin]. description: My custom role description. etag: BwVkBX0sQD0= includedPermissions: - iam.roles.get - iam.roles.list name: projects/my-project/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
-
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
REST
roles.create
方法可在项目或组织中创建自定义角色。在使用任何请求数据之前,请先进行以下替换:
RESOURCE_TYPE
:您要管理其自定义角色的资源类型。使用值projects
或organizations
。RESOURCE_ID
:您要管理其自定义角色的项目 ID 或组织 ID。项目 ID 是字母数字字符串,例如my-project
。组织 ID 是数字,例如123456789012
。ROLE_ID
:角色的名称,例如myCompanyAdmin
。ROLE_TITLE
:角色的直观易懂的标题。例如My Company Admin
。ROLE_DESCRIPTION
:角色的说明。例如"The company admin role allows company admins to access important resources"
。-
PERMISSION_1
和PERMISSION_2
:您要在角色中包含的权限。例如storage.objects.update
。您不能在权限名称中使用通配符 (*
)。自定义角色只能具有自定义角色支持的权限。如果自定义角色具有其他权限,则请求将失败。
LAUNCH_STAGE
:角色的当前发布阶段。此字段可以包含以下值之一:EAP
、ALPHA
、BETA
、GA
、DEPRECATED
或DISABLED
。
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles
请求 JSON 正文:
{ "roleId": "ROLE_ID", "role": { "title": "ROLE_TITLE", "description": "ROLE_DESCRIPTION", "includedPermissions": [ "PERMISSION_1", "PERMISSION_2" ], "stage": "LAUNCH_STAGE" } }
如需发送您的请求,请展开以下选项之一:
响应中包含您创建的角色。
{ "name": "projects/myProject/roles/myCompanyAdmin", "title": "My Company Admin", "description": "My custom role description.", "includedPermissions": [ "iam.roles.get", "iam.roles.list" ], "etag": "BwWox/JbaZw=" }
修改现有自定义角色
通常,我们按照以下模式更新资源的元数据(如自定义角色):读取-修改-写入模式。使用此模式时,您可以读取角色的当前状态,在本地更新数据,然后发送修改后的数据以进行写入。
如果有两个或两个以上的独立过程同时尝试执行该序列,则读取-修改-写入模式可能会导致冲突。例如,当项目有两位所有者同时尝试对某一角色进行有冲突的更改时,部分更改可能会失败。IAM 可利用自定义角色的
etag
属性解决此问题。该属性用于验证自上次请求以来自定义角色是否发生了更改。当您使用 ETag 值向 IAM 发出请求时,IAM 会将请求中的 ETag 值与自定义角色所关联的现有 ETag 值进行比较。只有在两个 ETag 值一致的情况下,它才会写入相应更改。要更新某一角色,请先使用
roles.get()
获取角色,再更新角色,然后使用roles.patch()
写入更新后的角色。只有roles.get()
中的相应角色包含 etag 值,才能在设置角色时使用 etag 值。控制台
在 Google Cloud 控制台中,转到角色页面。
在页面顶部的下拉列表中,选择包含您要修改的角色的项目或组织。
点击自定义角色。
点击修改角色。
如需更新角色的元数据,请修改角色的标题、说明或角色发布阶段。
如需更新角色的权限,请执行以下操作:
- 点击添加权限以为角色添加新权限。
- 取消选中权限以从角色中移除相应权限。
点击更新以保存修改后的角色。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam roles update
命令更新自定义角色。 您可以通过以下两种方式使用此命令:-
提供包含已更新角色定义的 YAML 文件
-
使用标志指定更新的角色定义
更新自定义角色时,必须使用
--organization=ORGANIZATION_ID
或--project=PROJECT_ID
标志指定该角色是应用于组织级层还是项目级层。以下各示例都是在项目级层创建自定义角色。要使用 YAML 文件更新自定义角色,请执行以下操作:
通过执行以下命令之一获取角色的当前定义:
-
要获取组织级层自定义角色的定义,请执行以下命令:
gcloud iam roles describe ROLE_ID --organization=ORGANIZATION_ID
-
要获取项目级层自定义角色的定义,请执行以下命令:
gcloud iam roles describe ROLE_ID --project=PROJECT_ID
每个占位值的说明如下:
-
ROLE_ID
是要更新的角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。
describe
命令返回角色的定义并包含用于唯一标识当前角色版本的etag
值。您应在更新的角色定义中提供etag
值,以确保任何并发的角色更改都不会被覆盖。describe
命令返回以下输出:description: ROLE_DESCRIPTION etag: ETAG includedPermissions: - PERMISSION_1 - PERMISSION_2 name: ROLE_NAME stage: LAUNCH_STAGE title: ROLE_TITLE
每个占位值的说明如下:
-
ROLE_DESCRIPTION
是角色的简短说明,例如"My custom role description"
。 -
ETAG
是当前角色版本的唯一标识符,例如BwVkBkbfr70=
。 -
PERMISSION_1
和PERMISSION_2
是要包含在自定义角色中的权限,例如iam.roles.get
。 您不能在权限名称中使用通配符 (*
)。 -
ROLE_NAME
是完整的角色名称,包括任何organizations/
、projects/
或roles/
前缀。例如:organizations/123456789012/roles/myCompanyAdmin.
-
LAUNCH_STAGE
表示角色在发布生命周期中所处的阶段,例如ALPHA
、BETA
或GA
。 -
ROLE_TITLE
是角色的易记标题,例如"My Company Admin"
。
要更新角色,请将输出的角色定义加入 YAML 文件中,或使用输出的
etag
值更新原始 YAML 文件。请考虑以下示例 YAML 文件,该文件包含针对项目级层角色运行的
describe
命令的输出并添加了两项 Cloud Storage 权限:description: My custom role description. etag: BwVkBkbfr70= includedPermissions: - iam.roles.get - iam.roles.list - storage.buckets.get - storage.buckets.list name: projects/my-project/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
保存 YAML 文件,然后执行以下命令之一:
-
要更新组织级层角色,请执行以下命令:
gcloud iam roles update ROLE_ID--organization=ORGANIZATION_ID \ --file=YAML_FILE_PATH
-
要更新项目级层角色,请执行以下命令:
gcloud iam roles update ROLE_ID --project=PROJECT_ID \ --file=YAML_FILE_PATH
每个占位值的说明如下:
-
ROLE_ID
是要更新的角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project-id
。 -
YAML_FILE_PATH
是包含已更新自定义角色定义的 YAML 文件的位置路径。
示例
以下示例演示了如何使用 YAML 文件更新组织级层角色:
gcloud iam roles update ROLE_ID --organization=ORGANIZATION_ID \ --file=YAML_FILE_PATH
-
要更新项目级层角色,请执行以下命令:
gcloud iam roles update ROLE_ID --project=PROJECT_ID \ --file=YAML_FILE_PATH
每个占位值的说明如下:
-
ROLE_ID
是要更新的角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。 -
YAML_FILE_PATH
是包含已更新自定义角色定义的 YAML 文件的位置路径。
示例
以下示例演示了如何使用 YAML 文件更新组织级层角色:
gcloud iam roles update myCompanyAdmin --organization=123456789012 \ --file=my-role-definition.yaml
如果成功更新了角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkBwDN0lg= includedPermissions: - iam.roles.get - iam.roles.list - storage.buckets.get - storage.buckets.list name: organizations/123456789012/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
以下示例演示了如何使用 YAML 文件更新项目级层角色:
gcloud iam roles update myCompanyAdmin --project=my-project \ --file=my-role-definition.yaml
如果成功更新了角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkBwDN0lg= includedPermissions: - iam.roles.get - iam.roles.list - storage.buckets.get - storage.buckets.list name: projects/my-project/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
如需使用标志更新自定义角色,请执行以下操作:
可使用相应标志更新角色定义的每个部分。 如需查看所有可用标志的列表,请参阅
gcloud iam roles update
主题。您可以使用以下标志添加或移除权限:
-
--add-permissions=PERMISSIONS
:为角色添加一个或多个以英文逗号分隔的权限。 您不能在权限名称中使用通配符 (*
)。 -
--remove-permissions=PERMISSIONS
:从角色中移除一个或多个以英文逗号分隔的权限。 您不能在权限名称中使用通配符 (*
)。
或者,您只需使用
--permissions=PERMISSIONS
标志指定新权限,并提供权限的逗号分隔列表以替换现有权限列表。要更新角色定义的其他部分,请执行以下命令之一:
-
要更新组织级层角色,请执行以下命令:
gcloud iam roles update ROLE_ID--organization=ORGANIZATION_ID \ --title=ROLE_TITLE --description=ROLE_DESCRIPTION \ --stage=LAUNCH_STAGE
-
要更新项目级层角色,请执行以下命令:
gcloud iam roles update ROLE_ID --project=PROJECT_ID \ --title=ROLE_TITLE --description=ROLE_DESCRIPTION \ --stage=LAUNCH_STAGE
每个占位值的说明如下:
-
ROLE_ID
是角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。 -
ROLE_TITLE
是角色的易记标题,例如"My Company Admin"
。 -
ROLE_DESCRIPTION
是角色的简短说明,例如"My custom role description."
。 -
LAUNCH_STAGE
表示角色在发布生命周期中所处的阶段,例如ALPHA
、BETA
或GA
。
示例
以下示例演示了如何使用标志向组织级层角色添加权限:
gcloud iam roles update myCompanyAdmin --organization=123456789012 \ --add-permissions="storage.buckets.get,storage.buckets.list"
如果成功更新了角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkBwDN0lg= includedPermissions: - iam.roles.get - iam.roles.list - storage.buckets.get - storage.buckets.list name: organization/123456789012/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
以下示例演示了如何使用标志向项目级层角色添加权限:
gcloud iam roles update myCompanyAdmin --project=my-project \ --add-permissions="storage.buckets.get,storage.buckets.list"
如果成功更新了角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkBwDN0lg= includedPermissions: - iam.roles.get - iam.roles.list - storage.buckets.get - storage.buckets.list name: projects/my-project/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
-
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
REST
roles.patch
方法可更新项目或组织中的自定义角色。在使用任何请求数据之前,请先进行以下替换:
必需:
RESOURCE_TYPE
:您要管理其自定义角色的资源类型。使用值projects
或organizations
。RESOURCE_ID
:您要管理其自定义角色的项目 ID 或组织 ID。项目 ID 是字母数字字符串,例如my-project
。组织 ID 是数字,例如123456789012
。ROLE_NAME
:完整的角色名称,包括任何organizations/
、projects/
或roles/
前缀。例如organizations/123456789012/roles/myCompanyAdmin
。
推荐:
ETAG
:角色版本的标识符。包含此字段可防止覆盖其他角色更改。
可选(定义以下一个或多个值)
ROLE_TITLE
:角色的直观易懂的标题。例如My Company Admin
。ROLE_DESCRIPTION
:角色的说明。例如"The company admin role allows company admins to access important resources"
。PERMISSION_1
和PERMISSION_2
:您要在角色中包含的权限。例如storage.objects.update
。您不能在权限名称中使用通配符 (*
)。LAUNCH_STAGE
:角色的当前发布阶段。此字段可以包含以下值之一:EAP
、ALPHA
、BETA
、GA
、DEPRECATED
或DISABLED
。
HTTP 方法和网址:
PATCH https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles
请求 JSON 正文:
{ "roleId": "ROLE_NAME", "title": "ROLE_TITLE", "description": "ROLE_DESCRIPTION", "includedPermissions": [ "PERMISSION_1", "PERMISSION_2" ], "stage": "LAUNCH-STAGE", "etag": "ETAG" }
如需发送您的请求,请展开以下选项之一:
响应中包含简化的角色定义,其中包括角色名称、您更新的字段以及标识角色当前版本的 ETag。
{ "name": "projects/test-project-1000092/roles/myCompanyAdmin", "title": "My Updated Company Admin", "includedPermissions": [ "storage.buckets.get", "storage.buckets.list" ], "stage": "BETA", "etag": "BwWoyDpAxBc=" }
停用自定义角色
您可以通过将自定义角色的发布阶段更改为
DISABLED
来停用该角色。当某个角色被停用后,与该角色相关的所有角色绑定也会随之停用,这意味着向用户授予该角色不会产生任何影响。控制台
在 Google Cloud 控制台中,转到角色页面。
点击页面顶部的“选择项目”下拉列表。
选择您的组织或项目。
选择自定义角色并点击停用。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam roles update
命令将该角色的发布阶段设置为DISABLED
,以停用自定义角色。您可以通过以下两种方式更新现有自定义角色(请参阅修改现有自定义角色部分的 gcloud 标签页):
-
提供包含已更新角色定义的 YAML 文件
-
使用标志指定更新的角色定义
停用现有自定义角色的最简单方法是使用
--stage
标志并将其设置为DISABLED
。执行以下命令之一:-
要停用组织级层角色,请执行以下命令:
gcloud iam roles update ROLE_ID--organization=ORGANIZATION_ID \ --stage=DISABLED
-
要停用项目级层角色,请执行以下命令:
gcloud iam roles update ROLE_ID --project=PROJECT_ID \ --stage=DISABLED
每个占位值的说明如下:
-
ROLE_ID
是角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。
示例
以下示例演示了如何停用组织级层角色:
gcloud iam roles update myCompanyAdmin --organization=123456789012 \ --stage=DISABLED
如果成功更新了角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkB5NLIQw= includedPermissions: - iam.roles.get - iam.roles.list name: organization/123456789012/roles/myCompanyAdmin stage: DISABLED title: My Company Admin
以下示例演示了如何停用项目级层角色:
gcloud iam roles update myCompanyAdmin --project=my-project \ --stage=DISABLED
如果成功更新了角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkB5NLIQw= includedPermissions: - iam.roles.get - iam.roles.list name: projects/my-project/roles/myCompanyAdmin stage: DISABLED title: My Company Admin
-
C++
将该角色的
stage
字段更新为DISABLED
。C#
将该角色的
stage
字段更新为DISABLED
。Go
将该角色的
stage
字段更新为DISABLED
。Java
将该角色的
stage
字段更新为DISABLED
。Python
将该角色的
stage
字段更新为DISABLED
。REST
roles.patch
方法可让您将自定义角色的发布阶段更改为DISABLED
,从而停用该角色。在使用任何请求数据之前,请先进行以下替换:
RESOURCE_TYPE
:您要管理其自定义角色的资源类型。使用值projects
或organizations
。RESOURCE_ID
:您要管理其自定义角色的项目 ID 或组织 ID。项目 ID 是字母数字字符串,例如my-project
。组织 ID 是数字,例如123456789012
。ROLE_NAME
:完整的角色名称,包括任何organizations/
、projects/
或roles/
前缀。例如organizations/123456789012/roles/myCompanyAdmin
。ETAG
:角色版本的标识符。包含此字段可防止覆盖其他角色更改。
HTTP 方法和网址:
PATCH https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles
请求 JSON 正文:
{ "roleId": "ROLE_NAME", "stage": DISABLED, "etag": "ETAG" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/test-project-1000092/roles/myCompanyAdmin", "stage": "DISABLED", "etag": "BwWoyDpAxBc=" }
列出角色
您可以列出在项目或组织中创建的所有自定义角色。
控制台
在 Google Cloud 控制台中,转到角色页面。
该页面上会列出您选择的组织或项目的所有自定义角色。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam roles list
命令列出项目或组织的自定义角色和预定义角色:-
要列出组织级层自定义角色,请执行以下命令:
gcloud iam roles list --organization=ORGANIZATION_ID
-
要列出项目级层自定义角色,请执行以下命令:
gcloud iam roles list --project=PROJECT_ID
每个占位值的说明如下:
-
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。
此外,还可以指定
--show-deleted
标志以列出已删除的角色。执行以下命令可列出预定义角色:
gcloud iam roles list
-
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
REST
roles.list
方法可列出项目或组织中的所有自定义角色。在使用任何请求数据之前,请先进行以下替换:
RESOURCE_TYPE
:您要管理其自定义角色的资源类型。使用值projects
或organizations
。RESOURCE_ID
:您要管理其自定义角色的项目 ID 或组织 ID。项目 ID 是字母数字字符串,例如my-project
。组织 ID 是数字,例如123456789012
。ROLE_VIEW
:可选。要为返回的角色包含的信息。要包含角色的权限,请将此字段设置为FULL
。要排除角色的权限,请将此字段设置为BASIC
。默认值为BASIC
。PAGE_SIZE
:可选。要包含在响应中的角色的数量。默认值为 300,最大值为 1000。如果角色数大于页面大小,则响应中会包含分页令牌,您可以使用该令牌检索下一页结果。NEXT_PAGE_TOKEN
:可选。此方法之前的响应中返回的分页令牌。如果已指定,则角色列表将从上一个请求结束的位置开始。
HTTP 方法和网址:
GET https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles?view=ROLE_VIEW&pageSize=PAGE_SIZE&pageToken=NEXT_PAGE_TOKEN
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "roles": [ { "name": "projects/my-project/roles/customRole1", "title": "First Custom Role", "description": "Created on: 2020-06-01", "etag": "BwWiPg2fmDE=" }, { "name": "projects/my-project/roles/customRole2", "title": "Second Custom Role", "description": "Created on: 2020-06-07", "etag": "BwWiuX53Wi0=" } ] }
删除自定义角色
您可以删除项目或组织中的任何自定义角色。
控制台
在 Google Cloud 控制台中,转到角色页面。
选择要删除的角色,然后点击页面顶部的 delete 删除。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam roles delete
命令删除自定义角色:-
要删除组织级层自定义角色,请执行以下命令:
gcloud iam roles delete ROLE_ID --organization=ORGANIZATION_ID
-
要删除项目级层自定义角色,请执行以下命令:
gcloud iam roles delete ROLE_ID --project=PROJECT_ID
每个占位值的说明如下:
-
ROLE_ID
是角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。
除非使用
--show-deleted
标志,否则删除的角色将不会包含在gcloud iam roles list
中。在list
响应中,删除的角色以deleted: true
块表示,例如:--- deleted: true description: My custom role description. etag: BwVkB5NLIQw= name: projects/my-project/roles/myCompanyAdmin title: My Company Admin ---
-
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
REST
roles.delete
方法可删除项目或组织中的自定义角色。在使用任何请求数据之前,请先进行以下替换:
ROLE_NAME
:完整的角色名称,包括任何organizations/
、projects/
或roles/
前缀。例如organizations/123456789012/roles/myCompanyAdmin
。
HTTP 方法和网址:
DELETE https://iam.googleapis.com/v1/ROLE_NAME
如需发送您的请求,请展开以下选项之一:
响应中包含已删除的角色的定义。
{ "name": "projects/my-project/roles/myCompanyAdmin", "title": "My Company Admin", "description": "My custom role description.", "includedPermissions": [ "iam.roles.get", "iam.roles.list" ], "etag": "BwWiPg2fmDE=", "deleted": true }
角色被删除后,引用该角色的任何角色绑定都将保留在允许政策中,但处于无效状态。您可以在 7 天内恢复删除的角色。在这 7 天内,Google Cloud 控制台会显示该角色已被删除。您也可以以编程方式列出已删除的角色,但默认情况下它们会被忽略。
7 到 14 天后,系统将安排永久删除该角色。此时,该角色不再计入每个组织 300 个自定义角色或每个项目 300 个自定义角色的限额。
永久性删除过程会持续 30 天。在 30 天的窗口期内,该角色和与之关联的所有绑定都将被永久移除,并且此期间您无法使用相同的角色 ID 创建新角色。
该角色被永久删除之后,也就是自初始删除请求起 44 天后,您方可使用相同的角色 ID 创建新角色。
恢复删除自定义角色
恢复删除的角色可将角色恢复到其之前的状态。
您只能在 7 天内恢复删除的角色。7 天后,该角色可以随时被永久删除,并且系统会移除引用该角色的所有角色绑定。
控制台
在 Google Cloud 控制台中,转到角色页面。
找到要恢复的已删除角色,点击行末尾的更多图标,然后点击恢复删除。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
使用
gcloud iam roles undelete
命令恢复删除的自定义角色:-
要恢复删除的组织级层自定义角色,请执行以下命令:
gcloud iam roles undelete ROLE_ID --organization=ORGANIZATION_ID
-
要恢复删除的项目级层自定义角色,请执行以下命令:
gcloud iam roles undelete ROLE_ID --project=PROJECT_ID
每个占位值的说明如下:
-
ROLE_ID
是角色的名称,例如myCompanyAdmin
。 -
ORGANIZATION_ID
是组织的数字 ID,例如123456789012
。 -
PROJECT_ID
是项目的名称,例如my-project
。
示例
以下示例演示了如何恢复删除的组织级层自定义角色:
gcloud iam roles undelete myCompanyAdmin --organization=123456789012
如果成功恢复了删除的角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkCAx9W6w= includedPermissions: - iam.roles.get - iam.roles.list name: organization/123456789012/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
以下示例演示了如何恢复删除的项目级层自定义角色:
gcloud iam roles undelete myCompanyAdmin --project=my-project
如果成功恢复了删除的角色,则该命令的输出类似于以下内容:
description: My custom role description. etag: BwVkCAx9W6w= includedPermissions: - iam.roles.get - iam.roles.list name: projects/my-project/roles/myCompanyAdmin stage: ALPHA title: My Company Admin
-
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。
REST
roles.undelete
方法可恢复项目或组织中已删除的自定义角色。在使用任何请求数据之前,请先进行以下替换:
ROLE_NAME
:完整的角色名称,包括任何organizations/
、projects/
或roles/
前缀。例如organizations/123456789012/roles/myCompanyAdmin
。ETAG
:角色版本的标识符。包含此字段可防止覆盖其他角色更改。
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/ROLE_NAME:undelete
请求 JSON 正文:
{ "etag": "ETAG" }
如需发送您的请求,请展开以下选项之一:
响应中包含恢复的已删除角色的定义。
{ "name": "projects/my-project/roles/myCompanyAdmin", "title": "My Company Admin", "description": "My custom role description.", "includedPermissions": [ "iam.roles.get", "iam.roles.list" ], "etag": "BwWiPg2fmDE=" }
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-21。