使用工作负载身份联合对远程代理进行身份验证
本文档介绍了如何使用工作负载身份联合 (WIF) 为 Google SecOps 远程代理配置无密钥身份验证。工作负载身份联合无需在远程代理主机环境中下载、管理和存储长期有效的服务账号 JSON 密钥文件。
借助工作负载身份联合,在外部云提供方、本地基础设施、Kubernetes 集群或 CI/CD 流水线上运行的远程代理可以使用从其外部身份提供方派生的短期有效的联合 Google Cloud 访问令牌。
准备工作
在配置工作负载身份联合之前,请验证以下前提条件:
- 最低远程代理版本为 2.6.2 或更高版本。
- 配置工作负载身份联合的用户必须在 Google Cloud 中拥有创建和管理工作负载身份池 (
roles/iam.workloadIdentityPoolAdmin) 和服务账号 (roles/iam.serviceAccountAdmin) 所需的 IAM 权限。 - 在 Google Cloud 中创建的具有 Chronicle SOAR 远程代理角色 (
roles/chronicle.soarAgent) 的专用服务账号。如需了解创建服务账号的步骤,请参阅创建服务账号。 - 对外部身份提供方(AWS、Azure、Active Directory/ADFS、Kubernetes、CI/CD 流水线、X.509 CA 或自定义 OIDC/SAML 提供方)的访问权限。
第 1 步:创建工作负载身份池和提供方
在 Google Cloud中,工作负载身份池用于管理外部身份,而工作负载身份提供方用于定义外部 IdP 与 Google Cloud之间的连接参数。
- 在 Google Cloud 控制台中,前往工作负载身份池页面。 前往“工作负载身份池”
- 点击创建池。
- 输入池的名称和说明(例如
soar-remote-agent-pool)。 - 点击继续。
- 在向池中添加提供方部分,选择提供方类型,然后输入提供方连接详细信息(例如 AWS 账号 ID 或 OIDC 颁发者和受众群体),这些信息可从上方的提供方指南中找到。
- 在配置属性映射部分中,按照提供方的指南中的规定,将外部令牌中的声明(例如
google.subject=assertion.sub)映射到 Google Cloud IAM 属性。 - 点击保存。
第 2 步:授予服务账号模拟权限
允许工作负载身份池中的外部身份模拟远程代理服务账号。
- 在 Google Cloud 控制台中,前往服务账号页面。
- 选择您的远程代理服务账号。
- 点击具有访问权限的主账号标签页。
- 点击授予访问权限。
- 在新的主账号字段中,输入与您的工作负载身份池对应的主账号标识符:
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
- 在选择角色列表中,选择 Workload Identity User (
roles/iam.workloadIdentityUser)。 - 点击保存。
第 3 步:下载或生成外部账号凭据 (agent-key.json)
在远程代理宿主机上,使用以下任一选项获取名为 agent-key.json 的外部账号凭据配置文件。
方案 A:从 Google Cloud 控制台下载(推荐)
- 在 Google Cloud 控制台中,前往工作负载身份池页面。
- 选择您的工作负载身份池,然后点击授予访问权限。
- 在授予访问权限面板中,选择使用服务账号模拟授予访问权限。
- 在选择服务账号列表中,选择您的远程代理服务账号。
- 在选择主账号(可以访问服务账号的身份)部分中,指定哪些身份可以访问服务账号(例如,选择属性名称和值)。
- 点击保存。
- 在配置应用窗口中:
- 选择您的工作负载身份提供方。
- 在 OIDC ID 令牌路径字段中,输入外部令牌装载或存储的确切文件路径(对于 Kubernetes 投影令牌,此路径必须与 Pod 清单中定义的
mountPath+path匹配,例如/var/run/secrets/tokens/gcp-kms-token)。 - 将格式类型设置为文本(原始 JWT 字符串)。请勿为标准令牌文件选择 JSON。
- 点击下载配置,然后将文件另存为
agent-key.json(或将下载的文件重命名为agent-key.json)。
- 将
agent-key.json文件传输到远程代理宿主机。
选项 B:使用 gcloud CLI 生成
运行 gcloud iam workload-identity-pools create-cred-config 命令以生成凭证配置文件:
gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --output-file=agent-key.json \ --credential-source-file=/var/run/secrets/tokens/gcp-kms-token
示例配置文件参考
供参考,生成的 agent-key.json 文件包含类似于以下内容的结构:
{ "type": "external_account", "audience": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:jwt", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "/var/run/secrets/tokens/gcp-kms-token" }, "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateAccessToken" }
第 4 步:在 Google SecOps 中映射服务账号
在部署远程代理之前,请在 Google SecOps 中授权服务账号电子邮件地址:
- 依次前往 SOAR 设置 > 高级 > 群组映射。
- 依次点击添加 添加。
- 在添加角色对话框中,在 IAM 角色 / IdP 群组字段中输入完整的服务账号电子邮件地址。
- 选择远程代理将管理的相应环境。
- 点击 Add(添加)。
第 5 步:部署或更新远程代理身份验证
Podman
如需在 Podman 上配置远程代理身份验证,请按照以下步骤操作:
-
列出正在运行的 Podman 容器:
podman ps -
输入代理的容器 ID:
CONTAINER_ID
-
使用以下命令将凭证配置文件复制到容器中的专用路径:
podman cp PATH_TO_AGENT_KEY/agent-key.json CONTAINER_ID:/opt/SiemplifyAgent/agent-key.json
-
使用以下命令更改容器中凭据配置文件的所有者:
podman exec -u 0 CONTAINER_ID chown siemplify_agent:siemplify_agent /opt/SiemplifyAgent/agent-key.json
-
运行以下命令以应用更改:
podman restart CONTAINER_ID
Docker
如需在 Docker 上配置远程代理身份验证,请按以下步骤操作:
-
列出正在运行的 Docker 容器:
docker ps -
输入代理的容器 ID:
CONTAINER_ID
-
使用以下命令将凭证配置文件复制到容器中的专用路径:
docker cp PATH_TO_AGENT_KEY/agent-key.json CONTAINER_ID:/opt/SiemplifyAgent/agent-key.json
-
使用以下命令更改容器中凭据配置文件的所有者:
docker exec -u 0 CONTAINER_ID chown siemplify_agent:siemplify_agent /opt/SiemplifyAgent/agent-key.json
-
运行以下命令以应用更改:
docker restart CONTAINER_ID
安装程序
如需在 CentOS/RHEL 上配置远程代理身份验证,请按以下步骤操作:
-
将凭据配置文件移至预期路径:
mv PATH_TO_AGENT_KEY/agent-key.json /opt/SiemplifyAgent/agent-key.json
-
使用以下命令更改凭证配置文件的所有者:
chown siemplify_agent:siemplify_agent /opt/SiemplifyAgent/agent-key.json
-
运行以下命令以重启代理服务:
supervisorctl restart siemplify_agent
相关文档
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。