19.2. 配置 Google 工作负载身份联邦
RHACS 集成可以使用 工作负载身份 对 Google Cloud Platform 进行身份验证。选择 Use workload identity 选项,在 Google Cloud 集成中启用工作负载身份身份验证。
通过工作负载身份与 RHACS pod 关联的 Google 服务帐户必须具有集成所需的 IAM 权限。例如,要设置与 Google Artifact Registry 集成的工作负载身份,请将服务帐户与 roles/artifactregistry.reader 角色连接。有关 Google IAM 角色的更多信息,请参阅配置角色和权限。
19.2.1. 配置 Google Kubernetes Engine (GKE) 复制链接链接已复制到粘贴板!
在 GKE 上运行 Red Hat Advanced Cluster Security for Kubernetes (RHACS)时,您可以通过 Google 工作负载身份配置简短的令牌。
先决条件
- 您必须有权访问包含集群和集成资源的 Google Cloud 项目。
流程
- 按照 Google Cloud Platform 文档中的说明,为 GKE 使用工作负载身份联合。
运行以下命令来注解 RHACS 服务帐户:
$ oc annotate serviceaccount \1 central \2 --namespace stackrox \ iam.gke.io/gcp-service-account=<GSA_NAME>@<GSA_PROJECT>.iam.gserviceaccount.com
19.2.2. 配置 OpenShift Container Platform 复制链接链接已复制到粘贴板!
您可以在 OpenShift Container Platform 上运行 Red Hat Advanced Cluster Security for Kubernetes (RHACS)时,通过 Google 工作负载身份配置简短令牌。
先决条件
- 您必须使用 OpenShift Container Platform 服务帐户签名程序密钥有一个公共 OIDC 配置存储桶。获取 OpenShift Container Platform 集群的 OIDC 配置的建议方法是以手动模式使用 Cloud Credential Operator 来获取短期凭证 说明。
- 使用 roles/iam.workloadIdentityPoolAdmin 角色访问 Google Cloud 项目。
流程
按照 Manage workload identity pool 中的说明,创建工作负载身份池。例如:
$ gcloud iam workload-identity-pools create rhacs-pool \ --location="global" \ --display-name="RHACS workload pool"按照 Manage workload identity pool provider 中的说明,创建工作负载身份提供程序。例如:
$ gcloud iam workload-identity-pools providers create-oidc rhacs-provider \ --location="global" \ --workload-identity-pool="rhacs-pool" \ --display-name="RHACS provider" \ --attribute-mapping="google.subject=assertion.sub" \ --issuer-uri="https://<oidc_configuration_url>" \ --allowed-audiences=openshift将 Google 服务帐户连接到工作负载身份池。例如:
$ gcloud iam service-accounts add-iam-policy-binding <GSA_NAME>@<GSA_PROJECT>.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member="principal://iam.googleapis.com/projects/<GSA_PROJECT_NUMBER>/locations/global/workloadIdentityPools/rhacs-provider/subject/system:serviceaccount:stackrox:central"1 - 1
- 要进行委派的扫描,请将 subject 设置为 system:serviceaccount:stackrox:sensor。
创建包含安全令牌服务(STS)配置的服务帐户 JSON。例如:
{ "type": "external_account", "audience": "//iam.googleapis.com/projects/<GSA_PROJECT_ID>/locations/global/workloadIdentityPools/rhacs-pool/providers/rhacs-provider", "subject_token_type": "urn:ietf:params:oauth:token-type:jwt", "token_url": "https://sts.googleapis.com/v1/token", "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/<GSA_NAME>@<GSA_PROJECT>.iam.gserviceaccount.com:generateAccessToken", "credential_source": { "file": "/var/run/secrets/openshift/serviceaccount/token", "format": { "type": "text" } } }使用服务帐户 JSON 作为 RHACS 命名空间的 secret:
apiVersion: v1 kind: Secret metadata: name: gcp-cloud-credentials namespace: stackrox data: credentials: <base64_encoded_json>