本页面介绍如何创建和管理 Identity and Access Management (IAM) 自定义角色。管理角色的操作包括修改、停用、列出、删除和取消删除角色。
准备工作
- Enable the IAM API. - Roles required to enable APIs - To enable APIs, you need the Service Usage Admin IAM role ( - roles/serviceusage.serviceUsageAdmin), which contains the- serviceusage.services.enablepermission. Learn how to grant roles.
- 设置身份验证。 - 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#- 如需在本地开发环境中使用本页面上的 .NET 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。 - 安装 Google Cloud CLI。 - 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 - 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. - If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity. - Google Cloud - C++- 如需在本地开发环境中使用本页面上的 C++ 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。 - 安装 Google Cloud CLI。 - 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 - 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. - If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity. - 如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置 ADC。 - Go- 如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。 - 安装 Google Cloud CLI。 - 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 - 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. - If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity. - Google Cloud - Java- 如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。 - 安装 Google Cloud CLI。 - 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 - 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. - If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity. - Google Cloud - Python- 如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。 - 安装 Google Cloud CLI。 - 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 - 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. - If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity. - Google Cloud - REST- 如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。 - 安装 Google Cloud CLI。 - 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 - 如需了解详情,请参阅 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 --- 
- 
        
- FULL_RESOURCE_NAME:由服务名称和资源路径组成的 URI。如需查看示例,请参阅完整资源名称。
- PAGE_SIZE:可选。要包含在响应中的权限的数量。默认值为 100,最大值为 1000。如果权限数大于页面大小,则响应中会包含分页令牌,您可以使用该令牌检索下一页结果。
- NEXT_PAGE_TOKEN:可选。此方法之前的响应中返回的分页令牌。如果已指定,则可测试权限列表将从上一个响应结束的位置开始。
 - 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方法可列出组织或项目可用的权限。- 在使用任何请求数据之前,请先进行以下替换: - 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.roleViewerdescription: 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的参考文档。
- 
        
- ROLE_NAME:完整的角色名称,包括任何- organizations/、- projects/或- roles/前缀。例如- organizations/123456789012/roles/myCompanyAdmin。
 - 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方法可获取角色的定义。- 在使用任何请求数据之前,请先进行以下替换: - 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 控制台中,前往角色页面。 
- 在页面顶部的下拉列表中,选择要在哪个组织或项目中创建角色。 
- 点击创建角色。 
- 输入角色的称谓、说明、ID 和角色发布阶段。角色创建后,角色 ID 便无法更改。 
- 点击添加权限。 
- 选择要包含在角色中的权限,然后点击添加权限。可使用所有服务和所有类型下拉列表,按服务和类型过滤权限并选择权限。 
 - 基于现有预定义角色创建自定义角色: - 在 Google Cloud 控制台中,前往角色页面。
- 选择要在哪个组织或项目中创建角色。
- 选择创建新自定义角色时要依据的基准角色。
- 点击基于所选角色创建角色。
- 输入角色的称谓、说明、ID 和角色发布阶段。角色创建后,角色 ID 便无法更改。
- 取消选中要从角色中排除的权限。
- 点击添加权限以包含任何权限。
- 点击创建。
 - 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 
- 
        
- 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。
 - 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方法可在项目或组织中创建自定义角色。- 在使用任何请求数据之前,请先进行以下替换: - 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: organizations/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 
- 
        
- 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。
 - 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方法可更新项目或组织中的自定义角色。- 在使用任何请求数据之前,请先进行以下替换: - 必需: - 推荐: - 可选(定义以下一个或多个值) - 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: organizations/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 
- 
        
- RESOURCE_TYPE:您要管理其自定义角色的资源类型。使用值- projects或- organizations。
- RESOURCE_ID:您要管理其自定义角色的项目 ID 或组织 ID。项目 ID 是字母数字字符串,例如- my-project。组织 ID 是数字,例如- 123456789012。
- ROLE_NAME:完整的角色名称,包括任何- organizations/、- projects/或- roles/前缀。例如- organizations/123456789012/roles/myCompanyAdmin。
- ETAG:角色版本的标识符。包含此字段可防止覆盖其他角色更改。
 - C++- 将该角色的 - stage字段更新为- DISABLED。- C#- 将该角色的 - stage字段更新为- DISABLED。- Go- 将该角色的 - stage字段更新为- DISABLED。- Java- 如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Java API 参考文档。 - 如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。 - Python- 如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Python API 参考文档。 - 如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅准备工作。 - REST- roles.patch方法可让您将自定义角色的发布阶段更改为- DISABLED,从而停用该角色。- 在使用任何请求数据之前,请先进行以下替换: - 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 
- 
        
- 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:可选。此方法之前的响应中返回的分页令牌。如果已指定,则角色列表将从上一个请求结束的位置开始。
 - 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方法可列出项目或组织中的所有自定义角色。- 在使用任何请求数据之前,请先进行以下替换: - 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 --- 
- 
        
- ROLE_NAME:完整的角色名称,包括任何- organizations/、- projects/或- roles/前缀。例如- organizations/123456789012/roles/myCompanyAdmin。
 - 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方法可删除项目或组织中的自定义角色。- 在使用任何请求数据之前,请先进行以下替换: - 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 个自定义角色的限额。 - 在安排永久删除角色后, Google Cloud 会启动永久删除角色的流程。此过程需要 30 天。在此 30 天的窗口期内,该角色和与之关联的所有绑定都将被永久移除,并且此期间您无法使用相同的角色 ID 创建新角色。 - 该角色被永久删除之后,也就是自初始删除请求起 44 天后,您方可使用相同的角色 ID 创建新角色。 - 恢复删除自定义角色- 恢复删除的角色可将角色恢复到其之前的状态。 - 您只能在 7 天内恢复删除的角色。7 天后, Google Cloud 会启动永久删除该角色的流程。此永久性删除流程最多可能需要 30 天时间。角色永久删除后,引用该角色的所有角色绑定都会移除,并且您可以使用相同的角色 ID 创建新角色。 - 控制台- 在 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: organizations/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 
- 
        
- ROLE_NAME:完整的角色名称,包括任何- organizations/、- projects/或- roles/前缀。例如- organizations/123456789012/roles/myCompanyAdmin。
- ETAG:角色版本的标识符。包含此字段可防止覆盖其他角色更改。
 - 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方法可恢复项目或组织中已删除的自定义角色。- 在使用任何请求数据之前,请先进行以下替换: - 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):2025-10-21。