あきろぐ

いろいろめもするよ🐈🐈🐈

ECSのタスクロールとタスク実行ロール

ECSのタスクロールとタスク実行ロールは何が違うのかのメモ

タスクロール

AWSの開発者ガイドには以下のように書かれている。

Amazon ECS タスク用の IAM ロールを使用すると、タスクのコンテナで使用できる IAM ロールを指定できます。

上記の文言からだと分かりにくいが、「タスクのコンテナ=タスクを実行しているEC2インスタンス」のためのIAMロールであると解釈できる。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task-iam-roles.html

タスク実行ロール

これは、読んで字のごとくタスクを実行するために必要なルールである。 デフォルトでは、AWSが管理している「AmazonECSTaskExecutionRolePolicy」があり、このポリシーの中にはECRからDockerイメージをプルしたり、コンテナログをCloudwatchに格納するために必要な権限が含まれている。 ロールの中身は以下の通り

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "*"
    }
  ]
}

また、タスク定義の環境変数の設定でパラメータストアやシークレットマネージャからセキュアな情報等をパラメータストアから取得する場合は、追加で必要な権限がある。

  • ssm:GetParameters:パラメータストアから値を取得する
  • secretsmanager:GetSecretValue: セキュアな情報を取得する(パラメータストア またはシークレットマネージャ)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters",
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}