将 Secret Manager 与 Google SecOps 集成

本文档介绍了如何将 Secret Manager 与 Google Security Operations 集成。

使用场景

Secret Manager 集成使用 Google SecOps 功能来支持以下用例:

  • 集中管理凭证:通过在 Google Cloud中集中存储、审核和管理凭证,消除 Google SecOps 配置文件和脚本中嵌入的硬编码应用凭证。
  • 同步参数:使用后台同步作业自动执行配置管理,从 Google Cloud Secret Manager 提取条目并更新集成实例、连接器和作业。

准备工作

在 Google SecOps 平台中配置集成之前,请验证您是否已按照以下步骤配置环境:

  1. 创建服务账号。
  2. 为您的项目启用所需的 API。
  3. 选择并配置以下身份验证方法之一:
    • 选项 1:JSON 密钥:此方法依赖于静态、长期有效的密钥文件。仅当您的环境中没有 Workload Identity 时,才使用此方法。
    • 选项 2:Workload Identity(推荐):此方法通过服务账号模拟使用短期有效的临时访问令牌,无需存储任何 Secret。

创建服务账号

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

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

    转到“服务账号”

  2. 点击创建服务账号。

  3. 提供名称和说明,然后点击完成以创建账号。

  4. 根据您选择的身份验证方法,向服务账号授予所需的 IAM 权限:

    • 对于服务账号密钥身份验证,请授予以下角色:
      • Secret Manager Secret Accessor (roles/secretmanager.secretAccessor),允许集成访问 Secret 载荷。
      • Secret Manager Viewer (roles/secretmanager.viewer),*提供 Ping 操作测试连接所需的 secretmanager.secrets.list 权限*。
    • 对于 Workload Identity 身份验证:
      • 向被模拟的目标服务账号授予 Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) 和 Secret Manager Viewer (roles/secretmanager.viewer) 角色。
      • 确保您的运行时环境身份具有 Service Account Token Creator (roles/iam.serviceAccountTokenCreator) 角色。

为项目启用所需的 API

  1. 在 Google Cloud 控制台中,前往 API 和服务。

    进入“API 和服务”

  2. 点击启用 API 和服务。

  3. 搜索并为您的项目启用 Secret Manager API。

配置 JSON 密钥

您可以使用静态 JSON 密钥文件或 Workload Identity 对集成进行身份验证。为最大限度地提高环境安全性,请使用 Workload Identity 方法。仅当您的基础架构不支持 Workload Identity 时,才使用 JSON 密钥方法,因为静态密钥需要手动轮替,并且会增加凭证泄露风险。

如需生成对集成进行身份验证所需的 JSON 密钥文件,请完成以下步骤:

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

    转到“服务账号”

  2. 前往密钥标签页。

  3. 点击添加密钥。

  4. 选择创建新密钥。

  5. 对于密钥类型,选择 JSON,然后点击创建。JSON 文件会下载到您的计算机。

  6. 复制此文件的全部内容,并在集成配置期间将其粘贴到 Service Account JSON 中。

配置 Secret Manager 权限

请按照以下步骤授予集成所需的管理员权限,以便访问 Google Cloud 项目中的 Secret 资料并验证连接性:

  1. 在 Google Cloud 控制台中,前往 IAM 和管理 > IAM。
  2. 在主账号列表中找到您创建的服务账号,然后点击修改 修改主账号。
  3. 点击添加其他角色。
  4. 在角色选择字段中,搜索并选择以下角色:
  5. 点击保存。

配置 Workload Identity 凭证

选择此方法或 JSON 密钥方法来对集成进行身份验证。Workload Identity 是推荐且更安全的方法,因为它通过服务账号模拟使用短期临时访问令牌,从而最大限度地降低长期有效机密凭据泄露的风险。

识别唯一实例身份

如需使用 Workload Identity,您必须向 Google SecOps 实例授予模拟服务账号的权限。此步骤允许实例安全地访问 Google Cloud 资源。

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

  2. 选择您要配置的集成,然后在 Workload Identity Email 中输入您的服务账号电子邮件地址。

  3. 依次点击保存 > 测试。测试预计会失败。

  4. 点击测试右侧的 close_small,然后在出错提示中搜索以 gke-init-python@... 或 soar-python@... 开头的身份电子邮件。

  5. 复制此唯一邮箱。

在 Google Cloud中授权实例身份

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

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

    转到“服务账号”

  2. 选择目标服务账号,然后依次前往权限 > 授予访问权限。

  3. 将唯一邮箱粘贴到新的主账号字段中,并分配 Service Account Token Creator 角色 (roles/iam.serviceAccountTokenCreator)。

