19.2. Google 워크로드 ID 페더레이션 구성
RHACS 통합은 워크로드 ID 를 사용하여 Google Cloud Platform에 대해 인증할 수 있습니다. 생성 시 워크로드 ID 사용 옵션을 선택하여 Google Cloud 통합에서 워크로드 ID 인증을 활성화합니다.
워크로드 ID를 통해 RHACS Pod와 연결된 Google 서비스 계정에는 통합에 필요한 IAM 권한이 있어야 합니다. 예를 들어 Google Artifact Registry와 통합하기 위한 워크로드 ID를 설정하려면 roles/artifactregistry.reader 역할과 서비스 계정을 연결합니다. Google IAM 역할에 대한 자세한 내용은 Configure roles and permissions 를 참조하십시오.
19.2.1. Google Kubernetes Engine(GKE) 구성
GKE에서 RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 실행하는 경우 Google 워크로드 ID를 통해 수명이 짧은 토큰을 구성할 수 있습니다.
사전 요구 사항
- 클러스터 및 통합 리소스가 포함된 Google Cloud 프로젝트에 액세스할 수 있어야 합니다.
프로세스
- GKE 용 워크로드 ID 페더레이션을 사용하려면 Google Cloud Platform 설명서의 지침을 따르십시오.
다음 명령을 실행하여 RHACS 서비스 계정에 주석을 답니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc annotate serviceaccount \ central \ --namespace stackrox \ iam.gke.io/gcp-service-account=<GSA_NAME>@<GSA_PROJECT>.iam.gserviceaccount.com
$ 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에서 RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 실행할 때 Google 워크로드 ID를 통해 수명이 짧은 토큰을 구성할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 서비스 계정 서명자 키가 있는 공개 OIDC 구성 버킷이 있어야 합니다. OpenShift Container Platform 클러스터의 OIDC 구성을 가져오는 권장 방법은 단기 인증 정보 지침에 대해 수동 모드에서 Cloud Credential Operator 를 사용하는 것입니다.
- roles/iam.workloadIdentityPoolAdmin 역할을 사용하여 Google Cloud 프로젝트에 액세스합니다.
프로세스
워크로드 ID 풀 관리의 지침에 따라 워크로드 ID 풀 을 생성합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gcloud iam workload-identity-pools create rhacs-pool \ --location="global" \ --display-name="RHACS workload pool"
$ gcloud iam workload-identity-pools create rhacs-pool \ --location="global" \ --display-name="RHACS workload pool"
워크로드 ID 풀 공급자 관리 지침에 따라 워크로드 ID 풀 공급자를 생성합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ 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 서비스 계정을 워크로드 ID 풀에 연결합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"
$ 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
- 위임된 검사의 경우 제목을 system:serviceaccount:stackrox:sensor 로 설정합니다.
STS(보안 토큰 서비스) 구성이 포함된 서비스 계정 JSON을 생성합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "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" } } }
{ "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 네임스페이스에 대한 시크릿으로 사용합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Secret metadata: name: gcp-cloud-credentials namespace: stackrox data: credentials: <base64_encoded_json>
apiVersion: v1 kind: Secret metadata: name: gcp-cloud-credentials namespace: stackrox data: credentials: <base64_encoded_json>