Bre*_*dly 3 amazon-web-services amazon-iam
我有一个 Route53 运行状况检查,它将其指标提交到 Cloudwatch,最后 Cloudwatch 指定阈值并应通过 SNS 发送警报。
但是,我希望对我的 SNS 主题进行加密。当我使用alias/aws/sns密钥打开 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)"
}
Run Code Online (Sandbox Code Playgroud)
这似乎不是 Cloudwatch 的 IAM 问题,而是 SNS 本身未被授权使用 KMS 资源。
我喜欢为 IAM 用户使用 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": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我几乎和校长们在墙上投掷飞镖,但我认为有sns.amazonaws.com对 SNS 和events.amazonaws.comCloudwatch的验证。
"null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: ccccccccccccccccccc)"以这种方式使用 CMK 时,我也收到了完全相同的错误。我可以理解我的 CMK 无法正常工作,但我认为亚马逊托管的密钥应该是开箱即用的。
我已经使用该赠款CMK尝试sns.amazonaws.com和events.amazonaws.com使用kms:*权限。同样的错误。
小智 10
只是在这里总结正确的答案,因为接受的答案似乎已经过时:。
您无法使用 Amazon 托管 CMK alias/aws/sns,因为为了将 cloudwatch 与使用 KMS CMK 加密的 SNS 主题连接,您需要在 CMK 上设置资源策略/访问策略,以便 cloudwatch 服务可以对密钥执行操作kms:GenerateDataKey*,kms:Decrypt并且无法编辑亚马逊托管密钥的访问策略。
对于您的情况,您需要创建客户管理的对称 CMK,并编辑访问策略以允许 cloudwatch 服务主体访问该 CMK。访问策略将如下所示:
"Version": "2012-10-17",
"Id": "key-policies",
"Statement": [
{
"Sid": "Enable IAM User Permissions for administration of this key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxxxxxxxxxxx:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow cloudwatch metric to use this key",
"Effect": "Allow",
"Principal": {
"Service": "cloudwatch.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
更新:此信息可能已过时。请尝试其他答案,并让所有人知道它们是否适合您。
显然,根据使用服务器端加密 (SSE) 和 AWS KMS 保护 Amazon SNS 数据,CloudWatch无法将消息发送到加密的 SNS 主题:
目前,CloudWatch 警报不适用于 Amazon SNS 加密主题。有关将警报发布到未加密主题的信息,请参阅 Amazon CloudWatch 用户指南中的使用 Amazon CloudWatch 警报。
但是,博客文章使用 AWS KMS 加密发布到 Amazon SNS 的消息似乎表明您可以......
| 归档时间: |
|
| 查看次数: |
5071 次 |
| 最近记录: |