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

Amazon ECS Anywhere の IAM アクセス許可

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

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

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

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サービスロールタイプ] を選択し、Systems Managerを選択します。

  4. [Systems Managerユースケース] を選択し、次のトピック:アクセス許可を選択します。

  5. [アクセス許可ポリシーの付与] セクションで、[AmazonSSMManagedInstanceCore] を検索、選択し、AmazonEC2ContainerServiceforEC2Role ポリシーを選択して [次のトピック: レビュー] を選択します。

    重要

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

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

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

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

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

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

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

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 管理 ポリシー AmazonSSMManagedInstanceCoreecsAnywhereRole ロールにアタッチします。このポリシーは、オンプレミスのサーバーまたは VM に必要な Systems Manager API のアクセス許可を提供します。

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

    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 ロール」を参照してください。

次のいずれかの条件が適用される場合は、タスクの実行ロールが必要です。

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

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