Amazon ECRインターフェイスVPCエンドポイント (AWS PrivateLink) - Amazon ECR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon ECRインターフェイスVPCエンドポイント (AWS PrivateLink)

インターフェイスVPCエンドポイントを使用するECRように Amazon を設定VPCすることで、 のセキュリティ体制を改善できます。VPC エンドポイントは AWS PrivateLink、プライベート IP アドレスECRAPIsを介して Amazon にプライベートにアクセスできるテクノロジーである を利用しています。 AWS PrivateLink は、 VPC と Amazon 間のすべてのネットワークトラフィックを Amazon ネットワークECRに制限します。インターネットゲートウェイ、NATデバイス、仮想プライベートゲートウェイは必要ありません。

AWS PrivateLink とエンドポイントの詳細についてはVPC、「Amazon VPC ユーザーガイドVPC」の「エンドポイント」を参照してください。

Amazon ECRVPCエンドポイントに関する考慮事項

Amazon のVPCエンドポイントを設定する前にECR、次の考慮事項に注意してください。

  • Amazon EC2インスタンスでホストされている Amazon ECSタスクが Amazon からプライベートイメージをプルできるようにするにはECR、Amazon のインターフェイスVPCエンドポイントを作成しますECS。詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「インターフェイスVPCエンドポイント (AWS PrivateLink)」を参照してください。

  • Amazon からコンテナイメージをプルする Fargate でホストされている Amazon ECSタスクECRは、タスクのタスク実行IAMロールに条件キーを追加することで、タスクVPCが使用する特定の およびサービスが使用するVPCエンドポイントへのアクセスを制限できます。詳細については、「Amazon Elastic Container Service IAM デベロッパーガイド」の「インターフェイスエンドポイント経由で Amazon ECRイメージをプルする Fargate タスクのオプションアクセス許可」を参照してください。

  • VPC エンドポイントにアタッチされたセキュリティグループは、 のプライベートサブネットからのポート 443 での受信接続を許可する必要がありますVPC。

  • VPC エンドポイントは現在、クロスリージョンリクエストをサポートしていません。Amazon へのAPI呼び出しを発行する予定のリージョンと同じリージョンにVPCエンドポイントを作成してくださいECR。

  • VPC エンドポイントは現在、Amazon ECR Public リポジトリをサポートしていません。プルスルーキャッシュルールを使用して、VPCエンドポイントと同じリージョンのプライベートリポジトリにパブリックイメージをホストすることを検討してください。詳細については、「アップストリームレジストリと Amazon ECRプライベートレジストリを同期する」を参照してください。

  • VPC エンドポイントは、Amazon Route 53 DNSを通じてのみサポート AWS されます。独自の を使用する場合はDNS、条件付きDNS転送を使用できます。詳細については、「Amazon VPCユーザーガイドDHCP」の「オプションセット」を参照してください。

  • コンテナに Amazon S3 への既存の接続がある場合、Amazon S3 ゲートウェイエンドポイントを追加すると接続が一時的に中断される場合があります。この中断を回避するには、Amazon S3 ゲートウェイエンドポイントVPCを使用する新しい を作成し、Amazon ECSクラスターとそのコンテナを新しい に移行しますVPC。 Amazon S3

  • プルスルーキャッシュルールを使用してイメージを初めてプルする場合、 を使用して AWS PrivateLink インターフェイスVPCエンドポイントを使用するECRように Amazon を設定した場合はVPC、NATゲートウェイを使用して同じ にパブリックサブネットを作成し、プルを機能させるためにプライベートサブネットからNATゲートウェイにすべてのアウトバウンドトラフィックをインターネットにルーティングする必要があります。その後のイメージプルでは、これは必要ありません。詳細については、Amazon Virtual Private Cloud ユーザーガイドの「シナリオ: プライベートサブネットからインターネットにアクセスする」を参照してください。

Windows イメージに関する考慮事項