集成参数

Secret Manager 集成需要以下配置参数:

参数 说明
Service Account JSON

可选。

用于向 Secret Manager 进行身份验证的服务账号密钥 JSON 文件的内容。

您可以配置此参数或 Workload Identity 邮箱。

Project ID

可选。

存储 Secret 的 Google Cloud 项目 ID。

如果未提供值,集成会尝试从 Service Account JSON(如果存在)推断此值,但建议您明确指定此值。

Workload Identity Email

可选。

使用 Workload Identity(应用默认凭据)进行身份验证时要模拟的服务账号邮箱。

当 Google SecOps 平台或远程代理在启用了 Workload Identity 的 Google Cloud 内运行时,请使用此配置,而不是 Service Account JSON。

Verify SSL

必填。

如果选中,集成会在与 Secret Manager 建立连接时验证 SSL 证书。

默认处于启用状态 (True)。

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

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

操作

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

Ping

使用 Ping 操作可验证连接性,并根据目标 Secret Manager 实例验证配置参数。

此操作主要用于从 Content Hub 中的集成配置页面进行即时连接测试,不会在单个 Google Cloud 实体上执行。

操作输入

此操作不需要任何输入参数。

操作输出

Ping 操作提供以下输出:

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

Ping 操作可能会返回以下输出消息:

输出消息 消息说明

Successfully connected to the Secret Manager server with the provided connection parameters!

操作成功,凭据有效。
Failed to connect to Secret Manager! Error is ERROR_REASON

操作失败。

请检查您的身份验证凭证、项目 ID 配置、IAM 权限或网络连接。验证服务账号是否具有 secretmanager.secrets.list 权限(例如使用 Secret Manager Viewer 角色)。

脚本结果

下表列出了使用 Ping 操作时脚本结果输出的值:

脚本结果名称 值
is_success true 或 false

作业

如需详细了解作业,请参阅 配置新作业和 高级调度。

同步集成凭证作业

使用 Secret Manager - 同步集成凭据作业,系统地同步 Secret Manager 条目中的配置参数,以自动更新平台集成实例、连接器和后台作业配置。

此后台同步任务在全局范围内运行,不会在单个实体上执行。

作业行为

该作业会解析结构化配置对象,以查询 Secret 定义,并处理两种版本引用样式:

  • 隐含表示法:格式为 projects/<project_id>/secrets/<secret_name>。 同步任务会在处理过程中动态解析并从 Secret Manager 中检索最新的有效版本。
  • 显式表示法:格式为 projects/<project_id>/secrets/<secret_name>/versions/<version_id>。同步任务会检索该确切的固定版本条目,即使其状态在 Google Cloud中标记为无效也是如此。

Secret Manager 中的每个目标 Secret 路径都必须包含一个有效的 JSON 对象字符串,该字符串可将参数键直接映射到其各自的凭证值。

凭证映射配置示例
{
    "integration_instances": {
        "AzureActiveDirectory_1": {
            "Client ID": "projects/154371241292/secrets/AzureActiveDirectory"
        }
    },
    "connectors": {
        "Crowdstrike - Alerts Connector": {
            "Client Secret": "projects/154371241292/secrets/CrowdstrikeConnectorSecret",
            "Client ID": "projects/154371241292/secrets/CrowdstrikeConnectorID"
        },
        "Microsoft Graph Mail Connector": {
            "Client Secret": "projects/154371241292/secrets/GraphConnectorSecret",
            "Client ID": "projects/154371241292/secrets/GraphConnectorID/versions/3"
        }
    },
    "jobs": {
        "Sync Incidents": {
            "API Root": "projects/154371241292/secrets/API_Root/versions/2"
        }
    }
}

作业输入

同步集成凭据作业需要以下配置参数:

参数 说明
Environment Name

必填。

要在其中查询目标配置的环境上下文的名称。

默认值为 Default Environment。对于以共享环境为目标的设置,请提供 *。

Credential Mapping

必填。

一个有效的 JSON 字符串,用于构建目标位置,其中集成实例、连接器和作业映射到其明确的 Secret Manager 资源坐标。

Service Account JSON

可选。

专用于为此后台同步作业授权的服务账号密钥 JSON 内容。

Project ID

可选。

托管目标资源的默认 Google Cloud 项目 ID 范围。

Workload Identity Email

可选。

如果是在启用了 Workload Identity 的 Google Cloud 基础架构中运行,则为要模拟的应用默认凭证服务账号电子邮件。

Verify SSL

必填。

在同步任务期间验证 SSL 证书端点。默认处于启用状态 (True)。

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