AWS: AccessDeniedException при вызове ssm: GetParameterHistory для параметра SSM - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь написать лямбду, которая прослушивает события изменения хранилища параметров из CloudWatch и получает данные истории для параметра, вызывая boto3.client('ssm').get_parameter_history(Name=event["name"],WithDecryption=True).Этот метод завершается ошибкой с сообщением:

botocore.exceptions.ClientError: Произошла ошибка (AccessDeniedException) при вызове операции GetParameterHistory: зашифрованный текст ссылается на главный ключ клиента, который не существует, не существуетв этом регионе, или вы не имеете доступа.(Сервис: AWSKMS; Код состояния: 400; Код ошибки: AccessDeniedException; Идентификатор запроса: бла-бла-бла) *

Ниже показано, как выглядит исполнительная роль лямбды:

{
  "roleName": "myapp-paramstore-updates-webhook-role",
  "policies": [
    {
      "document": {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "arn:aws:logs:eu-west-1:000000000000:*"
          },
          {
            "Effect": "Allow",
            "Action": [
              "logs:CreateLogStream",
              "logs:PutLogEvents"
            ],
            "Resource": [
              "arn:aws:logs:eu-west-1:000000000000:log-group:/aws/lambda/ssm-paramstore-updates-webhook:*"
            ]
          }
        ]
      },
      "name": "LambdaBasicExeRole",
      "type": "inline"
    },
    {
      "document": {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
              "kms:DescribeKey",
              "ssm:GetParameter"
            ],
            "Resource": [
              "arn:aws:kms:eu-west-1:000000000000:key/*",
              "arn:aws:ssm:eu-west-1:000000000000:parameter/myorg/myteam/slack/webhooks/ssm-paramstore-updates-webhook",
              "arn:aws:ssm:eu-west-1:000000000000:parameter/myorg/myteam/slack/webhooks/system-eventsupdates-webhook"
            ]
          },
          {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "ssm:GetParameterHistory",
            "Resource": "arn:aws:ssm:*:*:parameter/*"
          }
        ]
      },
      "name": "readonly-ssm-paramstore-updates-webhook",
      "type": "inline"
    }
  ],
  "trustedEntities": [
    "lambda.amazonaws.com"
  ]
}

До того, как я использовал ssm:GetParameterHistory, было ssm:DescribeParameters, но мне нужно было получить некоторую информацию о версии, отсюда и изменение.Все в том же регионе, лямбда и параметры.

Какие дополнительные разрешения мне нужны сейчас и на каком ресурсе, чтобы это исправить?

1 Ответ

0 голосов
/ 28 февраля 2019

Понял, что роль лямбды, которая должна получить доступ к ключу, должна быть добавлена ​​как ключевой пользователь в KMS.По сути, необходимо предоставить разрешение роли (или пользователю), чтобы она использовала ключ для выполнения шифрования / дешифрования секретов.

Это делается из консоли KMS, щелкните по имени ключа в спискеиз ключей, управляемых клиентами (предполагается, что это ключ, который вы создали сами), прокрутите вниз до ключевых пользователей и добавьте роль, которая должна использовать ключ, в список разрешенных пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...