将 Google Cloud IAM 与 Google SecOps 集成

本文档介绍了如何将 Google Cloud Identity and Access Management Google Cloud 与 Google Security Operations 集成。

使用场景

Google Cloud IAM 集成支持以下用例:

  • 自动管理服务账号生命周期:在用户加入和退出流程中自动创建、启用或停用服务账号,以确保仅在必要时授予访问权限。

  • 快速身份事件响应:在发生安全事件时,立即删除或停用遭入侵的服务账号和角色,以防止未经授权访问云资源。

  • 身份治理和丰富:使用详细的服务账号元数据(例如显示名称和项目 ID)丰富 Google SecOps 中的用户实体,以便分析师在调查期间立即获得相关背景信息。

  • 政策审核和强制执行:检索和审核访问权限控制政策,确保其符合最小权限原则,并以程序化方式设置新政策来修复未经授权的更改。

  • 基于角色的访问权限控制 (RBAC) 管理:在整个组织内创建和管理具有特定权限集的自定义 IAM 角色,以精细控制云环境访问权限。

准备工作

在 Google SecOps 中配置 Google Cloud IAM 集成之前,请完成以下前提条件步骤:

  1. 创建自定义 IAM 角色:定义具有管理服务账号和角色所需的特定权限的角色。

  2. 创建服务账号:创建集成用于执行操作的身份。

  3. 选择身份验证方法:在推荐的 Workload Identity 或服务账号 JSON 密钥之间进行选择。

创建和配置自定义 IAM 角色

为遵循最小权限原则,请完成以下步骤,以创建仅包含此集成所需的特定权限的自定义角色:

  1. 在 Google Cloud 控制台中,前往 IAM 和管理 > 角色

  2. 点击创建角色

  3. 提供标题说明ID

  4. 角色发布阶段设置为 General Availability

  5. 点击添加权限,然后添加以下特定权限:

    • iam.serviceAccounts.list
    • iam.serviceAccounts.create
    • iam.serviceAccounts.get
    • iam.serviceAccounts.getIamPolicy
    • iam.serviceAccounts.setIamPolicy
    • iam.serviceAccounts.disable
    • iam.serviceAccounts.enable
    • iam.serviceAccounts.delete
    • iam.roles.list
    • iam.roles.get
    • iam.roles.create
    • iam.roles.delete
  6. 点击创建

创建服务账号

集成使用服务账号在您的项目中进行身份验证并执行 IAM 操作。

如需创建服务账号,请完成以下步骤:

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号

  2. 点击创建服务账号

  3. 输入名称和说明,然后点击创建并继续

  4. 向此服务账号授予对项目的访问权限部分中,将您在上一步中创建的自定义角色分配给此服务账号。点击完成

选择身份验证方法

Google SecOps 支持此集成的两种身份验证途径:

  • 选项 1:Workload Identity(推荐):此方法使用短期有效的令牌,通过服务账号模拟来实现。它更安全,因为无需使用长期有效的 JSON 密钥。

  • 选项 2:服务账号 JSON 密钥:此方法使用静态密钥文件。仅当您的环境中没有 Workload Identity 时,才使用此方法。

使用 Workload Identity 进行身份验证(推荐)

如要使用 Workload Identity,您必须授权 Google SecOps 实例模拟您创建的服务账号。

  1. 在 Google SecOps 中,前往内容中心 > 响应集成

  2. 选择 Google Cloud IAM 集成。

  3. Workload Identity 邮箱字段中,输入您的服务账号电子邮件地址。

  4. 点击保存,然后点击测试。测试预计最初会失败。

  5. 点击失败的测试旁边的 close_small,查看错误消息。

  6. 搜索错误消息末尾附近的专用电子邮件地址(格式为 gke-init-python@...soar-python@...)。复制此地址。

授予模拟权限

