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)
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [ロール] を選択した後、[ロールの作成] を選択します。
-
[AWS service] ( サービス) ロールタイプを選択して、[Systems Manager] (システムズマネージャ)、[Allows SSM to call AWS services on your behalf] (SSM がユーザーに代わって サービスを呼び出すことを許可) を選択します。
-
[Systems Managerユースケース] を選択し、次のトピック:アクセス許可を選択します。
-
[アクセス許可ポリシーの付与] セクションで、[AmazonSSMManagedInstanceCore] を検索、選択し、AmazonEC2ContainerServiceforEC2Role ポリシーを選択して [次のトピック: レビュー] を選択します。
重要 AmazonEC2ContainerServiceforEC2Role
管理ポリシーは、オンプレミスのサーバーまたは VM に必要なアクセス許可を提供します。ただし、AmazonEC2ContainerServiceforEC2Role
管理ポリシーでは、ユースケースに不要なアクセス許可を付与することがあります。このポリシーによって付与されたアクセス許可を確認し、ユースケースですべてのアクセス許可が必要ではないかどうかを確認します。次に、状況に応じて、必要に応じてカスタムポリシーを作成し、必要な権限のみを追加します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。 -
[Add tags (タグの追加) (オプション)] で、ポリシーに関連付けるカスタムタグを指定し、[Next: Review (次の手順:レビュー)] を選択します。
-
[Role name(ロール名)] に、
ECSAnywhereRole
と入力します。必要に応じて説明を入力することもできます。 -
ロール情報を確認し、[Create Role(ロールの作成)] を選択します。
-
ECSAnywhereRole
の検索を実行します。表示されたら、選択して、ロールの詳細を表示します。
ECS Anywhere IAM ロールを作成するには(AWS CLI)
-
IAM ロールに使用する信頼ポリシーが含まれている
ssm-trust-policy.json
という名前のファイルを作成します。 ファイルには次の内容が含まれます。{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": [ "ssm.amazonaws.com" ]}, "Action": "sts:AssumeRole" } }
-
前のステップで作成した信頼ポリシーを使用して、
ecsAnywhereRole
という名前の IAM ロールを作成します。aws iam create-role \ --role-name
ecsAnywhereRole
\ --assume-role-policy-document file://ssm-trust-policy.json
-
AWS 管理 ポリシー
AmazonSSMManagedInstanceCore
をecsAnywhereRole
ロールにアタッチします。このポリシーは、オンプレミスのサーバーまたは VM に必要な Systems Manager API のアクセス許可を提供します。aws iam attach-role-policy \ --role-name
ecsAnywhereRole
\ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore -
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 ロール」を参照してください。
次のいずれかの条件が適用される場合は、タスクの実行ロールが必要です。
-
コンテナログを CloudWatch Logs に送信するには、
awslogs
ログドライバーを使用します。 -
タスク定義では、Amazon ECR プライベートリポジトリでホストされるコンテナイメージを指定します。ただし、
ECSAnywhereRole
外部インスタンスに関連付けられている IAM ロールには、Amazon ECR からイメージを取得するために必要なアクセス権限も含まれています。この場合、タスク実行ロールにはそれらを含める必要はありません。