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

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에 대한 Amazon SNS 주제 정책 CloudTrail

SNS 주제에 알림을 보내려면 필요한 권한이 CloudTrail 있어야 합니다. CloudTrail CloudTrail 콘솔에서 트레일을 생성하거나 업데이트하는 과정에서 Amazon SNS 주제를 생성할 때 주제에 필요한 권한을 자동으로 연결합니다.

중요

보안 모범 사례로, SNS 주제에 대한 액세스를 제한하려면 SNS 알림을 전송하는 추적을 생성하거나 업데이트한 후 SNS 주제에 연결된 IAM 정책을 수동으로 편집하여 조건 키를 추가하는 것이 좋습니다. 자세한 내용은 이번 주제에서 전반부 SNS 주제 정책에 대한 보안 모범 사례 단원을 참조하십시오.

CloudTrail 다음 필드와 함께 다음 설명을 정책에 추가합니다.

  • 허용된 SID

  • 의 서비스 주체 이름 CloudTrail.

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

다음 정책은 지원되는 지역에서 로그 파일 전송에 대한 알림을 보낼 수 있도록 허용합니다 CloudTrail . 자세한 정보는 CloudTrail 지원되는 지역을 참조하세요. 이 정책은 추적을 생성하거나 업데이트하고 SNS 알림을 사용하도록 선택할 때 신규 또는 기존 SNS 주제 정책에 연결되는 기본 정책입니다.

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 주제를 사용하여 알림을 보내려면 정책에 다음 명령문을 추가하여 이벤트 소스 (CloudTrail) 와 암호화된 주제 간의 호환성을 활성화해야 합니다. AWS KMS key

KMS 키 정책

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

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

SNS 주제 정책에 대한 보안 모범 사례

기본적으로 Amazon SNS 주제에 CloudTrail 첨부된 IAM 정책 설명을 통해 CloudTrail 서비스 보안 주체는 ARN으로 식별되는 SNS 주제에 게시할 수 있습니다. 공격자가 SNS 주제에 액세스하여 주제 수신자를 대신하여 알림을 보내는 것을 CloudTrail 방지하려면 SNS 주제 정책을 수동으로 편집하여 에서 첨부한 정책 설명문에 aws:SourceArn 조건 키를 추가하십시오. CloudTrail CloudTrail 이 키의 값은 항상 SNS 주제를 사용하는 추적의 ARN(또는 추적 ARN의 배열)입니다. 특정 추적 ID와 추적을 소유한 계정의 ID를 모두 포함하고 있기 때문에 SNS 주제 액세스를 추적 관리 권한이 있는 해당 계정으로만 제한합니다. SNS 주제 정책에 조건 키를 추가하기 전에 콘솔의 트레일 설정에서 SNS 주제 이름을 가져오십시오. CloudTrail

aws:SourceAccount 조건 키도 지원되지만 권장되지는 않습니다.

SNS 주제 정책에 aws:SourceArn 조건 키를 추가하려면
  1. https://console.aws.amazon.com/sns/v3/home에서 Amazon SNS 콘솔을 엽니다.

  2. 탐색 창에서 주제를 선택합니다.

  3. 추적 설정에 표시된 SNS 주제를 선택한 다음, [편집(Edit)]을 선택합니다.

  4. 액세스 정책(Access policy)를 확장합니다.

  5. [액세스 정책(Access policy)] JSON 편집기에서 다음 예와 유사한 블록을 찾습니다.

    { "Sid": "AWSCloudTrailSNSPolicy20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496" }
  6. 다음 예와 같이 aws:SourceArn 조건에 대한 새 블록을 추가합니다. aws:SourceArn 값은 SNS에 알림을 전송할 추적의 ARN입니다.

    { "Sid": "AWSCloudTrailSNSPolicy20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail3" } } }
  7. SNS 주제 정책 편집을 마쳤으면 [변경 사항 저장(Save changes)]을 선택합니다.

