Amazon SNS トピックへの許可 - Amazon DevOps Guru

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SNS トピックへの許可

このトピックの情報は、別の AWS アカウントが所有する Amazon SNS トピックに通知を配信するように Amazon DevOpsGuru を設定する場合にのみ使用します。 Amazon SNS

DevOpsGuru が別のアカウントが所有する Amazon SNS トピックに通知を配信するには、通知を送信する許可を DevOpsGuru に付与するポリシーを Amazon SNS トピックにアタッチする必要があります。 DevOpsGuru で使用するのと同じアカウントが所有する Amazon SNS トピックに通知を配信するように DevOpsGuru を設定すると、Guru DevOpsはトピックにポリシーを追加します。

別のアカウントの Amazon SNS トピックのアクセス許可を設定するポリシーをアタッチしたら、 DevOpsGuru に 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は DevOpsGuru をセットアップしたユーザーのアカウント 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は DevOpsGuru をセットアップしたユーザーのアカウント 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 トピックを DevOpsGuru 通知設定に追加できます。Amazon SNS トピックは、 AWS CLI または DevOpsGuru コンソールを使用して追加できます。

  • コンソールを使用するときに、別のアカウントのトピックを使用するには、[SNS トピック ARN を使用して既存のトピックを指定する] オプションを選択する必要があります。

  • AWS CLI オペレーション を使用する場合はadd-notification-channelNotificationChannelConfig オブジェクトTopicArn内で を指定する必要があります。

コンソールを使用して他のアカウントから Amazon SNS トピックを追加する
  1. https://console.aws.amazon.com/devops-guru/ で Amazon DevOpsGuru コンソールを開きます。

  2. ナビゲーションペインを開き、[設定] を選択します。

  3. [通知] セクションに移動し、[編集] を選択します。

  4. [SNS トピックを追加] を選択します。

  5. 「SNS トピック ARN を使用して既存のトピックを指定する」 を選択します。

  6. 使用する Amazon SNS トピックの ARN を入力します。このトピックにポリシーをアタッチすることで、このトピックのアクセス権限をすでに設定しているはずです。

  7. (オプション) [通知設定] を選択して、通知頻度の設定を編集します。

  8. [保存] を選択します。

通知設定に Amazon SNS トピックを追加すると、 DevOpsGuru はそのトピックを使用して、新しいインサイトの作成時など、重要なイベントを通知します。

通知チャネルで Amazon SNS ポリシーを更新する (推奨)

トピックを追加したら、トピックを含む DevOpsGuru 通知チャネルにのみアクセス許可を指定して、ポリシーのセキュリティを強化することをお勧めします。

通知チャネルで Amazon SNS トピックポリシーを更新する (推奨)
  1. 通知の送信元のアカウントで list-notification-channels DevOpsGuru AWS CLI コマンドを実行します。

    aws devops-guru list-notification-channels
  2. list-notification-channels レスポンスで、Amazon SNS トピックの ARN を含むチャネル ID をメモします。チャネル ID は guid です。

    例えば、次のレスポンスでは、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 ポリシーに次の権限があることを確認してください。

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