Windows オペレーティングシステムに基づくイメージには、ライセンスによって配布が制限されているアーティファクトが含まれます。デフォルトでは、Windows イメージを Amazon ECRリポジトリにプッシュすると、これらのアーティファクトを含むレイヤーは外部レイヤー と見なされるためプッシュされません。アーティファクトが Microsoft によって提供されている場合、外部レイヤーは Microsoft Azure インフラストラクチャから取得されます。このため、コンテナが Azure からこれらの外部レイヤーをプルできるようにするには、VPCエンドポイントを作成する以外にも追加のステップが必要です。

Docker デーモンの --allow-nondistributable-artifactsフラグECRを使用して Windows イメージを Amazon にプッシュするときに、この動作を上書きできます。有効にすると、このフラグはライセンスレイヤーを Amazon にプッシュします。ECRこれにより、Azure への追加のアクセスを必要とせずにVPC、エンドポイントECR経由でこれらのイメージを Amazon からプルできます。

重要

この --allow-nondistributable-artifacts フラグを使用しても、Windows コンテナベースイメージライセンスの条項に従う義務が排除されるわけではありません。したがって、パブリックまたはサードパーティーによる再配布のために Windows コンテンツを投稿することはできません。お客様自身の環境内での使用は許可されています。

Docker インストールでこのフラグを使用できるようにするには、Docker デーモン設定ファイルを変更する必要があります。通常は Docker インストールに応じて、[Docker エンジン] セクションの設定または環境設定メニューで設定するか、直接 C:\ProgramData\docker\config\daemon.json ファイルを編集できます。

以下に示しているのは、必要な設定の例です。値を、イメージをプッシュURIするリポジトリに置き換えます。

{ "allow-nondistributable-artifacts": [ "111122223333.dkr.ecr.us-west-2.amazonaws.com" ] }

Docker デーモン設定ファイルを変更したら、イメージをプッシュする前に Docker デーモンを再起動する必要があります。ベースレイヤーがリポジトリにプッシュされたことを確認して、プッシュが成功したことを確認します。

注記

Windows イメージのベースレイヤーは大きくなります。レイヤーサイズにより、プッシュに時間がかかり、これらのイメージECRのストレージコストが増大します。これらの理由から、このオプションは、構築時間と継続的なストレージコストを削減することが厳密に要求される場合にのみ使用することをお勧めします。例えば、Amazon で圧縮した場合、mcr.microsoft.com/windows/servercoreイメージのサイズは約 1.7 GiB ですECR。

Amazon のVPCエンドポイントを作成する ECR

Amazon ECRサービスのVPCエンドポイントを作成するには、「Amazon ユーザーガイド」の「インターフェイスエンドポイントの作成VPC」の手順を使用します。

Amazon EC2インスタンスでホストされる Amazon ECSタスクには、Amazon ECRエンドポイントと Amazon S3 ゲートウェイエンドポイントの両方が必要です。

プラットフォームバージョン 1.4.0 以降を使用して Fargate でホストされる Amazon ECSタスクには、Amazon ECRVPCエンドポイントと Amazon S3 ゲートウェイエンドポイントの両方が必要です。

プラットフォームバージョン 1.3.0以前を使用する Fargate でホストされる Amazon ECSタスクは、com.amazonaws のみを必要とします。region.ecr.dkr Amazon ECRVPCエンドポイントと Amazon S3 ゲートウェイエンドポイント。

注記

エンドポイントが作成される順序は重要ではありません。

com.amazonaws。region.ecr.dkr

このエンドポイントは Docker レジストリ に使用されますAPIs。pushpull などの Docker クライアントコマンドでは、このエンドポイントが使用されます。

このエンドポイントを作成するときは、プライベートDNSホスト名を有効にする必要があります。これを行うには、VPCエンドポイントの作成時に Amazon VPCコンソールで プライベートDNS名を有効にする オプションが選択されていることを確認します。

