Amazon ECSAnywhere の IAM アクセス許可 - Amazon Elastic Container Service

Amazon ECSAnywhere の IAM アクセス許可

Amazon ECS Anywhere に適用される必須の条件付き IAM アクセス許可がいくつかあります。以下のセクションでは、IAM アクセス許可について詳しく説明します。

外部インスタンスに必要な IAM アクセス許可

オンプレミスのサーバーまたは仮想マシン (VM) をクラスターに登録する場合、サーバーまたは VM には AWS API と通信するための IAM ロールが必要です。この IAM ロールは、AWS アカウントごとに一度だけ作成する必要があります。ただし、この IAM ロールは、クラスターに登録する各サーバーまたは VM に関連付ける必要があります。このロールは ECSAnywhereRole です。このロールは手動で作成できます。または、AWS Management Console で外部インスタンスを登録するときに、Amazon ECS がユーザーのためにロールを作成できます。

AWS には、ECS Anywhere IAM ロールの作成時に使用できる 2 つの管理 IAM ポリシーである AmazonSSMManagedInstanceCore および AmazonEC2ContainerServiceforEC2Role ポリシーが用意されています。AmazonEC2ContainerServiceforEC2Role ポリシーには、必要以上に多くのアクセスを提供する可能性のあるアクセス許可が含まれています。したがって、特定のユースケースに応じて、カスタムポリシーを作成することをお勧めします。カスタムポリシーには、必要なアクセス許可のみをそのポリシーから追加します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

ECS Anywhere IAM ロールを作成するには (AWS Management Console)

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

  2. ナビゲーションペインで [ロール] を選択した後、[ロールの作成] を選択します。

  3. [AWS service] (AWS のサービス) ロールタイプを選択してから、[Systems Manager] を選択します。

  4. [Systems Manager] のユースケースを選択し、[Next: Permissions] (次へ: アクセス許可) を選択します。

  5. [Attached permissions policy] (アタッチされたアクセス許可ポリシー) セクションで、AmazonSSMManagedInstanceCore および AmazonEC2ContainerServiceforEC2Role ポリシーを検索して選択し、[Next: Review] (次へ: 確認) を選択します。

    重要

    AmazonEC2ContainerServiceforEC2Role 管理ポリシーは、オンプレミスのサーバーまたは VM に必要なアクセス許可を提供します。ただし、AmazonEC2ContainerServiceforEC2Role 管理ポリシーによって、ユースケースでは必要のないアクセス許可が付与される場合があります。このポリシーで付与されたアクセス許可を確認し、ユースケースですべてのアクセス許可を必要としないかどうかを確認します。その後、状況に応じて、オプションでカスタムポリシーを作成し、必要なアクセス許可のみを追加します。詳細については、Amazon ECS コンテナインスタンスの IAM ロール を参照してください。

  6. [Add tags (optional)] (タグを追加 (オプション)) で、ポリシーに関連付けるカスタムタグを指定し、[Next: Review] (次へ: 確認) を選択します。

  7. [Role name] (ロール名) で、ECSAnywhereRole と入力し、必要に応じて説明を編集できます。

  8. ロール情報を確認し、[Create Role] (ロールの作成) を選択します。

  9. ECSAnywhereRole の検索を実行し、それを選択して、ロールの詳細を表示します。

  10. [アクセス許可] タブで、[ポリシーのアタッチ] を選択します。

  11. AmazonSSMManagedInstanceCore ポリシーを検索して選択し、[Attach policy] (ポリシーのアタッチ) を選択します。

ECS Anywhere IAM ロールを作成するには (AWS CLI)

  1. IAM ロールに使用する信頼ポリシーを含む ssm-trust-policy.json という名前のファイルを作成します。このファイルには次の内容が含まれています。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": [ "ssm.amazonaws.com" ]}, "Action": "sts:AssumeRole" } }
  2. 前のステップで作成した信頼ポリシーを使用して、ecsAnywhereRole という名前の IAM ロールを作成します。

    aws iam create-role \ --role-name ecsAnywhereRole \ --assume-role-policy-document file://ssm-trust-policy.json
  3. AWS 管理 AmazonSSMManagedInstanceCore ポリシーを ecsAnywhereRole ロールにアタッチします。このポリシーは、オンプレミスのサーバーまたは VM に必要な Systems Manager API アクセス許可を提供します。

    aws iam attach-role-policy \ --role-name ecsAnywhereRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
  4. AWS 管理 AmazonEC2ContainerServiceforEC2Role ポリシーを ecsAnywhereRole ロールにアタッチします。

    aws iam attach-role-policy \ --role-name ecsAnywhereRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role
    重要

    AmazonEC2ContainerServiceforEC2Role 管理ポリシーは、オンプレミスのサーバーまたは VM に必要なアクセス許可を提供します。ただし、AmazonEC2ContainerServiceforEC2Role 管理ポリシーによって、ユースケースでは必要のないアクセス許可が付与される場合があります。このポリシーで付与されたアクセス許可を確認し、ユースケースですべてのアクセス許可を必要としないかどうかを確認します。その後、状況に応じて、オプションでカスタムポリシーを作成し、必要なアクセス許可のみを追加します。詳細については、Amazon ECS コンテナインスタンスの IAM ロール を参照してください。

条件付き IAM アクセス許可

タスク実行 IAM ロールは、ユーザーに代わって AWS API 呼び出しを行うためのアクセス許可を Amazon ECS コンテナエージェントに付与します。タスク実行 IAM ロールを使用する場合は、タスク定義で指定する必要があります。詳細については、Amazon ECS タスク実行 IAM ロール を参照してください。

タスク実行ロールは、次の条件のいずれかに当てはまる場合に必須です。

  • awslogs ログドライバーを使用して CloudWatch Logs にコンテナログを送信しています。

  • タスク定義は、Amazon ECR プライベートリポジトリでホストされるコンテナイメージを指定します。ただし、外部インスタンスに関連付けられている ECSAnywhereRole IAM ロールに、Amazon ECR からイメージをプルするために必要なアクセス許可も含まれている場合は、タスク実行ロールにイメージを含める必要はありません。