授予 Amazon Managed Service for Prometheus 向 Amazon SNS 主题发送警报消息的权限
您必须授予 Amazon Managed Service for Prometheus 向您的 Amazon SNS 主题发送消息的权限。以下策略声明将授予该权限。其中包括一项 Condition 声明,以防止出现被称为“混淆代理”问题的安全问题。该 Condition 声明限制了对 Amazon SNS 主题的访问权限,仅允许来自该特定账户和 Amazon Managed Service for Prometheus 工作区的操作。有关混淆代理人问题的更多信息,请参阅防止跨服务混淆座席。
授予 Amazon Managed Service for Prometheus 向您的 Amazon SNS 主题发送消息的权限
通过 https://console.aws.amazon.com/sns/v3/home
打开 Amazon SNS 控制台。 -
在导航窗格中,选择 Topics(主题)。
-
选择您正用于 Amazon Managed Service for Prometheus 的主题的名称。
-
选择编辑。
-
选择访问策略,将以下策略声明添加到现有策略。
{ "Sid": "Allow_Publish_Alarms", "Effect": "Allow", "Principal": { "Service": "aps.amazonaws.com" }, "Action": [ "sns:Publish", "sns:GetTopicAttributes" ], "Condition": { "ArnEquals": { "aws:SourceArn": "workspace_ARN" }, "StringEquals": { "AWS:SourceAccount": "account_id" } }, "Resource": "arn:aws:sns:region:account_id:topic_name" }[可选] 如果您的 Amazon SNS 主题已启用服务端加密(SSE),则需要在用于加密主题的密钥的 AWS KMS 密钥政策中添加
kms:GenerateDataKey*和kms:Decrypt权限,以使 Amazon Managed Service for Prometheus 向该加密主题发送消息。例如,您可以在策略中添加以下内容:
{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "aps.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }有关更多信息,请参阅 SNS 主题的 AWS KMS 权限。
-
选择保存更改。
注意
默认情况下,Amazon SNS 会创建带有 AWS:SourceOwner 条件的访问策略。有关更多信息,请参阅 SNS 访问策略。
注意
选择加入区域的 SNS 主题配置
您可以使用 aps.amazonaws.com 在与 Amazon Managed Service for Prometheus 工作区相同的 AWS 区域中配置 Amazon SNS 主题。要将来自非选择加入区域(例如 us-east-1)的 SNS 主题与选择加入区域(例如 af-south-1)一起使用,您需要使用区域服务主体格式。在区域服务主体中,将 us-east-1 替换为您要使用的非选择加入区域:aps.。us-east-1.amazonaws.com
下表列出了选择加入区域及其相应的区域服务主体:
| 区域名称 | 区域 | 区域服务主体 |
|---|---|---|
| 非洲(开普敦) | af-south-1 | af-south-1.aps.amazonaws.com |
| 亚太地区(香港) | ap-east-1 | ap-east-1.aps.amazonaws.com |
| 亚太地区(泰国) | ap-southeast-7 | ap-southeast-7.aps.amazonaws.com |
| 欧洲(米兰) | eu-south-1 | eu-south-1.aps.amazonaws.com |
| 欧洲(苏黎世) | eu-central-2 | eu-central-2.aps.amazonaws.com |
| 中东(阿联酋) | me-central-1 | me-central-1.aps.amazonaws.com |
| 亚太地区(马来西亚) | ap-southeast-5 | ap-southeast-5.aps.amazonaws.com |
有关启用选择加入区域的信息,请参阅 Amazon Web Services 一般参考 中的《IAM 用户指南》中的管理 AWS 区域。
在为这些选择加入区域配置 Amazon SNS 主题时,请确保使用正确的区域服务主体来启用跨区域发送警报。
防止跨服务混淆座席
混淆代理问题是一个安全性问题,即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在 AWS 中,跨服务模拟可能会导致混淆代理问题。一个服务(呼叫服务)调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务,使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况,AWS 提供可帮助您保护所有服务的数据的工具,而这些服务中的服务主体有权限访问账户中的资源。
我们建议在资源策略中使用 aws:SourceArn 和 aws:SourceAccount 全局条件上下文键,以限制 Amazon Managed Service for Prometheus 为 Amazon SNS 提供的资源访问权限。如果使用两个全局条件上下文键,在同一策略语句中使用时,aws:SourceAccount 值和 aws:SourceArn 值中的账户必须使用相同的账户 ID。
aws:SourceArn 的值必须为 Amazon Managed Service for Prometheus 工作区的 ARN。
防范混淆代理问题最有效的方法是使用 aws:SourceArn 全局条件上下文键和资源的完整 ARN。如果不知道资源的完整 ARN,或者正在指定多个资源,请针对 ARN 未知部分使用带有通配符 (*) 的 aws:SourceArn 全局上下文条件键。例如 arn:aws:。servicename::123456789012:*
授予 Amazon Managed Service for Prometheus 向 Amazon SNS 主题发送警报消息的权限 中所示的策略演示了如何使用 Amazon Managed Service for Prometheus 中的 aws:SourceArn 和 aws:SourceAccount 全局条件上下文键来防范混淆代理人问题。