1.3. イメージレジストリーを手動で設定する
GCR を使用している場合、イメージレジストリー統合を手動で作成する必要があります。
1.3.1. OpenShift Container Platform レジストリーの手動設定
Red Hat Advanced Cluster Security for Kubernetes を OpenShift Container Platform のビルトインコンテナーイメージレジストリーと統合できます。
前提条件
- OpenShift Container Platform レジストリーでの認証にはユーザー名とパスワードが必要。
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで、Generic Docker Registry を選択します。
- New integration をクリックします。
以下のフィールドに詳細を記入します。
- Integration name: インテグレーションの名前。
- Endpoint: レジストリーのアドレス。
- UsernameとPassword
- レジストリーへの接続時に TLS 証明書を使用していない場合は、Disable TLS certificate validation (insecure) を選択します。
- レジストリーへの接続をテストせずに統合を作成する場合は、Create integration without testing を選択します。
- Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
- Save を選択します。
1.3.2. Amazon Elastic Container Registry を手動で設定する
Red Hat Advanced Cluster Security for Kubernetes を使用して、Amazon Elastic Container Registry (ECR) の統合を手動で作成および変更できます。Amazon ECR からデプロイする場合、Amazon ECR レジストリーのインテグレーションは通常自動的に生成されます。ただし、デプロイメント外のイメージをスキャンするために、独自にインテグレーションを作成したい場合があります。自動生成されるインテグレーションのパラメーターを変更することもできます。たとえば、自動生成された Amazon ECR 統合で使用される認証方法を変更して、AssumeRole 認証またはその他の承認モデルを使用することができます。
自動生成される ECR 統合に加えた変更を消去するには、統合を削除し、Red Hat Advanced Cluster Security for Kubernetes は Amazon ECR からイメージをデプロイする際に自動生成されるパラメーターで新しい統合を作成します。
前提条件
-
Amazon Identity and Access Management (IAM) アクセスキー ID およびシークレットアクセスキーが必要です。または、
kiam
やkube2iam
などのノードレベルの IAM プロキシーを使用することもできる。 - アクセスキーには、ECR への読み取りアクセス権が必要。詳細は、How do I create an AWS access key? を参照のこと。
Amazon Elastic Kubernetes Service (EKS) で Red Hat Advanced Cluster Security for Kubernetes を実行していて、別の Amazon アカウントの ECR と統合する場合は、最初に ECR でリポジトリーポリシーステートメントを設定する必要があります。Setting a repository policy statement の手順に従い、Actions で、Amazon ECR API オペレーションの次のスコープを選択する。
- ecr:BatchCheckLayerAvailability
- ecr:BatchGetImage
- ecr:DescribeImages
- ecr:GetDownloadUrlForLayer
- ecr:ListImages
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで Amazon ECR を選択します。
- New integration をクリックするか、自動生成されたインテグレーションのいずれかをクリックして開き、Edit をクリックします。
以下のフィールドの詳細を入力または変更します。
- Update stored credentials: アクセスキーやパスワードなどのクレデンシャルを更新せずにインテグレーションを変更する場合には、このボックスをクリアします。
- Integration name: インテグレーションの名前。
- Registry ID: レジストリーの ID。
- Endpoint: レジストリーのアドレス。この値は、Amazon ECR にプライベート仮想プライベートクラウド (VPC) エンドポイントを使用する場合にのみ必要です。このフィールドは、AssumeRole オプションが選択されている場合には有効ではありません。
-
Region: レジストリーのリージョン (例:
us-west-1
)。
- IAM を使用している場合は、Use Container IAM role を選択します。それ以外の場合は、Use Container IAM role ボックスの選択を解除し、アクセス Access key ID および Secret access key を入力します。
AssumeRole 認証を使用している場合は、Use AssumeRole を選択し、以下のフィールドの詳細を入力します。
- AssumeRole ID: 引き受けるロールの ID。
- AssumeRole External ID (オプション): AssumeRole で外部 ID を使用している場合は、ここに入力できます。
- レジストリーへの接続をテストせずに統合を作成する場合は、Create integration without testing を選択します。
- Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
- Save を選択します。
1.3.2.1. Amazon ECR で assumerole を使用する
AssumeRole を使用すると、各ユーザーのパーミッションを手動で設定しなくても、AWS リソースへのアクセスを許可できます。代わりに、必要な権限を持つロールを定義して、ユーザーにそのロールを引き受けるためのアクセス権が付与されるようにすることができます。AssumeRole
を使用すると、よりきめ細かい権限を付与、取り消し、またはその他の方法で一般的に管理できます。
1.3.2.1.1. コンテナー IAM を使用した AssumeRole の設定
Red Hat Advanced Cluster Security for Kubernetes で AssumeRole を使用する前に、まずそれを設定する必要があります。
手順
EKS クラスターの IAM OIDC プロバイダーを有効にします。
$ eksctl utils associate-iam-oidc-provider --cluster <cluster name> --approve
- EKS クラスターの IAM ロールを作成し ます。
新しく作成したロールをサービスアカウントに関連付けます。
$ kubectl -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role-name>
Central を再起動して、変更を適用します。
$ kubectl -n stackrox delete pod -l app=central
必要に応じて、ロールが別のロールを引き受けることを許可するポリシーにロールを割り当てます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<ecr-registry>:role/<assumerole-readonly>" 1 } ] }
- 1
<assumerole-readonly>
を引き受けたいロールに置き換えます。
引き受けるロールの信頼関係を更新します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<ecr-registry>:role/<role-name>" 1 ] }, "Action": "sts:AssumeRole" } ] }
- 1
<role-name>
は、以前に作成した新しいロールと一致する必要があります。
1.3.2.1.2. コンテナー IAM を使用せずに AssumeRole を設定する
コンテナー IAM なしで AssumeRole を使用するには、アクセスと秘密鍵を使用して、プログラムによるアクセス権を持つ AWS ユーザー として認証する必要があります。
手順
AssumeRole ユーザーが ECR レジストリーと同じアカウントにあるか、別のアカウントにあるかに応じて、次のいずれかを行う必要があります。
ロールを引き受けるユーザーが ECR レジストリーと同じアカウントにいる場合は、必要な権限で新しいロールを作成します。
注記ロールを作成するときに、必要に応じて任意の信頼できるエンティティーを選択できます。ただし、作成後に変更する必要があります。
または、ユーザーが ECR レジストリーとは異なるアカウントにいる場合は、ECR レジストリーにアクセスし、その信頼関係を定義するためのアクセス許可を提供する必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<ecr-registry>:role/<assumerole-readonly>" 1 } ] }
- 1
<assumerole-readonly>
を引き受けたいロールに置き換えます。
Principal フィールドの下にユーザー ARN を含めることにより、ロールの信頼関係を設定します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<ecr-registry>:user/<role-name>" ] }, "Action": "sts:AssumeRole" } ] }
1.3.2.1.3. RHACS での AssumeRole の設定
ECR で AssumeRole を設定した後、AssumeRole を使用して、Red Hat Advanced Cluster Security for Kubernetes を Amazon Elastic Container Registry (ECR) と統合できます。
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで Amazon ECR を選択します。
- New Integration をクリックします。
以下のフィールドに詳細を記入します。
- Integration Name: 統合の名前。
- Registry ID: レジストリーの ID。
-
Region: レジストリーのリージョン (例:
us-west-1
)。
- IAM を使用している場合は、Use container IAM role を選択します。それ以外の場合は、Use custom IAM role ボックスの選択を解除し、Access key ID および Secret access key を入力します。
AssumeRole を使用している場合は、Use AssumeRole を選択し、以下のフィールドの詳細を入力します。
- AssumeRole ID: 引き受けるロールの ID。
- AssumeRole External ID (オプション): AssumeRole で外部 ID を使用している場合は、ここに入力できます。
- Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
- Save を選択します。
1.3.3. Google Container Registry の手動設定
Red Hat Advanced Cluster Security for Kubernetes を Google Container Registry (GCR) と統合できます。
前提条件
- 認証用の Workload Identity またはサービスアカウントキーがある。
- 関連付けられたサービスアカウントでレジストリーにアクセスできる。ユーザーおよび他のプロジェクトに GCR へのアクセスを許可する方法は、Configuring access control を参照してください。
GCR Container Analysis を使用している場合は、サービスアカウントに次のロールも付与する必要があります。
- コンテナー分析ノートビューアー
- コンテナー分析発生状況ビューアー
- ストレージオブジェクトビューアー
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで、Google Container Registry を選択します。
- New integration をクリックします。
以下のフィールドに詳細を記入します。
- Integration name: インテグレーションの名前。
- Type: Registry を選択します。
- Registry Endpoint: レジストリーのアドレス。
- Project: Google Cloud プロジェクト名。
- Use workload identity: Workload Identity を使用して認証する場合は、チェックボックスをオンにします。
- Service account key (JSON): 認証用のサービスアカウントキー。
- レジストリーへの接続をテストせずに統合を作成する場合は、Create integration without testing を選択します。
- Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
- Save を選択します。
1.3.4. Google Artifact レジストリーの手動設定
Red Hat Advanced Cluster Security for Kubernetes を Google Artifact Registry と統合できます。
前提条件
- 認証用の Workload Identity またはサービスアカウントキーがある。
-
関連付けられたサービスアカウントに、Artifact Registry Reader アイデンティティーおよびアクセス管理 (IAM) ロールの
role/artifactregistry.reader
がある。
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで、Google Artifact Registry を選択します。
- New integration をクリックします。
以下のフィールドに詳細を記入します。
- Integration name: インテグレーションの名前。
- Registry endpoint: レジストリーのアドレス。
- Project: Google Cloud プロジェクト名。
- Use workload identity: Workload Identity を使用して認証する場合は、チェックボックスをオンにします。
- Service account key (JSON): 認証用のサービスアカウントキー。
- レジストリーへの接続をテストせずに統合を作成する場合は、Create integration without testing を選択します。
- Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
- Save を選択します。
1.3.5. Microsoft Azure Container Registry の手動設定
Red Hat Advanced Cluster Security for Kubernetes を Microsoft Azure と統合できます。
前提条件
- 認証には、ユーザー名とパスワードが必要です。
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで Microsoft Azure Container Registry を選択します。
- New integration をクリックします。
以下のフィールドに詳細を記入します。
- Integration name: インテグレーションの名前。
- Endpoint: レジストリーのアドレス。
- UsernameとPassword
- レジストリーへの接続をテストせずに統合を作成する場合は、Create integration without testing を選択します。
- Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
- Save を選択します。
1.3.6. JFrog Artifactory の手動設定
Red Hat Advanced Cluster Security for Kubernetes を JFrog Artifactory と統合できます。
前提条件
- JFrog Artifactory で認証するには、ユーザー名とパスワードが必要。
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで、JFrog Artifactory を選択します。
- New integration をクリックします。
以下のフィールドに詳細を記入します。
- Integration name: インテグレーションの名前。
- Endpoint: レジストリーのアドレス。
- UsernameとPassword
- レジストリーへの接続時に TLS 証明書を使用していない場合は、Disable TLS certificate validation (insecure) を選択します。
- レジストリーへの接続をテストせずに統合を作成する場合は、Create integration without testing を選択します。
- Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
- Save を選択します。
1.3.7. Quay Container Registry を手動で設定する
Red Hat Advanced Cluster Security for Kubernetes (RHACS) を Quay Container Registry と統合できます。次の方法を使用して、Quay と統合できます。
- Quay パブリックリポジトリー (レジストリー) との統合: この方法では認証は必要ありません。
- ロボットアカウントを使用した Quay プライベートレジストリーとの統合: この方法では、Quay で使用するロボットアカウントを作成する必要があります (推奨)。詳細は、Quay documentation を参照してください。
- Quay と統合して RHACS Scanner ではなく Quay スキャナーを使用する: この方法では API を使用し、認証に OAuth トークンが必要です。”Additional Resources” の ”Integrating with Quay Container Registry to scan images” を参照してください。
前提条件
- Quay プライベートレジストリーでの認証には、ロボットアカウントまたは OAuth トークン (非推奨) に関連付けられた資格情報が必要。
手順
-
RHACS ポータルで、Platform Configuration
Integrations に移動します。 - Image Integrations セクションで Red Hat Quay.io を選択します。
- New integration をクリックします。
- Integration name を入力します。
Endpoint またはレジストリーのアドレスを入力します。
- Quay パブリックリポジトリーと統合する場合は、Type で Registry を選択し、次の手順に進みます。
Quay プライベートレジストリーと統合する場合は、Type で Registry を選択し、次のフィールドに情報を入力します。
-
Robot username: Quay ロボットアカウントを使用してレジストリーにアクセスしている場合は、ユーザー名を
<namespace>+<accountname>
の形式で入力します。 - Robot password: Quay ロボットアカウントを使用してレジストリーにアクセスしている場合は、ロボットアカウントのユーザー名のパスワードを入力します。
- OAuth token: OAuth トークン (非推奨) を使用してレジストリーにアクセスしている場合は、このフィールドに入力します。
-
Robot username: Quay ロボットアカウントを使用してレジストリーにアクセスしている場合は、ユーザー名を
- オプション: レジストリーへの接続時に TLS 証明書を使用していない場合は、Disable TLS certificate validation (insecure) を選択します。
- オプション: テストを行わずにインテグレーションを作成するには、Create integration without testing を選択します。
- Save を選択します。
Quay インテグレーションを編集しているが資格情報を更新したくない場合は、Update stored credentials が選択されていないことを確認します。