Amazon ECS の IAM ベストプラクティス - Amazon Elastic Container Service

Amazon ECS の IAM ベストプラクティス

AWS Identity and Access Management (IAM) を使用すると、認証と認可を目的としたルールベースのポリシーを通じて、AWS のサービスとリソースへのアクセスの管理と制御を行うことができます。具体的には、このサービスを通じてユーザー、グループ、またはロールに適用されるポリシーを使用して、AWS リソースへのアクセスを制御します。この 3 つのうち、ユーザーはリソースにアクセスできるアカウントです。また、IAM ロールは、認証された ID が引き受けることができる一連のアクセス許可であり、IAM 外の特定の ID には関連付けられていません。詳細については、「Amazon ECS overview of access management: Permissions and policies」を参照してください。

最小権限アクセスのポリシーに従う

ユーザーが所定の仕事を遂行できるようにポリシーの範囲を設定してください。たとえば、開発者が定期的にタスクを停止する必要がある場合、その特定のアクションのみを許可するポリシーを作成します。次の例では、特定の Amazon リソースネーム (ARN) を持つクラスター上の 特定の task_family に属するタスクを停止させることができます。リソースレベルのアクセス許可を使用する別の例として、条件で ARN を参照することが挙げられます。リソースレベルのアクセス許可を使用して、アクションを適用するリソースを指定できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StopTask" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:region:account_id:cluster/cluster_name" } }, "Resource": [ "arn:aws:ecs:region:account_id:task-definition/task_family:*" ] } ] }

クラスターリソースを管理上の境界として使用する

ポリシーの範囲が狭すぎると、ロールが急増し、管理オーバーヘッドが増える可能性があります。特定のタスクやサービスのみを対象とするロールを作成するのではなく、クラスターを対象とするロールを作成し、そのクラスターを主要な管理上の境界として使用してください。

自動パイプラインを作成して API からエンドユーザーを隔離する

アプリケーションを自動的にパッケージ化して Amazon ECS クラスターにデプロイするパイプラインを作成することで、ユーザーが使用できるアクションを制限できます。これにより、タスクを作成、更新、削除するジョブをパイプラインに効果的に委任することができます。詳細については、「AWS CodePipeline ユーザーガイド」の「チュートリアル: CodePipeline を使用した Amazon ECS 標準デプロイ」を参照してください。

ポリシー条件を使用してセキュリティをより一層強化する

セキュリティを強化する必要がある場合は、ポリシーに条件を追加します。これは、権限のある操作を実行する場合や、特定のリソースに対して実行できるアクションを制限する必要がある場合に役立ちます。以下は、クラスターを削除する際に多要素認可を必要とするポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DeleteCluster" ], "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }, "Resource": ["*"] } ] }

サービスに適用されたタグは、そのサービスに含まれるすべてのタスクに反映されます。したがって、特定のタグを使用して Amazon ECS リソースを対象とするロールを作成できます。次のポリシーでは、タグキーが Department でタグ値が Accounting であるすべてのタスクを IAM プリンシパルが開始および停止します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StartTask", "ecs:StopTask", "ecs:RunTask" ], "Resource": "arn:aws:ecs:*", "Condition": { "StringEquals": {"ecs:ResourceTag/Department": "Accounting"} } } ] }

API へのアクセスを定期的に監査する

ユーザーがロールを変更する場合があります。ロールを変更した後、以前に付与されていたアクセス許可が適用されなくなる場合があります。どのユーザーが Amazon ECS API にアクセスでき、そのアクセスが引き続き保証されているかどうかを必ず監査してください。ユーザーが組織を離れると自動的にアクセス権を取り消すユーザーライフサイクル管理ソリューションと IAM を統合することを検討してください。詳細については、「AWS Identity and Access Management ユーザーガイド」の「AWS セキュリティ監査のガイドライン」を参照してください。