Google Cloud IAM

集成版本:12.0

使用场景

在 Google Cloud中管理权限和服务账号。

产品权限

创建服务账号

  1. 打开 Google Cloud 项目门户,在左侧窗格中依次点击 IAM 和管理 > 角色
  2. 点击创建角色,以创建具有集成所需权限的自定义角色。
  3. 在打开的页面上,将角色“标题”“说明”“ID”“角色发布阶段”设置为“正式版”。
  4. 向创建的角色添加以下权限:

    • 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
  5. 点击创建以创建新的自定义角色。

  6. 接下来,前往 Google 文档,然后按照“创建服务账号”部分中的步骤操作。创建服务账号后,系统会下载服务账号私钥文件。

  7. 向服务账号授予您之前创建的角色,以便服务账号拥有集成所需的权限。

  8. 使用您在第 1 步中下载的文件的 JSON 内容配置 Google Cloud IAM 集成。

在 Google Security Operations 中配置 Google Cloud IAM 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 是否为必需属性 说明
账户类型 字符串 service_account Google Cloud 账号的类型。位于身份验证 JSON 文件中的“type”参数中。您需要复制该值并将其放入此集成配置参数中。
项目 ID 字符串 不适用 Google Cloud 账号的项目 ID。位于身份验证 JSON 文件中的“project_id”参数中。您需要复制该值并将其放入此集成配置参数中。
私钥 ID 密码 不适用 Google Cloud 账号的私钥 ID。位于身份验证 JSON 文件中的“private_key_id”参数中。您需要复制该值并将其放入此集成配置参数中。
私钥 密码 不适用 Google Cloud 账号的私钥。位于身份验证 JSON 文件中的“private_key”参数中。您需要复制该值并将其放入此集成配置参数中。
客户电子邮件地址 字符串 不适用 Google Cloud 账号的客户电子邮件地址。位于身份验证 JSON 文件中的“client_email”参数中。您需要复制该值并将其放入此集成配置参数中。
客户端 ID 字符串 不适用 Google Cloud 账号的客户端 ID。位于身份验证 JSON 文件中的“client_id”参数中。您需要复制该值并将其放入此集成配置参数中。
身份验证 URI 字符串 https://accounts.google.com/o/oauth2/auth Google Cloud 账号的身份验证 URI。位于身份验证 JSON 文件中的“auth_uri”参数中。您需要复制该值并将其放入此集成配置参数中。
令牌 URI 字符串

https://oauth2.googleapis.com/token

Google Cloud 账号的令牌 URI。位于身份验证 JSON 文件中的“token_uri”参数中。您需要复制该值并将其放入此集成配置参数中。
身份验证提供方 X509 网址 字符串

https://www.googleapis.com/oauth2/v1/certs

Google Cloud 账号的身份验证提供方 X509 网址。位于身份验证 JSON 文件中的“auth_provider_x509_cert_url”参数中。您需要复制该值并将其放入此集成配置参数中。
客户端 X509 网址 字符串 不适用 Google Cloud 账号的客户端 X509 网址。位于身份验证 JSON 文件中的“client_x509_cert_url”参数中。您需要复制该值并将其放入此集成配置参数中。
服务账号 Json 文件内容 字符串 不适用 可选:您可以不指定私钥 ID、私钥和其他参数,而是在此处指定服务账号文件的完整 JSON 内容。如果提供此参数,系统会忽略其他连接参数。
验证 SSL 复选框 勾选 如果启用,集成会验证与 Google Cloud 服务的连接的 SSL 证书是否有效。

操作

Ping

说明

使用 Google Security Operations Marketplace 标签页中的集成配置页面上提供的参数,测试与 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)
常规

丰富实体

说明

使用 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/silver-shift-275007/serviceAccounts/dmitrystestsa@silver-shift-275007.iam.gserviceaccount.com",
           "projectId": "silver-shift-275007",
           "uniqueId": "104627053409757134782",
           "email": "dmitrystestsa@silver-shift-275007.iam.gserviceaccount.com",
           "displayName": "dmitrys Test SA displayName",
           "etag": "MDEwMjE5MjA=",
           "description": "Service account description",
           "oauth2ClientId": "104627053409757134782"
}
实体扩充
扩充项字段名称 逻辑 - 适用情形
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)

常规
表(丰富度)

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

:键、值

实体

List Service Accounts

说明

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

参数

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

运行于

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

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "accounts": [
       {
           "name": "projects/silver-shift-275007/serviceAccounts/dmitrystestsa@silver-shift-275007.iam.gserviceaccount.com",
           "projectId": "silver-shift-275007",
           "uniqueId": "104627053409757134782",
           "email": "dmitrystestsa@silver-shift-275007.iam.gserviceaccount.com",
           "displayName": "dmitrys Test SA displayName",
           "etag": "MDEwMjE5MjA=",
           "description": "Service account description",
           "oauth2ClientId": "104627053409757134782"
       }
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 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

常规

创建服务账号

说明

创建 Identity and Access Management 服务账号。

参数

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

运行于

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

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
   "name": "projects/silver-shift-275007/serviceAccounts/dmitrystestsa@silver-shift-275007.iam.gserviceaccount.com",
   "projectId": "silver-shift-275007",
   "uniqueId": "104627053409757134782",
   "email": "dmitrystestsa@silver-shift-275007.iam.gserviceaccount.com",
   "displayName": "dmitrys Test SA displayName",
   "etag": "MDEwMjE5MjA=",
   "description": "Service account description",
   "oauth2ClientId": "104627053409757134782"
}
案例墙
结果类型 值/说明 类型
输出消息*

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

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

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

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

操作应失败并停止 playbook 执行

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

常规

获取服务账号 IAM 政策

说明

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

运行于

此操作在 User 实体上运行。

操作执行结果

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

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

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

    • “已成功提取以下 Google Cloud 服务账号的 Identity and Access Management 政策:<电子邮件地址 1、电子邮件地址 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)

常规

设置服务账号 IAM 政策

说明

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

参数

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

运行于

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

操作执行结果

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

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

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

    • 已成功为以下 Google Cloud 服务账号设置 Identity and Access Management 政策:<email id1, ...>

  • 如果部分失败

    • 操作无法为以下 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)

常规

停用服务账号

说明

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

运行于

此操作在 User 实体上运行。

操作执行结果

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

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

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

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

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

操作应失败并停止 playbook 执行

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

常规

启用服务账号

说明

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

运行于

此操作在 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 用户实体。

运行于

此操作在 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 实体。

参数

参数显示名称 类型 默认值 是必填字段 说明
查看 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": "AA=="
       },
       {
           "name": "roles/accessapproval.configEditor",
           "title": "Access Approval Config Editor",
           "description": "Ability update the Access Approval configuration",
           "stage": "BETA",
           "etag": "AA=="
       }
   ]
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 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

角色权限

常规

创建角色

说明

创建 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/silver-shift-275007/roles/iam_test_role_api",
   "title": "iam_test_role_api",
   "description": "test role",
   "includedPermissions": [
       "storagetransfer.projects.getServiceAccount"
   ],
   "stage": "GA",
   "etag": "BwXBu1RHiPw="
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 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 字符串 不适用 为新创建的 Identity and Access Management 角色指定角色 ID。

运行于

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

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
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": "BwXDDgKFx7M=",
   "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)

常规

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