SNS 주제 정책에 aws:SourceAccount 조건 키를 추가하려면
  1. https://console.aws.amazon.com/sns/v3/home에서 Amazon SNS 콘솔을 엽니다.

  2. 탐색 창에서 주제를 선택합니다.

  3. 추적 설정에 표시된 SNS 주제를 선택한 다음, [편집(Edit)]을 선택합니다.

  4. 액세스 정책(Access policy)를 확장합니다.

  5. [액세스 정책(Access policy)] JSON 편집기에서 다음 예와 유사한 블록을 찾습니다.

    { "Sid": "AWSCloudTrailSNSPolicy20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496" }
  6. 다음 예와 같이 aws:SourceAccount 조건에 대한 새 블록을 추가합니다. 의 aws:SourceAccount 값은 CloudTrail 트레일을 소유한 계정의 ID입니다. 이 예에서는 123456789012 AWS 계정에 로그인할 수 있는 사용자만 SNS 주제에 액세스할 수 있도록 제한합니다.

    { "Sid": "AWSCloudTrailSNSPolicy20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }
  7. SNS 주제 정책 편집을 마쳤으면 [변경 사항 저장(Save changes)]을 선택합니다.

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

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

SNS 주제 정책을 수동으로 업데이트하려면
  1. https://console.aws.amazon.com/sns/v3/home에서 Amazon SNS 콘솔을 엽니다.

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

  3. 편집을 선택한 다음 아래로 스크롤하여 액세스 정책으로 이동합니다.

  4. 지역, 계정 ID, 주제 이름에 적합한 값을 포함한 설명을 양식에 추가합니다. SNS topic policy

  5. 주제가 암호화된 주제인 경우 사용 권한 kms:GenerateDataKey*kms:Decrypt 권한을 CloudTrail 허용해야 합니다. 자세한 내용은 Encrypted SNS topic KMS key policy 섹션을 참조하세요.

  6. 변경 사항 저장(Save changes)을 선택합니다.

  7. CloudTrail 콘솔로 돌아가서 트레일의 주제를 지정하십시오.

SNS 주제 정책 문제 해결

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

CloudTrail 지역에 대한 알림을 보내지 않습니다.

트레일 생성 또는 업데이트의 일환으로 새 주제를 생성하는 경우 주제에 필요한 권한을 CloudTrail 첨부합니다. 주제 정책은 모든 지역에 알림을 CloudTrail 보낼 수 있는 서비스 사용자 이름을 사용합니다. "cloudtrail.amazonaws.com"

지역에 대한 알림을 보내지 않는 경우 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 주제 이름에 대해 적절한 값을 지정합니다.

CloudTrail 조직의 구성원 계정에 대해서는 알림을 보내지 않습니다.

AWS Organizations 조직 내역이 있는 회원 계정이 Amazon SNS 알림을 전송하지 않는 경우, SNS 주제 정책 구성에 문제가 있을 수 있습니다. CloudTrail 리소스 검증이 실패하더라도 멤버 계정에 조직 트레일을 생성합니다. 예를 들어 조직 트레일의 SNS 주제에 모든 멤버 계정 ID가 포함되어 있지는 않습니다. SNS 주제 정책이 올바르지 않으면 권한 부여가 실패합니다.

트레일의 SNS 주제 정책에 권한 부여 실패가 있는지 확인하려면:

  • CloudTrail 콘솔에서 트레일의 세부 정보 페이지를 확인하세요. 권한 부여에 실패한 경우 세부 정보 페이지에 경고 메시지가 SNS authorization failed 표시되고 SNS 주제 정책을 수정하라는 메시지가 표시됩니다.

  • AWS CLI에서 get-trail-status명령을 실행합니다. 권한 부여에 실패한 경우 명령 출력에는 값이 인 LastNotificationError 필드가 포함됩니다AuthorizationError.

추가적인 리소스

SNS 주제 설정 및 구독에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 가이드를 참조하세요.