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

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

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

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

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

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

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

  • Amazon ECS 起動タイプを使用する EC2 タスクで Amazon ECR からプライベートイメージをプルするには、Amazon ECS. のインターフェイス VPC エンドポイントも作成してください。​ 詳細については、の「インターフェイス VPC エンドポイント (AWS PrivateLink )」を参照してくださいAmazon Elastic Container Service Developer Guide

    重要

    Amazon ECS 起動タイプを使用する Fargate タスクでは、Amazon ECS インターフェイス VPC エンドポイントは不要です。​

  • Amazon ECS Fargate 起動タイプとプラットフォームバージョン 1.3.0 以前を使用する タスクでは、com.amazonaws のみが必要です。regionこの機能を利用するための .ecr.dkr Amazon ECR VPC エンドポイントとAmazon S3ゲートウェイエンドポイント。

  • Amazon ECS Fargate 起動タイプとプラットフォームバージョン 1.4.0 以降を使用する タスクでは、com.amazonaws の両方が必要です。region.ecr.dkr および com.amazonaws。regionこの機能を利用するための .ecr.api Amazon ECR VPC エンドポイントおよびAmazon S3ゲートウェイエンドポイント。

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

  • コンテナイメージを Amazon ECS からプルする Fargate 起動タイプを使用するとともに、Amazon ECR ログドライバーを使用してログ情報を awslogs に送信する CloudWatch Logs タスクでは、CloudWatch Logs VPC エンドポイントが必要です。詳細については、「 」を参照してください。CloudWatch Logs エンドポイントの作成.

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

  • 現在、VPC エンドポイントはクロスリージョンリクエストをサポートしていません。 に対して API コールを発行するリージョンと同じリージョンに VPC エンドポイントを作成してください。​Amazon ECR.

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

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

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

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

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

重要

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

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

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

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

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

注記

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

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

Amazon ECR サービスの VPC エンドポイントを作成するには、の「インターフェイスエンドポイントhttps://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpointの作成」の手順を使用しますAmazon VPC ユーザーガイド

Amazon ECS 起動タイプを使用する EC2 タスクには、Amazon ECR エンドポイントと Amazon S3 ゲートウェイエンドポイントの両方が必要です。

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

Amazon ECS Fargate 起動タイプとプラットフォームバージョン 1.4.0 以降を使用する タスクでは、com.amazonaws の両方が必要です。region.ecr.dkr および com.amazonaws。region.ecr.api Amazon ECR VPC エンドポイントとAmazon S3ゲートウェイエンドポイント。

注記

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

com.amazonaws.region.ecr.dkr

このエンドポイントは、Docker レジストリ に使用されますAPIs。 push や などの Docker クライアントコマンドは、このエンドポイントpullを使用します。

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

com.amazonaws.region.ecr.api
注記

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

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

com.amazonaws の場合。region.ecr.api エンドポイントが作成されると、プライベート DNS ホスト名を有効にするオプションがあります。VPC エンドポイントの作成時に VPC コンソールで [プライベート DNS 名を有効にする] を選択して、この設定を有効にします。VPC エンドポイントでプライベート DNS ホスト名を有効にする場合は、SDK または AWS CLI を使用する際にエンドポイント URL を指定しなくてもいいように、SDK または AWS CLI を最新バージョンに更新します。

プライベート DNS ホスト名が有効で SDK または AWS CLI の 2019 年 1 月 24 日以前にリリースされたバージョンを使用している場合は、--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 ECR は Amazon S3 を使用してイメージレイヤーを保存するため、ゲートウェイエンドポイントが必要です。コンテナが Amazon ECR からイメージをダウンロードするときは、Amazon ECR にアクセスしてイメージマニフェストを取得してから Amazon S3 にアクセスして実際のイメージレイヤーをダウンロードする必要があります。​ 以下に示しているのは、各 Docker イメージのレイヤーを含む Amazon S3 バケットの Amazon リソースネーム (ARN) です。

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

の「ゲートウェイエンドポイントhttps://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html#create-gateway-endpointの作成」の手順を使用してAmazon VPC ユーザーガイド、 の次のAmazon S3ゲートウェイエンドポイントを作成しますAmazon ECR。エンドポイントを作成するときは、必ず VPC のルートテーブルを選択してください。

com.amazonaws.regions3.

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

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

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

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

アクセス許可 説明
arn:aws:s3:::prod-region-starport-layer-bucket/* 各 Docker イメージのレイヤーを含む Amazon S3 バケットへのアクセスを提供します。AWS によってサポートされている Amazon ECR リージョンのリージョン ID (例: us-east-2 の場合は 米国東部 (オハイオ) リージョン.) を表します。

Example

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

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

CloudWatch Logs エンドポイントの作成

Amazon ECS インターネットゲートウェイを使用せずに VPC を使用する Fargate 起動タイプを使用する タスク。また、 awslogs ログドライバーを使用してログ情報を送信しCloudWatch Logs、com.amazonaws の作成を要求します。regionの .logs インターフェイス VPC エンドポイントCloudWatch Logs。詳細については、の「ゲートウェイエンドポイントhttps://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.htmlの作成」を参照してくださいAmazon CloudWatch Logs User Guide

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

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

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

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

{ "Statement": [{ "Sid": "AllowPull", "Principal": { "AWS": "arn:aws:iam::1234567890:role/role_name" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "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" ], "Resource": "*" } ] }

の VPC エンドポイントポリシーを変更するにはAmazon ECR

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

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

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

  4. ポリシーを追加する Amazon ECR VPC エンドポイントを選択し、画面の下部にある [ポリシー] タブを選択します。

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

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