第18章 有効期間の短いトークンを使用した RHACS の統合
Red Hat Advanced Cluster Security for Kubernetes (RHACS) を使用すると、有効期間の短いトークンを使用して、選択したクラウドプロバイダー API に対して認証できます。RHACS は、次のクラウドプロバイダー統合をサポートしています。
- Secure Token Service (STS) を使用する Amazon Web Services (AWS)
- Workload Identity 連携を使用する Google Cloud Platform (GCP)
RHACS は、次のプラットフォームに RHACS をインストールする場合にのみ、有効期間の短いトークンによる統合をサポートします。
- AWS 上の Elastic Kubernetes Service (EKS)
- GCP 上の Google Kubernetes Engine (GKE)
- OpenShift Container Platform
有効期間の短い認証を有効にするには、Kubernetes または OpenShift Container Platform クラスターとクラウドプロバイダーの間に信頼関係を確立する必要があります。EKS および GKE クラスターの場合は、クラウドプロバイダーのメタデータサービスを使用します。OpenShift Container Platform クラスターの場合は、OpenShift Container Platform サービスアカウント署名者キーを含む、公開されている OpenID Connect (OIDC) プロバイダーバケットが必要です。
有効期間の短いトークンによる統合を使用するすべての Central クラスターで、クラウドプロバイダーとの信頼関係を確立する必要があります。ただし、有効期間の短いトークンイメージによる統合とスキャン委譲を組み合わせて使用する場合は、Sensor クラスターでも信頼関係を確立する必要があります。
18.1. AWS Secure Token Service の設定
RHACS の統合では、Secure Token Service を使用して Amazon Web Services に対して認証できます。統合の Use container IAM role オプションを有効にするには、RHACS で AssumeRole
を設定する必要があります。
RHACS の Pod に関連付けられた AWS ロールには、統合に必要な IAM 権限が必要です。たとえば、Elastic Container Registry と統合するためのコンテナーロールを設定するには、レジストリーへの完全な読み取りアクセスを有効にしてください。AWS IAM ロールの詳細は、IAM roles を参照してください。
18.1.1. Elastic Kubernetes Service (EKS) の設定
EKS で Red Hat Advanced Cluster Security for Kubernetes (RHACS) を実行する場合、Amazon Secure Token Service を通じて有効期間の短いトークンを設定できます。
手順
次のコマンドを実行して、EKS クラスターの IAM OpenID Connect (OIDC) プロバイダーを有効にします。
$ eksctl utils associate-iam-oidc-provider --cluster <cluster_name> --approve
- EKS クラスターの IAM ロールを作成し ます。
ロールの権限ポリシーを編集し、統合に必要な権限を付与します。以下に例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "ecr:ListImages" ], "Resource": "arn:aws:iam::<ecr_registry>:role/<role_name>" } ] }
引き受けるロールの信頼関係を更新します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<ecr-registry>:role/<role_name>" 1 ] }, "Action": "sts:AssumeRole" } ] }
- 1
<role_name>
は、前の手順で作成した新しいロールと一致している必要があります。
次のコマンドを入力して、新しく作成したロールをサービスアカウントに関連付けます。
$ oc -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role_name> 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
次のコマンドを入力して Central Pod を再起動し、変更を適用します。
$ oc -n stackrox delete pod -l "app in (central,sensor)" 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
18.1.2. OpenShift Container Platform の設定
OpenShift Container Platform で Red Hat Advanced Cluster Security for Kubernetes (RHACS) を実行する場合、Amazon Secure Token Service を通じて有効期間の短いトークンを設定できます。
前提条件
- OpenShift Container Platform サービスアカウント署名者キーを含むパブリックな OpenID Connect (OIDC) 設定バケットがある。OpenShift Container Platform クラスターの OIDC 設定を取得するには、Cloud Credential Operator in manual mode for short-term credentials の手順を使用することを推奨します。
- AWS IAM へのアクセス権と、ロールを作成および変更する権限がある。
手順
-
Creating OpenID Connect (OIDC) identity providers の手順に従って、OpenShift Container Platform クラスターの Web アイデンティティーを作成します。
openshift
を Audience の値として使用します。 - OpenShift Container Platform クラスターの Web アイデンティティー用の IAM ロールを作成 します。
ロールの権限ポリシーを編集し、統合に必要な権限を付与します。以下に例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "ecr:ListImages" ], "Resource": "arn:aws:iam::<ecr_registry>:role/<role_name>" } ] }
引き受けるロールの信頼関係を更新します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "<oidc_provider_arn>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "<oidc_provider_name>:aud": "openshift" } } } ] }
Central または Sensor デプロイメントで次の RHACS 環境変数を設定します。
AWS_ROLE_ARN=<role_arn> AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/openshift/serviceaccount/token