将 IAM 与 Google SecOps 集成

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

使用场景

IAM 集成支持以下用例:

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

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

  • 身份治理和丰富:使用详细的服务账号元数据(例如显示名称和项目 ID)丰富 Google SecOps 中的用户实体,以便在调查期间为分析师提供即时上下文。

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

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

准备工作

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

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

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

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

创建和配置自定义 IAM 角色

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

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

    打开“角色”

  2. 点击 add 创建自定义角色。

  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. 点击 add 创建服务账号。

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

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

选择并配置身份验证方法

Google SecOps 支持为此集成使用两种身份验证路径:

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

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

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

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

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

  2. 选择 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 密钥对集成进行身份验证。此方法依赖于静态、长期有效的 Secret 文件来建立平台与 Google Cloud 资源之间的连接。

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

    转到“服务账号”

  2. 前往密钥标签页。

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

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

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

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

集成参数

IAM 集成需要以下参数:

参数 说明
API Root

可选。

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 ID 和 Private Key)。

Workload Identity Email

可选。

与 Workload Identity 服务账号关联的邮箱。

Verify SSL

可选。

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

默认处于启用状态。

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

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

操作

如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。

创建角色

创建 Identity and Access Management 角色。

参数

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

运行时间

此操作不会对实体执行。

角色政策 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 错误(例如凭据错误、无法连接到服务器等):“执行‘创建角色’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

创建服务账号

创建 Identity and Access Management 服务账号。

参数

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

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 “值”选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.",
   "projectId": "PROJECT_ID",
   "uniqueId": "UNIQUE_ID",
   "email": "SERVICE_ACCOUNT_NAME@PROJECT_ID.",
   "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 错误(例如凭据错误、无法连接到服务器等),则显示:“执行‘创建服务账号’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

删除角色

删除 Identity and Access Management 角色。

参数

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

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 “值”选项
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 错误(例如凭据错误、无法连接到服务器等):“执行‘删除角色’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

删除服务账号

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

运行时间

此操作在 User 实体上运行。

操作执行结果

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

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

  • 如果至少有一个提供的实体成功:“Successfully deleted the following service accounts: {0}”.format([entity.Identifier])。

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

  • 如果无法在 Identity and Access Management 中找到要删除的特定实体的数据:“Action was not able to find a match in Identity and Access Management for the provided entities: {0}”。format([entity.identifier])

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭据错误、无法连接到服务器等):“执行‘删除服务账号’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

停用服务账号

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

运行时间

此操作在 User 实体上运行。

操作执行结果

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

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

  • 如果至少有一个提供的实体成功:“Successfully disabled the following service accounts: {0}”.format([entity.Identifier])。

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

  • 如果无法在 Google Cloud IAM 中找到要停用的特定实体的数据:“Action was not able to find a match in Google Cloud IAM for the provided entities: {0}”。format([entity.identifier])

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭据错误、无法连接到服务器等),则会显示以下消息:“Error executing action "Disable Service Account". Reason: {0}''.format(error.Stacktrace)

常规

启用服务账号

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

运行时间

此操作在 User 实体上运行。

操作执行结果

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

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

  • 如果至少有一个提供的实体成功:“Successfully enabled the following service accounts: {0}”.format([entity.Identifier])。

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

  • 如果无法在 Identity and Access Management 中找到数据来启用特定实体:“Action was not able to find a match in Identity and Access Management for the provided entities: {0}”。format([entity.identifier])

操作应失败并停止 playbook 执行:

如果出现严重错误、SDK 错误(例如凭据错误、无法连接到服务器等),则会显示以下错误消息:“Error executing action "Enable Service Account". Reason: {0}''.format(error.Stacktrace)

常规

丰富实体

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

运行时间

此操作在 User 实体上运行。

操作执行结果

脚本结果
脚本结果名称 “值”选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
  "name": "projects/[PROJECT_ID]/serviceAccounts/[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].",
  "projectId": "[PROJECT_ID]",
  "uniqueId": "[UNIQUE_ID]",
  "email": "[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].",
  "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 执行:

  • 如果成功且至少一个提供的实体已扩充: "Successfully enriched entities: {0}".format([entity.Identifier])。
  • 如果未能丰富所有提供的实体:“未丰富任何实体。”
  • 如果无法在 Identity and Access Management 中找到数据来丰富特定实体: "Action was not able to find a match in Identity and Access Management to enrich provided entities: {0}".format([entity.identifier])

操作应失败并停止 playbook 执行:

如果发生严重错误、SDK 错误(例如凭据错误、无法连接到服务器等),则显示:“执行‘丰富实体’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规
表(充实)

表名称:{entity} Enrichment Table

列:键、值

实体

获取服务账号 IAM 政策

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

运行时间

此操作在 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)

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

    • 操作无法为以下 Google Cloud 服务账号提取 Identity and Access Management 政策:<email id1, email id2 ..>
  • 如果未能找到所有提供实体的 Identity and Access Management 政策:“未找到任何提供实体的 Identity and Access Management 政策。”

操作应失败并停止 playbook 执行:

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

常规

列出角色

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

参数

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

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 “值”选项
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 错误(例如凭据错误、无法连接到服务器等):“执行‘列出角色’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规
表格

表名称:IAM 角色

表列:

角色名称

角色名称

角色说明

角色阶段

角色 Etag

角色权限

常规

List Service Accounts

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

参数

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

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 “值”选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
  "accounts": [
    {
      "name": "projects/[PROJECT_ID]/serviceAccounts/[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].",
      "projectId": "[PROJECT_ID]",
      "uniqueId": "[UNIQUE_ID]",
      "email": "[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].",
      "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". Reason: {0}''.format(error.Stacktrace)

常规
表格

表名称: Google Cloud Service Accounts

表列:

服务账号名称

服务账号唯一 ID

服务账号电子邮件地址

服务账号显示名称

服务账号说明

服务账号 OAuth2 客户端 ID

常规

Ping

使用 Google SecOps Content Hub 页面中的集成配置页面上提供的参数,测试与 Identity and Access Management 服务的连接。

参数

不适用

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 “值”选项
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./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./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 IAM.

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

None of the provided service accounts were found in IAM.

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

操作失败。

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

脚本结果

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

脚本结果名称 值
is_success true 或 false

设置服务账号 IAM 政策

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

参数

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

运行时间

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

操作执行结果

脚本结果
脚本结果名称 “值”选项
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 政策:<email id1, …>

  • 如果部分失败:

    • 操作无法为以下 Google Cloud 服务账号设置 Identity and Access Management 政策:<email id1, ….>

  • 如果全部失败:

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

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

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

操作应失败并停止 playbook 执行:

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

常规

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