Amazon SNS 主题的权限 - Amazon DevOps Guru

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

Amazon SNS 主题的权限

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

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

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

注意

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

在另一个账户中为某个 Amazon SNS 主题配置权限

以角色的身份IAM添加权限

要在以IAM角色登录后使用其他账户中的亚马逊SNS主题,您必须为要使用的亚马逊SNS主题附加政策。要在使用角色时将策略附加到其他账户的 Amazon SNS 主题,作为IAM角色的一部分,您需要对该账户资源拥有以下权限: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用户身份使用来自其他账户的亚马逊SNS主题,请将以下政策附加到您要使用的亚马逊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 主题

在另一个账户中为亚马逊SNS主题配置权限后,您可以将该亚马逊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 话题的频道 ID ARN。通道 ID 是一个指南。

    例如,在以下响应中,主题的频道 ID ARN arn:aws:sns:region-id:111122223333:topic-namee89be5f7-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策略是否具有以下权限。

{ "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" }] }