AWS Cloudwatch не может публиковать в теме SNS с SSE - PullRequest
0 голосов
/ 31 мая 2019

У меня есть проверка работоспособности Route53, которая отправляет свои метрики в Cloudwatch, и, наконец, Cloudwatch указывает пороговые значения и должна отправлять оповещения через SNS.

Однако я бы хотел, чтобы моя тема SNS была зашифрована. Когда я включаю шифрование SNS Topic с помощью ключа alias/aws/sns, я получаю следующие сообщения в истории сообщений Cloudwatch:

{
  "actionState": "Failed",
  "stateUpdateTimestamp": 123456778899,
  "notificationResource": "arn:aws:sns:xx-region-y:zzzzzzzzzz:topic_name",
  "publishedMessage": null,
  "error": "null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: ccccccccccccccccccc)"
}

Этот , по-видимому, не является проблемой IAM с Cloudwatch, но сам SNS не авторизован для использования ресурсов KMS.

Мне нравится использовать IAM Policy Simulator для пользователей IAM, чтобы определить, где им не хватает разрешений, но, похоже, нет способа проверить доступ Сервиса к другим сервисам. Это то, чем я могу управлять?

https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html


Я также пробовал это с CMK со следующей политикой:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "sns.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey*",
                "kms:Decrypt"
            ],
            "Resource": "*"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "route53.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey*",
                "kms:Decrypt"
            ],
            "Resource": "*"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey*",
                "kms:Decrypt"
            ],
            "Resource": "*"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::XXXXXXXX:role/OrganizationAccountAccessRole"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}

Я довольно часто бросаю дротики в стену с принципалами, но я думаю, что есть проверка для sns.amazonaws.com для SNS и events.amazonaws.com для Cloudwatch.

Я получил точно такую ​​же ошибку, "null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: ccccccccccccccccccc)", при использовании CMK таким же образом. Я могу понять, что мой CMK не работает должным образом, но управляемый ключ Amazon, как мне кажется, должен работать из коробки.


Я пытался использовать CMK, который предоставляет sns.amazonaws.com и events.amazonaws.com с разрешениями kms:*. Та же ошибка.

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Очевидно, CloudWatch не может отправлять сообщения в зашифрованные темы SNS в соответствии с Защита данных Amazon SNS с использованием шифрования на стороне сервера (SSE) и AWS KMS :

В настоящее время сигналы тревоги CloudWatch не работают с зашифрованными темами Amazon SNS.Информацию о публикации сигналов тревоги в незашифрованных темах см. В разделе Использование сигналов тревоги Amazon CloudWatch в Руководстве пользователя Amazon CloudWatch.

Тем не менее, сообщение в блоге Шифрование сообщений, опубликованных в Amazon SNS с помощью AWS KMS , похоже, указывает на то, что вы можете ...

?

1 голос
/ 31 мая 2019

В то время как некоторые сервисы AWS используют роль IAM в вашей учетной записи, другие используют определенный принципал для предоставления доступа вместо этого. Смотри https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/.

Я думаю, в вашем случае вам нужно разрешить принципу cloudwatch, events.amazonaws.com, использовать указанный вами ключ KMS в политике ключа. См. Раздел «Включение совместимости между зашифрованными темами и источниками событий» в приведенной выше ссылке.

Обратите внимание, что, как говорится в документе: «Некоторые сервисы AWS публикуют события в темах Amazon SNS. Чтобы эти источники событий могли работать с зашифрованными темами, необходимо сначала создать управляемый клиентом CMK, а затем добавить следующее правило в политику из CMK. " Это работает только с ключами, управляемыми клиентом.

...