检索到 Google SecOps 实例的唯一身份后,您必须授权该身份访问您的 Google Cloud 资源。此步骤可启用服务账号模拟,从而允许平台生成短期有效令牌并代表您执行操作,而无需静态密钥。

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号

  2. 选择您为此集成创建的服务账号。

  3. 前往权限标签页,然后点击授予访问权限

  4. 将您复制的唯一电子邮件地址粘贴到新的主账号字段中。

  5. 分配 Service Account Token Creator 角色 (roles/iam.serviceAccountTokenCreator)。点击保存

使用 JSON 密钥进行身份验证

如果您的环境中无法使用 Workload Identity,您可以使用服务账号 JSON 密钥对集成进行身份验证。此方法依赖于静态的长期有效的密钥文件,以在平台与您的 Google Cloud 资源之间建立连接。

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号,然后选择您的服务账号。

  2. 前往密钥标签页。

  3. 点击添加密钥 > 创建新密钥

  4. 选择 JSON 作为密钥类型,然后点击创建。相应文件会下载到您的计算机上。

  5. 复制 JSON 文件的全部内容。

  6. 在平台中配置此集成时,将内容粘贴到服务账号 JSON 文件内容字段中。

集成参数

Google Cloud IAM 集成需要以下参数:

参数 说明
API Root

可选。

Google Cloud IAM 实例的基本网址。

默认值为 https://iam.googleapis.com

Account Type

可选。

Google Cloud 账号的类型。

此值对应于身份验证 JSON 文件中的 type 参数。

默认值为 service_account

Project ID

可选。

相应 Google Cloud 账号的项目 ID。

此值对应于身份验证 JSON 文件中的 project_id 参数。

Quota Project ID

可选。

发出 API 请求时用于配额和结算的项目 ID。

Private Key ID

可选。

Google Cloud 账号的私钥 ID。

此值对应于身份验证 JSON 文件中的 private_key_id 参数。

Private Key

可选。

Google Cloud 账号的私钥。

此值对应于身份验证 JSON 文件中的 private_key 参数。

Client Email

可选。

Google Cloud 账号的客户电子邮件地址。

此值对应于身份验证 JSON 文件中的 client_email 参数。

Client ID

可选。

Google Cloud 账号的客户端 ID。

此值对应于身份验证 JSON 文件中的 client_id 参数。

Auth URI

可选。

Google Cloud 账号的身份验证 URI。

此值对应于身份验证 JSON 文件中的 auth_uri 参数。

默认值为 https://accounts.google.com/o/oauth2/auth

Token URI

可选。

Google Cloud 账号的令牌 URI。

此值对应于身份验证 JSON 文件中的 token_uri 参数。

默认值为 https://oauth2.googleapis.com/token

Auth Provider X509 URL

可选。

身份验证提供方的 X.509 证书网址。

此值对应于身份验证 JSON 文件中的 auth_provider_x509_cert_url 参数。

默认值为 https://www.googleapis.com/oauth2/v1/certs

Client X509 URL

可选。

客户端 X.509 证书网址。

此值对应于身份验证 JSON 文件中的 client_x509_cert_url 参数。

Organization ID

可选。

Google Cloud 组织的唯一标识符。

Service Account Json File Content

可选。

服务账号密钥文件的完整 JSON 内容。

如果提供此参数,则系统会忽略各个连接参数(例如 Private Key IDPrivate Key)。

Workload Identity Email

可选。

与 Workload Identity 服务账号关联的电子邮件地址。

Verify SSL

可选。

如果选中此选项,集成会在连接到 Google Cloud IAM 服务时验证 SSL 证书。

默认处于启用状态。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成

如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行人工处置措施

创建角色

创建 Identity and Access Management 角色。

参数

参数显示名称 类型 默认值 是必填字段 说明
角色 ID 字符串 不适用 为新创建的 Identity and Access Management 角色指定角色 ID。
角色定义 字符串 不适用 指定要用作角色定义的 JSON 政策文档。

Run On

