Amazon SNS 主题的权限 - Amazon DevOps Guru

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

Amazon SNS 主题的权限

仅当您想要将 Amazon DevOps Guru 配置为向其他账户拥有的 Amazon SNS 主题发送通知时,才使用本主题中的信息。 AWS

要让 DevOps Guru 向其他账户拥有的 Amazon SNS 主题发送通知,您必须在 Amazon SNS 主题中附加一项政策, DevOps授予 Guru 向其发送通知的权限。如果您将 DevOps Guru 配置为向您用 DevOps于 Guru 的同一账户所拥有的 Amazon SNS 主题发送通知, DevOps则 Guru 会为您在主题中添加策略。

在附加策略以配置另一个账户中某个 Amazon SNS 主题的权限后,您可以在 Guru 中添加 Amazon SNS 主题。 DevOps您还可以使用通知通道更新您的 Amazon SNS 政策,使其更加安全。

注意

DevOpsGuru 目前仅支持同一地区的跨账户访问。

另一个账户中的 Amazon SNS 主题的配置权限

作为 IAM 角色添加权限

如果您希望在使用 IAM 角色登录后使用另一个账户中的 Amazon SNS 主题,则必须向要使用的 Amazon SNS 主题附加一个策略。如要在使用 IAM 角色时将策略附加到其他账户的 Amazon SNS 主题,您需要对作为 IAM 角色一部分的账户资源拥有以下权限:

  • sns: CreateTopic

  • sns: GetTopicAttributes

  • sns: SetTopicAttributes

  • sns:Publish

将以下策略附加到您要使用的 Amazon SNS 主题。对于Resource密钥,topic-owner-account-id是主题所有者的账户 ID,topic-sender-account-id是设置 DevOps Guru 的用户的账户 ID,devops-guru-role是相关个人用户的 IAM 角色。必须用region-id(例如us-west-2)和替换相应的值my-topic-name

{ "Version": "2012-10-17", "Statement": [{ "Sid": "EnableDevOpsGuruServicePrincipal", "Action": "sns:Publish", "Effect": "Allow", "Resource": "arn:aws:sns:region-id:topic-owner-account-id:my-topic-name", "Principal": { "Service": "region-id.devops-guru.amazonaws.com" }, "Condition": { "StringEquals": { "AWS:SourceAccount": "topic-sender-account-id" } } }, { "Sid": "EnableAccountPrincipal", "Action": "sns:Publish", "Effect": "Allow", "Resource": "arn:aws:sns:region-id:topic-owner-account-id:my-topic-name", "Principal": { "AWS": ["arn:aws:iam::topic-sender-account-id:role/devops-guru-role"] } } ] }

以 IAM 用户身份添加权限

要以 IAM 用户身份从其他账户使用 Amazon SNS 主题,请将以下策略附加到要使用的 Amazon SNS 主题。对于Resource密钥,topic-owner-account-id是主题所有者的账户 ID,topic-sender-account-id是设置 DevOps Guru 的用户的账户 ID,devops-guru-user-name是涉及的个人 IAM 用户。必须用region-id(例如us-west-2)和替换相应的值my-topic-name

注意

在可能的情况下,我们建议使用临时凭证,而不是创建具有长期凭证(如密码和访问密钥)的 IAM 用户。有关 IAM 中的最佳实操的更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践

{ "Version": "2012-10-17", "Statement": [{ "Sid": "EnableDevOpsGuruServicePrincipal", "Action": "sns:Publish", "Effect": "Allow", "Resource": "arn:aws:sns:region-id:topic-owner-account-id:my-topic-name", "Principal": { "Service": "region-id.devops-guru.amazonaws.com" }, "Condition": { "StringEquals": { "AWS:SourceAccount": "topic-sender-account-id" } } }, { "Sid": "EnableAccountPrincipal", "Action": "sns:Publish", "Effect": "Allow", "Resource": "arn:aws:sns:region-id:topic-owner-account-id:my-topic-name", "Principal": { "AWS": ["arn:aws:iam::topic-sender-account-id:user/devops-guru-user-name"] } } ] }

添加另一个账户的 Amazon SNS 主题

在另一个账户中为某个 Amazon SNS 主题配置权限后,您可以将该 Amazon SNS 主题添加到 DevOps您的 Guru 通知设置中。您可以使用 AWS CLI 或 DevOps Guru 控制台添加 Amazon SNS 主题。

  • 使用控制台时,必须选择 “使用 SNS 主题 ARN 指定现有主题” 选项,才能使用其他账户的主题。

  • 使用 AWS CLI 操作时 add-notification-channel,必须在NotificationChannelConfig对象TopicArn内指定。

使用控制台添加来自其他账户的 Amazon SNS 主题
  1. 打开 Amazon DevOps Guru 控制台,网址为https://console.aws.amazon.com/devops-guru/

  2. 打开导航窗格,选择设置

  3. 前往“通知”部分并选择 “编辑”

  4. 选择添加 SNS 主题

  5. 选择使用 SNS 主题 ARN 指定现有主题

  6. 输入您要使用的 Amazon SNS 主题的 ARN。您应该已经通过为该主题附加策略来配置该主题的权限。

  7. (可选)选择通知配置以编辑通知频率设置。

  8. 选择保存

将 Amazon SNS 主题添加到通知设置后, DevOpsGuru 会使用该主题通知您重要事件,例如创建新见解的时间。

使用通知通道更新您的 Amazon SNS 政策(推荐)

添加主题后,我们建议您仅为包含您的主题的 DevOps Guru 通知渠道指定权限,从而提高策略的安全性。

使用通知通道更新您的 Amazon SNS 主题政策(推荐)
  1. 在要从中发送通知的账户中运行 list-notification-channels DevOps Guru AWS CLI 命令。

    aws devops-guru list-notification-channels
  2. list-notification-channels 回复中,记下包含您的 Amazon SNS 主题的 ARN 的通道 ID。通道 ID 是一个指南。

    例如,在以下响应中,带有 ARN arn:aws:sns:region-id:111122223333:topic-name 的主题的通道 ID 为 e89be5f7-989d-4c4c-b1fe-e7145037e531

    { "Channels": [ { "Id": "e89be5f7-989d-4c4c-b1fe-e7145037e531", "Config": { "Sns": { "TopicArn": "arn:aws:sns:region-id:111122223333:topic-name" }, "Filters": { "MessageTypes": ["CLOSED_INSIGHT", "NEW_INSIGHT", "SEVERITY_UPGRADED"], "Severities": ["HIGH", "MEDIUM"] } } } ] }
  3. 转到您使用 另一个账户中的 Amazon SNS 主题的配置权限 中的主题所有者 ID 在另一个账户中创建的政策。在 Condition 策略声明中,添加指定 SourceArn 的行。ARN 包含您的区域 ID(例如us-east-1)、话题发件人的 AWS 账号以及您记下的频道 ID。

    您的更新的 Condition 声明如下所示。

    "Condition" : { "StringEquals" : { "AWS:SourceArn": "arn:aws:devops-guru:us-east-1:111122223333:channel/e89be5f7-989d-4c4c-b1fe-e7145037e531", "AWS:SourceAccount": "111122223333" } }

如果 AddNotificationChannel 无法添加您的 SNS 主题,请检查您的 IAM policy 是否具有以下权限。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "DevOpsGuruTopicPermissions", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:Publish" ], "Resource": "arn:aws:sns:region-id:account-id:my-topic-name" }] }