com.amazonaws。region.ecr.api
注記

指定された region は、米国東部 (オハイオ) リージョンの などECR、Amazon で AWS サポートされているリージョンus-east-2のリージョン識別子を表します。

このエンドポイントは、Amazon ECR への呼び出しに使用されますAPI。API DescribeImagesや などの アクションは、このエンドポイントCreateRepositoryに移動します。

このエンドポイントが作成されると、プライベートDNSホスト名を有効にするオプションがあります。VPC エンドポイントの作成時にVPCコンソールでプライベートDNS名を有効にするを選択して、この設定を有効にします。VPC エンドポイントのプライベートDNSホスト名を有効にする場合は、 SDKまたは を最新バージョン AWS CLI に更新して、 SDKまたは AWS CLI を使用するURLときにエンドポイントを指定する必要はありません。

プライベートDNSホスト名を有効にし、2019 年 1 月 24 日より前にリリースされた SDKまたは AWS CLI バージョンを使用している場合は、 --endpoint-urlパラメータを使用してインターフェイスエンドポイントを指定する必要があります。次の例は、エンドポイント の形式を示していますURL。

aws ecr create-repository --repository-name name --endpoint-url https://api.ecr.region.amazonaws.com

VPC エンドポイントのプライベートDNSホスト名を有効にしない場合は、インターフェイスエンドポイントのVPCエンドポイント ID を指定する --endpoint-urlパラメータを使用する必要があります。次の例は、エンドポイント の形式を示していますURL。

aws ecr create-repository --repository-name name --endpoint-url https://VPC_endpoint_ID.api.ecr.region.vpce.amazonaws.com

Amazon S3ゲートウェイエンドポイントを作成する

Amazon ECSタスクが Amazon からプライベートイメージをプルするにはECR、Amazon S3 のゲートウェイエンドポイントを作成する必要があります。Amazon は Amazon S3 ECRを使用してイメージレイヤーを保存するため、ゲートウェイエンドポイントが必要です。コンテナが Amazon からイメージをダウンロードする場合ECR、Amazon にアクセスしてイメージマニフェストECRを取得し、Amazon S3 にアクセスして実際のイメージレイヤーをダウンロードする必要があります。以下は、各 Docker イメージのレイヤーを含む Amazon S3 バケットの Amazon リソースネーム (ARN) です。

