使用 Workload Identity Federation 驗證遠端代理程式
本文說明如何使用 Workload Identity Federation (WIF),為 Google SecOps 遠端代理程式設定無金鑰驗證。有了 Workload Identity Federation,您就不必在遠端代理主機環境中下載、管理及儲存長期服務帳戶 JSON 金鑰檔案。
透過 Workload Identity Federation,在外部雲端服務供應商、地端部署基礎架構、Kubernetes 叢集或 CI/CD 管道上執行的遠端代理程式,會使用從外部身分識別提供者衍生的短期聯盟 Google Cloud 存取權杖。
事前準備
設定 Workload Identity Federation 前,請先確認下列必要條件:
- 遠端代理程式最低版本:2.6.2。
- 設定 Workload Identity Federation 的使用者必須在 Google Cloud 中具備必要的 IAM 權限,才能建立及管理 Workload Identity 集區 (
roles/iam.workloadIdentityPoolAdmin) 和服務帳戶 (roles/iam.serviceAccountAdmin)。 - 在 Google Cloud 中建立專屬服務帳戶,並指派 Chronicle SOAR Remote Agent 角色 (
roles/chronicle.soarAgent)。如需建立服務帳戶的步驟,請參閱「建立服務帳戶」。 - 存取外部身分識別提供者 (AWS、Azure、Active Directory/ADFS、Kubernetes、CI/CD 管道、X.509 CA 或自訂 OIDC/SAML 提供者)。
步驟 1:建立 workload identity pool 和提供者
在 Google Cloud中,workload identity pool 會管理外部身分,而 workload identity provider 則會定義外部 IdP 與 Google Cloud之間的連線參數。
- 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。 前往「Workload Identity Pools」(workload identity pool) 頁面
- 按一下「Create Pool」(建立集區)。
- 輸入集區的「名稱」和「說明」 (例如
soar-remote-agent-pool)。 - 按一下「繼續」。
- 在「Add a provider to pool」(將供應商新增至集區) 區段中,選取供應商類型,並輸入供應商連線詳細資料 (例如 AWS 帳戶 ID 或 OIDC 發行者和目標對象),詳情請參閱上方的供應商指南。
- 在「設定屬性對應」部分,將外部權杖中的聲明 (例如
google.subject=assertion.sub) 對應至 Google Cloud IAM 屬性,如供應商指南所述。 - 按一下 [儲存]。
步驟 2:授予服務帳戶模擬權限
允許工作負載身分集區中的外部身分模擬遠端代理程式服務帳戶。
- 前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面。
- 選取遠端代理程式服務帳戶。
- 按一下「具備存取權的主體」分頁標籤。
- 按一下「授予存取權」。
- 在「New principals」(新增主體) 欄位中,輸入與 workload identity pool 對應的主體 ID:
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
- 在「Select a role」(選取角色) 清單中,選取「Workload Identity User」(Workload Identity 使用者) (
roles/iam.workloadIdentityUser)。 - 按一下 [儲存]。
步驟 3:下載或產生外部帳戶憑證 (agent-key.json)
在遠端代理程式主機上,使用下列其中一個選項,取得名為 agent-key.json 的外部帳戶憑證設定檔。
方法 A:從 Google Cloud 控制台下載 (建議)
- 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 選取 Workload Identity Pool,然後按一下「授予存取權」。
- 在「授予存取權」面板中,選取「透過服務帳戶模擬功能授予存取權」。
- 在「選取服務帳戶」清單中,選取遠端代理程式服務帳戶。
- 在「選取主體 (可以存取服務帳戶的身分)」部分,指定哪些身分可以存取服務帳戶 (例如選取屬性名稱和值)。
- 按一下 [儲存]。
- 在「Configure your application」視窗中:
- 選取「Workload Identity Provider」。
- 在「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 設定」>「進階」>「群組對應」。
- 按一下「新增」。
- 在「Add Role」(新增角色) 對話方塊中,於「IAM Role / IdP group」(IAM 角色/IdP 群組) 欄位輸入服務帳戶的完整電子郵件地址。
- 選取遠端代理程式要管理的適當環境。
- 按一下「新增」。
步驟 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 專業人員尋求解答。