授予适用于 Prometheus 的亚马逊托管服务向您的亚马逊 SNS 主题发送提醒消息的权限 - Amazon Managed Service for Prometheus

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

授予适用于 Prometheus 的亚马逊托管服务向您的亚马逊 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权限,从而允许适用于 Prometheus 的亚马逊托管服务向该加密主题发送消息。

    例如,您可以将以下内容添加到策略中:

    { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "aps.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }

    有关更多信息,请参阅 SNS 主题的AWS KMS 权限

  6. 选择保存更改

注意

默认情况下,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:*

授予适用于 Prometheus 的亚马逊托管服务向您的亚马逊 SNS 主题发送提醒消息的权限 中所示的策略演示了如何使用 Amazon Managed Service for Prometheus 中的 aws:SourceArnaws:SourceAccount 全局条件上下文键来防范混淆代理人问题。