Amazon SNS 主題的許可 - Amazon DevOps 大師

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon SNS 主題的許可

只有當您想要將 Amazon DevOps Guru 設定為將通知傳遞給另一個 AWS 帳戶擁有的 Amazon SNS 主題時,才使用本主題中的資訊。

若要讓 DevOps Guru 將通知傳送到不同帳戶擁有的 Amazon SNS 主題,您必須將政策附加到 Amazon SNS 主題,以授予 DevOps Guru 傳送通知給該主題的權限。如果您將 DevOps Guru 設定為 DevOps向您使用 Guru 的相同帳戶所擁有的 Amazon SNS 主題傳遞通知,則 DevOps Guru 會為您新增政策至主題。

在您附加原則以設定其他帳戶中 Amazon SNS 主題的許可後,您可以在 DevOps Guru 中新增 Amazon SNS 主題。您也可以使用通知管道更新 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 角色。您必須以適當的值取代區域 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 使用者身分新增許可

若要使用其他帳戶中的 Amazon SNS 主題做為 IAM 使用者,請將下列政策附加到您要使用的 Amazon SNS 主題。對於Resource金鑰,topic-owner-account-id是主題擁有者的帳戶 ID、topic-sender-account-id設定 DevOps Guru 的使用者帳戶 ID,以及devops-guru-user-name是涉及的個別 IAM 使用者。您必須以適當的值取代區域 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. https://console.aws.amazon.com/devops-guru/ 打開 Amazon DevOps 大師控制台。

  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 的通道識別碼。通道識別碼是一個 GUID。

    例如,在下列回應中,具有 ARN arn:aws:sns:region-id:111122223333:topic-name 之主題的通道識別碼為 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. 使用中的主題擁有者 ID 移至您在其他帳戶中建立的策略在另一個帳戶中設定 Amazon SNS 主題的許可。在原則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" }] }