CloudTrail에 대한 Amazon SNS 주제 정책 - AWS CloudTrail

CloudTrail에 대한 Amazon SNS 주제 정책

SNS 주제에 알림을 전송하려면 CloudTrail는 필수 권한을 가지고 있어야 합니다. CloudTrail 콘솔에서 추적 생성 또는 업데이트의 일부로 Amazon SNS 주제를 생성하면 CloudTrail는 필수 권한을 주제에 자동으로 연결합니다.

CloudTrail은 다음 필드를 사용하여 다음 문을 정책에 추가합니다.

  • 허용된 SID

  • CloudTrail에 대한 서비스 보안 주체 이름

  • 리전, 계정 ID 및 주제 이름을 포함한 SNS 주제

다음 정책은 CloudTrail이 지원되는 리전의 로그 파일 전송에 대한 알림을 전송할 수 있도록 허용합니다. 자세한 내용은 CloudTrail 지원되는 리전 섹션을 참조하십시오.

SNS 주제 정책

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailSNSPolicy20131101", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:region:SNSTopicOwnerAccountId:SNSTopicName" } ] }

AWS KMS로 암호화된 Amazon SNS 주제를 사용하여 알림을 전송하려면 고객 마스터 키(CMK)의 정책에 다음 문을 추가하여 이벤트 소스(CloudTrail)와 암호화된 주제 사이에서 호환성도 활성화해야 합니다.

CMK 정책

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" } ] }

자세한 내용은 AWS 서비스의 이벤트 소스와 암호화된 주제 간 호환성 활성화를 참조하십시오.

알림을 전송하기 위한 기존 주제 지정

Amazon SNS 콘솔에서 주제 정책에 Amazon SNS 주제에 대한 권한을 수동으로 추가한 다음 CloudTrail 콘솔에서 주제를 지정할 수 있습니다.

SNS 주제 정책을 수동으로 업데이트하려면

  1. https://console.aws.amazon.com/sns/v3/home에서 Amazon SNS 콘솔을 엽니다.

  2. [Topics]를 선택한 다음 주제를 선택합니다.

  3. [Other topic actions]를 선택한 다음 [Edit topic policy]를 선택합니다.

  4. [Advanced view]를 선택하고 리전, 계정 ID, 주제 이름에 대한 적절한 값을 사용하여 SNS 주제 정책의 명령문을 추가합니다.

  5. Update policy를 선택합니다.

  6. 주제가 암호화된 주제일 경우 CloudTrail에 kms:GenerateDataKey*kms:Decrypt 권한을 허용해야 합니다. 자세한 내용은 암호화된 SNS 주제 CMK 정책 단원을 참조하십시오.

  7. CloudTrail 콘솔로 돌아가서 추적에 대한 주제를 지정합니다.

SNS 주제 정책 문제 해결

다음 섹션에서는 SNS 주제 정책 문제를 해결하는 방법을 설명합니다.

일반적인 SNS 정책 구성 오류

추적을 생성 또는 업데이트하는 동안 새 주제를 생성하면 CloudTrail은 필수 권한을 해당 주제에 연결합니다. 주제 정책은 서비스 보안 주체 이름 "cloudtrail.amazonaws.com"을 사용합니다. 이 이름은 CloudTrail이 모든 리전에 대해 알림을 전송할 수 있도록 허용합니다.

CloudTrail이 리전에 대해 알림을 전송하지 않을 경우 각 리전에 대해 CloudTrail 계정 ID를 지정하는 이전 정책이 주제에 연결되어 있는 것일 수 있습니다. 이 정책은 지정된 리전에 대해서만 알림을 전송할 수 있는 권한을 CloudTrail에 부여합니다.

다음 주제 정책은 지정된 9개 리전에 대해서만 CloudTrail이 알림을 전송할 수 있도록 허용합니다.

예 계정 ID가 포함된 주제 정책의 예

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AWSCloudTrailSNSPolicy20131101", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::903692715234:root", "arn:aws:iam::035351147821:root", "arn:aws:iam::859597730677:root", "arn:aws:iam::814480443879:root", "arn:aws:iam::216624486486:root", "arn:aws:iam::086441151436:root", "arn:aws:iam::388731089494:root", "arn:aws:iam::284668455005:root", "arn:aws:iam::113285607260:root" ]}, "Action": "SNS:Publish", "Resource": "aws:arn:sns:us-east-1:123456789012:myTopic" }] }

이 정책은 개별 CloudTrail 계정 ID를 기반으로 권한을 사용합니다. 새 리전에 대한 로그를 전송하려면 해당 리전에 대한 CloudTrail 계정 ID를 포함하도록 정책을 수동으로 업데이트해야 합니다. 예를 들어, CloudTrail에는 미국 동부(오하이오) 리전에 대한 지원이 추가되었으므로 해당 리전에 대한 계정 ID ARN인 "arn:aws:iam::475085895292:root"을(를) 추가하도록 정책을 업데이트해야 합니다.

CloudTrail 서비스 보안 주체와 함께 권한을 사용하도록 정책을 업데이트하는 것이 가장 좋습니다. 이 작업을 수행하려면 계정 ID ARN을 서비스 보안 주체 이름 "cloudtrail.amazonaws.com"으로 바꾸십시오.

이렇게 하면 현재 리전 및 새 리전에 대해 알림을 전송할 수 있는 권한이 CloudTrail에 부여됩니다. 다음은 이전 정책의 업데이트된 버전입니다.

예 서비스 보안 주체 이름이 포함된 주제 정책의 예

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AWSCloudTrailSNSPolicy20131101", "Effect": "Allow", "Principal": {Service": "cloudtrail.amazonaws.com"}, "Action": "SNS:Publish", "Resource": arn:aws:sns:us-west-2:123456789012:myTopic" }] }

정책에 올바른 값이 있는지 확인하십시오.

  • Resource 필드에서 주제 소유자의 계정 번호를 지정합니다. 사용자가 생성한 주제인 경우 사용자의 계정 번호를 지정합니다.

  • 리전 및 SNS 주제 이름에 대해 적절한 값을 지정합니다.

추가 리소스

SNS 주제 및 SNS 주제 구독에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 안내서 항목을 참조하십시오.