该操作不会在实体上运行。

角色政策 JSON 示例

{
   "name": "projects/silver-shift-275007/roles/iam_test_role_api",
   "title": "iam_test_role_api",
   "description": "test role",
   "includedPermissions": [
       "storagetransfer.projects.getServiceAccount"
   ],
   "stage": "GA",
   "etag": "BwXBu1RHiPw="
}

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "name": "projects/[PROJECT_ID]/roles/[ROLE_NAME]",
   "title": "[ROLE_TITLE]",
   "description": "[ROLE_DESCRIPTION]",
   "includedPermissions": [
       "storagetransfer.projects.getServiceAccount"
   ],
   "stage": "GA",
   "etag": "[ETAG_VALUE]"
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果操作成功运行,则:(is_success=true)

    • 已成功创建 Identity and Access Management <roleid>。

  • 如果提供的 role_id 已存在(is_success =false)

    • 提供的角色 ID<role_id> 已存在。

  • 如果提供的角色 JSON 无效(is_success =false)

    • 提供的角色定义 JSON 文档 <role json> 无效。

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘创建角色’时出错。原因:{0}''.format(error.Stacktrace)

常规

创建服务账号

创建 Identity and Access Management 服务账号。

参数

参数显示名称 类型 默认值 是必填字段 说明
服务账号 ID 字符串 字符串 指定要创建的服务账号 ID。
服务账号显示名称 字符串 字符串 指定要创建的服务账号显示名称。
服务账号说明 字符串 字符串 指定要创建的服务账号说明。

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
   "projectId": "PROJECT_ID",
   "uniqueId": "UNIQUE_ID",
   "email": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
   "displayName": "SERVICE_ACCOUNT_DISPLAY_NAME",
   "etag": "ETAG_VALUE",
   "description": "SERVICE_ACCOUNT_DESCRIPTION",
   "oauth2ClientId": "UNIQUE_ID"
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果操作成功运行,则:(is_success=true)

    • Google Cloud 已成功创建服务账号 <唯一 ID>。
  • 如果操作因提供的服务账号已存在而未能运行(is_success =false)

    • 提供的服务账号 <唯一 ID> 已存在。

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“Error executing action "Create Service Account". 原因:{0}''.format(error.Stacktrace)

常规

删除角色

删除 Identity and Access Management 角色。

参数

参数显示名称 类型 默认值 是必填字段 说明
角色 ID 字符串 不适用 为新创建的 Identity and Access Management 角色指定角色 ID。

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "name": "projects/[PROJECT_ID]/roles/[ROLE_NAME]",
   "title": "[ROLE_TITLE]",
   "description": "[ROLE_DESCRIPTION]",
   "includedPermissions": [
       "storagetransfer.projects.getServiceAccount"
   ],
   "stage": "GA",
   "etag": "[ETAG_VALUE]",
   "deleted": true
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果操作成功运行,则:(is_success=true)

    • 已成功删除 Identity and Access Management <roleid>。

  • 如果提供的 role_id 不存在(is_success =false)

    • 提供的角色 ID<role_id> 不存在。

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘删除角色’时出错。原因:{0}''.format(error.Stacktrace)

常规

删除服务账号

删除服务账号。操作需要将 Identity and Access Management 服务账号电子邮件作为 Google SecOps 用户实体。

Run On

此操作在 User 实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功删除至少一个所提供的实体:“已成功删除以下服务账号:{0}”。format([entity.Identifier])。

  • 如果未能删除所有提供的实体:“未删除任何服务账号。”

  • 如果无法在 Identity and Access Management 中找到要删除特定实体的数据:“操作无法在 Identity and Access Management 中找到与所提供实体匹配的数据:{0}”。format([entity.identifier])

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“Error executing action "Delete Service Account". 原因:{0}''.format(error.Stacktrace)

常规

停用服务账号

停用服务账号。操作需要将 Identity and Access Management 服务账号电子邮件作为 Google SecOps 用户实体。

