Кластер ECS не может использовать ключ KMS для расшифровки «вам не разрешен доступ» - PullRequest
0 голосов
/ 29 марта 2019

Я продолжаю получать сообщение об ошибке:

software.amazon.awssdk.services.kms.model.KmsException: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.

При попытке расшифровки.

Я создал роль для выполнения Задачи с разрешением:

"AssumeRolePolicyDocument": {
      "Version": "2008-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ecs-tasks.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    },
    "ManagedPolicyArns": [
      "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
    ],
    "Policies": [
      {
        "PolicyName": "AllowKmsDecrypt",
        "PolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "kms:Decrypt"
              ],
              "Resource": [
                {"Ref": "PrincipalSourceKeyArn"}
              ]
            }
          ]
        }
      }
    ]

И определение задачи связано с ролью:

        "ExecutionRoleArn": {"Ref": "TaskExecutionRoleArn"},

Хм.Что еще я мог пропустить?

1 Ответ

1 голос
/ 29 марта 2019

Из этих документов оказывается, что политики IAM недостаточно:

Политики IAM сами по себе недостаточны для предоставления доступа к CMK.Однако вы можете использовать их в сочетании с ключевой политикой CMK, если ключевая политика разрешает это.Предоставление учетной записи AWS полного доступа к CMK делает это;он позволяет вам использовать политики IAM, чтобы предоставить пользователям и ролям IAM в учетной записи доступ к CMK

. Мне нужно было обновить KMS KeyPolicy, включив в него:

{
          "Sid": "Enable IAM User Permissions",
          "Effect": "Allow",
          "Principal": {
            "AWS": { "Fn::Join" : ["" , ["arn:aws:iam::", {"Ref" : "AWS::AccountId"} ,":root" ]] }
          },
          "Action": "kms:*",
          "Resource": "*"
        }
...