arn:aws:s3:::prod-region-starport-layer-bucket/*

「Amazon VPCユーザーガイド」の「ゲートウェイエンドポイントの作成」の手順を使用して、Amazon 用の次の Amazon S3 ゲートウェイエンドポイントを作成しますECR。エンドポイントを作成するときは、必ず のルートテーブルを選択してくださいVPC。

com.amazonaws。region.s3

Amazon S3 ゲートウェイエンドポイントは、 IAMポリシードキュメントを使用してサービスへのアクセスを制限します。フルアクセスポリシーは、タスクIAMロールまたは他のIAMユーザーポリシーに設定した制限がこのポリシーの上に引き続き適用されるため、使用できます。Amazon S3 バケットへのアクセスを Amazon を使用するために必要な最小限のアクセス許可に制限する場合はECR、「」を参照してくださいAmazon の最小 Amazon S3 バケットアクセス許可 ECR

Amazon の最小 Amazon S3 バケットアクセス許可 ECR

Amazon S3 ゲートウェイエンドポイントは、 IAMポリシードキュメントを使用してサービスへのアクセスを制限します。Amazon の最小 Amazon S3 バケットアクセス許可のみを許可するにはECR、エンドポイントのIAMポリシードキュメントを作成するときに Amazon がECR使用する Amazon S3 バケットへのアクセスを制限します。

次の表は、Amazon が必要とする Amazon S3 バケットポリシーのアクセス許可を示していますECR。

アクセス許可 説明

arn:aws:s3:::prod-region-starport-layer-bucket/*

各 Docker イメージのレイヤーを含む Amazon S3 バケットへのアクセスを提供します。米国東部 (オハイオ) リージョンの AWS などECR、Amazon でサポートされているリージョンus-east-2のリージョン識別子を表します。

次の例は、Amazon オペレーションに必要な Amazon S3 バケットへのアクセスを提供する方法を示しています。 ECR

{ "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::prod-region-starport-layer-bucket/*"] } ] }

Logs CloudWatch エンドポイントを作成する

awslogs ログドライバーを使用してログ情報を Logs に送信するインターネットゲートウェイVPCのない を使用する Fargate 起動タイプを使用する Amazon CloudWatch ECSタスクでは、com.amazonaws を作成する必要があります。regionLogs の .logs CloudWatch インターフェイスVPCエンドポイント。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「インターフェイスVPCエンドポイントでのログの使用」を参照してください。 CloudWatch

Amazon エンドポイントのECRVPCエンドポイントポリシーを作成する

VPC エンドポイントポリシーは、エンドポイントを作成または変更するときにエンドポイントにアタッチするIAMリソースポリシーです。エンドポイントの作成時にポリシーをアタッチしない場合、 はサービスへのフルアクセスを許可するデフォルトのポリシーをア AWS タッチします。エンドポイントポリシーは、 ユーザーポリシーやサービス固有のポリシーを上書き、または置き換えません。これは、評価項目から指定されたサービスへのアクセスを制御するための別のポリシーです。エンドポイントポリシーは JSON形式で記述する必要があります。詳細については、「Amazon VPCユーザーガイド」のVPC「エンドポイントを使用したサービスへのアクセスの制御」を参照してください。

単一のIAMリソースポリシーを作成し、両方の Amazon ECRVPCエンドポイントにアタッチすることをお勧めします。

Amazon のエンドポイントポリシーの例を次に示しますECR。このポリシーにより、特定のIAMロールが Amazon からイメージをプルできるようになりますECR。

{ "Statement": [{ "Sid": "AllowPull", "Principal": { "AWS": "arn:aws:iam::1234567890:role/role_name" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Effect": "Allow", "Resource": "*" }] }

次のエンドポイントポリシーの例では、指定されたリポジトリが削除されないようにしています。

{ "Statement": [{ "Sid": "AllowAll", "Principal": "*", "Action": "*", "Effect": "Allow", "Resource": "*" }, { "Sid": "PreventDelete", "Principal": "*", "Action": "ecr:DeleteRepository", "Effect": "Deny", "Resource": "arn:aws:ecr:region:1234567890:repository/repository_name" } ] }

次のエンドポイントポリシーの例では、前述の 2 つの例を 1 つのポリシーにまとめています。

{ "Statement": [{ "Sid": "AllowAll", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*" }, { "Sid": "PreventDelete", "Effect": "Deny", "Principal": "*", "Action": "ecr:DeleteRepository", "Resource": "arn:aws:ecr:region:1234567890:repository/repository_name" }, { "Sid": "AllowPull", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1234567890:role/role_name" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
Amazon のVPCエンドポイントポリシーを変更するには ECR
  1. で Amazon VPCコンソールを開きますhttps://console.aws.amazon.com/vpc/

  2. ナビゲーションペインで、[エンドポイント] を選択します。

  3. Amazon のVPCエンドポイントをまだ作成していない場合はECR、「」を参照してくださいAmazon のVPCエンドポイントを作成する ECR

  4. ポリシーを追加する Amazon ECRVPCエンドポイントを選択し、画面の下半分にあるポリシータブを選択します。

  5. [ポリシーの編集] を選択してポリシーを変更します。

  6. [保存] を選択してポリシーを保存します。

共有サブネット

共有されているサブネットでVPCエンドポイントを作成、説明、変更、または削除することはできません。ただし、共有されているサブネットでVPCエンドポイントを使用できます。