Run On

此操作在 User 实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功停用了至少一个所提供的实体,则:“已成功停用以下服务账号:{0}”。format([entity.Identifier])。

  • 如果无法停用所有提供的实体:“未停用任何服务账号。”

  • 如果无法在 Google Cloud 身份和访问权限管理中找到数据来停用特定实体:“操作无法在 Google Cloud 身份和访问权限管理中找到所提供实体的匹配项:{0}”。format([entity.identifier])

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器、其他错误):“执行操作‘停用服务账号’时出错。原因:{0}''.format(error.Stacktrace)

常规

启用服务账号

启用服务账号。操作需要将 Identity and Access Management 服务账号电子邮件作为 Google SecOps 用户实体。

Run On

此操作在 User 实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功启用至少一个所提供的实体,则显示“已成功启用以下服务账号:{0}”。format([entity.Identifier])。

  • 如果未能启用所有提供的实体:“未启用任何服务账号。”

  • 如果无法在 Identity and Access Management 中找到数据来启用特定实体:“操作无法在 Identity and Access Management 中找到与所提供实体匹配的内容:{0}”。format([entity.identifier])

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器、其他错误):“执行操作‘启用服务账号’时出错。原因:{0}''.format(error.Stacktrace)

常规

丰富实体

使用 Identity and Access Management 中的服务账号信息丰富 Google SecOps 用户实体。操作需要将 Identity and Access Management 服务账号电子邮件作为 Google SecOps 用户实体。

Run On

此操作在 User 实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
  "name": "projects/[PROJECT_ID]/serviceAccounts/[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com",
  "projectId": "[PROJECT_ID]",
  "uniqueId": "[UNIQUE_ID]",
  "email": "[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com",
  "displayName": "[DISPLAY_NAME]",
  "etag": "[ETAG]",
  "description": "[DESCRIPTION]",
  "oauth2ClientId": "[UNIQUE_ID]"
}
实体扩充
扩充项字段名称 逻辑 - 适用情形
Google_IAM_name
Google_IAM_project_id ..
Google_IAM_unique_id
Google_IAM_email
Google_IAM_display_name
Google_IAM_description
Google_IAM_oauth2_client_id
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功且至少一个提供的实体已得到丰富:“已成功丰富实体:{0}”。format([entity.Identifier])。
  • 如果未能丰富所有提供的实体:“未丰富任何实体。”
  • 如果无法在 Identity and Access Management 中找到数据来丰富特定实体:“操作无法在 Identity and Access Management 中找到匹配项来丰富提供的实体:{0}”。format([entity.identifier])

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘丰富实体’时出错。原因:{0}''.format(error.Stacktrace)

常规
表(丰富度)

表格名称:{实体}扩充表

:键、值

实体

获取服务账号 IAM 政策

获取服务账号的访问权限控制政策。操作需要将 Identity and Access Management 服务账号电子邮件地址作为 Google SecOps 用户实体。请注意,如果未向服务账号分配任何政策,则政策可能为空。

Run On

此操作在 User 实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "version": 1,
   "etag": "[ETAG_VALUE]",
   "bindings": [
       {
           "role": "roles/iam.securityReviewer",
           "members": [
               "user:[USER_EMAIL]"
           ]
       }
   ]
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果操作成功运行,则:(is_success=true)

    • “已成功提取以下 Google Cloud 服务账号的 Identity and Access Management 政策:<电子邮件 ID 1、电子邮件 ID 2...>
  • 如果操作未找到实体的信息(例如,在提供的 Google Identity and Access Management 电子邮件地址中不存在)

    • 操作无法提取以下 Google Cloud 服务账号的 Identity and Access Management 政策:<电子邮件 ID 1、电子邮件 ID 2…>
  • 如果未能为所有提供的实体找到 Identity and Access Management 政策:“未能为任何提供的实体找到 Identity and Access Management 政策。”

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘获取服务账号 IAM 政策’时出错。原因:{0}''.format(error.Stacktrace)

