授予 Amazon Managed Service for Prometheus 向 Amazon SNS 主题发送警报消息的权限 - Amazon Managed Service for Prometheus

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

授予 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 主题发送消息的权限
  1. 通过 https://console.aws.amazon.com/sns/v3/home 打开 Amazon SNS 控制台。

  2. 在导航窗格中,选择 Topics(主题)

  3. 选择您正用于 Amazon Managed Service for Prometheus 的主题的名称。

  4. 选择编辑

  5. 选择访问策略,将以下策略声明添加到现有策略。

    { "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 权限

  6. 选择 Save changes(保存更改)

注意

默认情况下,Amazon SNS 会创建带有 AWS:SourceOwner 条件的访问策略。有关更多信息,请参阅 SNS 访问策略

注意

IAM 遵循最严格的策略优先规则。在您的 SNS 主题中,如果存在比记录在案的 Amazon SNS 策略块更严格的策略数据块,则不会授予该主题策略的权限。要评估您的策略并了解已授予的权限,请参阅策略评估逻辑

防止跨服务混淆座席

混淆代理问题是一个安全性问题,即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在 AWS 中,跨服务模拟可能会导致混淆代理问题。一个服务(呼叫服务)调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务,使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况,AWS 提供可帮助您保护所有服务的数据的工具,而这些服务中的服务主体有权限访问账户中的资源。

我们建议在资源策略中使用 aws:SourceArnaws: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:SourceArnaws:SourceAccount 全局条件上下文键来防范混淆代理人问题。