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 およびシークレットアクセスキーが必要です。または、kiamkube2iam などのノードレベルの 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

手順

  1. RHACS ポータルで、Platform Configuration Integrations に移動します。
  2. Image Integrations セクションで Amazon ECR を選択します。
  3. New integration をクリックするか、自動生成されたインテグレーションのいずれかをクリックして開き、Edit をクリックします。
  4. 以下のフィールドの詳細を入力または変更します。

    1. Update stored credentials: アクセスキーやパスワードなどのクレデンシャルを更新せずにインテグレーションを変更する場合には、このボックスをクリアします。
    2. Integration name: インテグレーションの名前。
    3. Registry ID: レジストリーの ID。
    4. Endpoint: レジストリーのアドレス。このフィールドは、AssumeRole オプションが選択されている場合には有効ではありません。
    5. Region: レジストリーのリージョン (例: us-west-1)。
  5. IAM を使用している場合は、Use Container IAM role を選択します。それ以外の場合は、Use Container IAM role ボックスの選択を解除し、アクセス Access key ID および Secret access key を入力します。
  6. AssumeRole 認証を使用している場合は、Use AssumeRole を選択し、以下のフィールドの詳細を入力します。

    1. AssumeRole ID: 引き受けるロールの ID。
    2. AssumeRole External ID (オプション): AssumeRole で外部 ID を使用している場合は、ここに入力できます。
  7. レジストリーへの接続をテストせずに統合を作成する場合は、Create integration without testing を選択します。
  8. Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
  9. 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 を使用する前に、まずそれを設定する必要があります。

手順

  1. EKS クラスターの IAM OIDC プロバイダーを有効にします。

    $ eksctl utils associate-iam-oidc-provider --cluster <cluster name> --approve
  2. EKS クラスターの IAM ロールを作成し ます。
  3. 新しく作成したロールをサービスアカウントに関連付けます。

    $ kubectl -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role-name>
  4. セントラルを再起動して、変更を適用します。

    $ kubectl -n stackrox delete pod -l app=central
  5. 必要に応じて、ロールが別のロールを引き受けることを許可するポリシーにロールを割り当てます。

    {
        "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> を引き受けたいロールに置き換えます。
  6. 引き受けるロールの信頼関係を更新します。

    {
      "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 ユーザー として認証する必要があります。

手順

  1. 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> を引き受けたいロールに置き換えます。
  2. 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) と統合できます。

手順

  1. RHACS ポータルで、Platform Configuration Integrations に移動します。
  2. Image Integrations セクションで Amazon ECR を選択します。
  3. New Integration をクリックします。
  4. 以下のフィールドに詳細を記入します。

    1. Integration Name: 統合の名前。
    2. Registry ID: レジストリーの ID。
    3. Region: レジストリーのリージョン (例: us-west-1)。
  5. IAM を使用している場合は、Use container IAM role を選択します。それ以外の場合は、Use custom IAM role ボックスの選択を解除し、Access key ID および Secret access key を入力します。
  6. AssumeRole を使用している場合は、Use AssumeRole を選択し、以下のフィールドの詳細を入力します。

    1. AssumeRole ID: 引き受けるロールの ID。
    2. AssumeRole External ID (オプション): AssumeRole で外部 ID を使用している場合は、ここに入力できます。
  7. Test を選択して、選択したレジストリーとの統合が機能していることをテストします。
  8. Save を選択します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.