常规

列出角色

根据指定的搜索条件列出 Identity and Access Management 角色。请注意,此操作不适用于 Google SecOps 实体。

参数

参数显示名称 类型 默认值 是必填字段 说明
查看 DDL 基本 指定应使用哪个视图来返回角色信息。
要返回的行数上限 整数 50 指定角色操作应返回多少个角色。
是否仅列出项目自定义角色? 复选框 尚未核查 如果启用,操作将仅返回为当前项目 ID 定义的自定义角色。
显示已删除的数据库 复选框 尚未核查 如果已启用,操作还会返回已删除的角色。

Run On

该操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "roles": [
       {
           "name": "roles/accessapproval.approver",
           "title": "Access Approval Approver",
           "description": "Ability to view or act on access approval requests and view configuration",
           "stage": "BETA",
           "etag": "[ETAG_VALUE]"
       },
       {
           "name": "roles/accessapproval.configEditor",
           "title": "Access Approval Config Editor",
           "description": "Ability update the Access Approval configuration",
           "stage": "BETA",
           "etag": "[ETAG_VALUE]"
       }
   ]
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功列出角色(is_success = true):“已成功获取 Identity and Access Management 角色。”

  • 如果没有可用值(is_success = false):“未针对指定的输入参数返回任何角色。”

操作应失败并停止 playbook 执行

如果出现严重错误、无效的可用区、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“Error executing action "List Roles". 原因:{0}''.format(error.Stacktrace)

常规
表格

表格名称: Google Cloud IAM 角色

表格列

角色名称

角色名称

角色说明

角色阶段

角色 ETag

角色权限

常规

List Service Accounts

根据指定的搜索条件列出 Identity and Access Management 服务账号。 请注意,此操作不适用于 Google SecOps 实体。

参数

参数显示名称 类型 默认值 是必填字段 说明
服务账号显示名称 字符串 不适用 指定要返回的服务账号显示名称。参数接受多个值,这些值以英文逗号分隔的字符串形式表示。
服务账号电子邮件地址 字符串 不适用 指定要返回的服务账号电子邮件地址。参数接受多个值,这些值以英文逗号分隔的字符串形式表示。
要返回的行数上限 整数 50 指定角色操作应返回多少个角色。

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
  "accounts": [
    {
      "name": "projects/[PROJECT_ID]/serviceAccounts/[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com",
      "projectId": "[PROJECT_ID]",
      "uniqueId": "[UNIQUE_ID]",
      "email": "[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com",
      "displayName": "[DISPLAY_NAME]",
      "etag": "[ETAG_VALUE]",
      "description": "[SERVICE_ACCOUNT_DESCRIPTION]",
      "oauth2ClientId": "[UNIQUE_ID]"
    }
  ]
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功列出了服务账号 (is_success = true)
    “已成功提取 Google Cloud 个服务账号。”
  • 如果没有可用值(is_success = false):“未针对指定的输入参数返回任何服务账号。”

操作应失败并停止 playbook 执行

如果出现严重错误、无效的可用区、SDK 错误(例如凭据错误、无法连接到服务器、其他错误):“Error executing action "List Service Accounts". 原因:{0}''.format(error.Stacktrace)

常规
表格

表格名称: Google Cloud 服务账号

表格列

服务账号名称

服务账号唯一 ID

服务账号电子邮件地址

服务账号显示名称

服务账号说明

服务账号 OAuth2 客户端 ID

常规

Ping

使用 Google Security Operations Marketplace 标签页中的集成配置页面上提供的参数,测试与 Identity and Access Management 服务的连接。

参数

不适用

Run On

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:“已使用提供的连接参数成功连接到 Identity and Access Management 服务!”

