本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
授予 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 权限。
-
选择 Save changes(保存更改)。
注意
默认情况下,Amazon SNS 会创建带有 AWS:SourceOwner
条件的访问策略。有关更多信息,请参阅 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
全局条件上下文键来防范混淆代理人问题。