操作应失败并停止 playbook 执行

  • 如果出现严重错误,例如凭据错误或连接丢失:“无法连接到 Identity and Access Management 服务!错误为 {0}".format(exception.stacktrace)
常规

轮替服务账号密钥

使用轮替服务账号密钥操作来轮替与服务账号关联的用户管理的密钥。在轮替期间,系统会删除所有现有密钥并创建新密钥。

此操作可在以下 Google SecOps 实体上运行:

  • Deployment

  • Username

操作输入

轮替服务账号密钥操作需要以下参数:

参数 说明
Service Account

可选。

要轮替密钥的服务账号的英文逗号分隔列表。

此参数可与实体搭配使用。如果提供,则除了操作范围中标识的任何服务账号实体之外,该操作还会轮换这些特定账号的密钥。

操作输出

轮替服务账号密钥操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用轮换服务账号密钥操作时收到的 JSON 结果输出:

[
    {
       "Entity": "123",
       "EntityResult": {
               "name": "projects/example-project/serviceAccounts/sample-sa@example-project.iam.gserviceaccount.com/keys/b333bbda7826af991a4d4cc4e3f83325103580ca",
               "validAfterTime": "2023-09-12T11:02:31Z",
               "validBeforeTime": "9999-12-31T23:59:59Z",
               "keyAlgorithm": "KEY_ALG_RSA_2048",
               "keyOrigin": "GOOGLE_PROVIDED",
               "keyType": "USER_MANAGED"
        }
    },
    {
       "Entity": "1234",
       "EntityResult": {
               "name": "projects/example-project/serviceAccounts/sample-sa@example-project.iam.gserviceaccount.com/keys/b333bbda7826af991a4d4cc4e3f83325103580ca",
               "validAfterTime": "2023-09-12T11:02:31Z",
               "validBeforeTime": "9999-12-31T23:59:59Z",
               "keyAlgorithm": "KEY_ALG_RSA_2048",
               "keyOrigin": "GOOGLE_PROVIDED",
               "keyType": "USER_MANAGED"
        }
    }
]
输出消息

轮替服务账号密钥操作可能会返回以下输出消息:

输出消息 消息说明

Successfully rotated keys for service account SERVICE_ACCOUNT_EMAIL in Google Cloud IAM.

The following service accounts were not found in Google Cloud IAM: SERVICE_ACCOUNT_KEYS.

None of the provided service accounts were found in Google Cloud IAM.

操作成功。
Error executing action "Rotate Service Account Keys". Reason: ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用轮换服务账号密钥操作时脚本结果输出的值:

脚本结果名称
is_success truefalse

设置服务账号 IAM 政策

设置指定服务账号的访问权限控制政策。操作需要将 Identity and Access Management 服务账号电子邮件作为 Google SecOps 账号实体。请注意,操作中提供的政策会替换任何现有政策。

参数

参数显示名称 类型 默认值 是必填字段 说明
政策 字符串 不适用 指定要为服务账号设置的 JSON 政策文档。

Run On

此操作在“账号”实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "version": 1,
   "etag": "[ETAG_VALUE]",
   "bindings": [
       {
           "role": "roles/iam.securityReviewer",
           "members": [
               "user:[USER_EMAIL]"
           ]
       }
   ]
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果部分成功 (is_success=True)

    • 已成功为以下 Google Cloud 服务账号设置 Identity and Access Management 政策:<电子邮件 ID 1,...>

  • 如果部分失败

    • 操作无法为以下 Google Cloud 服务账号设置 Identity and Access Management 政策:<电子邮件 ID 1、....>

  • 如果所有尝试都失败

    • 未设置任何服务账号 Identity and Access Management 政策。

  • 如果提供的政策 JSON 无效 (is_success =false)

    • 提供的政策 JSON 文档 <policy> 无效。

操作应失败并停止 playbook 执行

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“执行操作‘设置服务账号 IAM 政策’时出错。原因:{0}''.format(error.Stacktrace)

常规

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。