에 대한 아마존 SNS 주제 정책 CloudTrail - AWS CloudTrail

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

에 대한 아마존 SNS 주제 정책 CloudTrail

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

중요

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

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

  • 허용된 것SIDs.

  • 의 서비스 사용자 이름 CloudTrail.

  • SNS주제 (지역, 계정 ID, 주제 이름 포함).

다음 정책은 지원되는 지역에서 로그 파일 전송에 대한 알림을 보낼 수 있도록 허용합니다 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-crypted 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 서비스 주체는 a로 식별되는 SNS 주제에 게시할 수 있습니다. ARN 공격자가 주제에 대한 액세스 권한을 얻고 SNS 주제 수신자 대신 알림을 보내는 것을 CloudTrail 방지하려면 주제 정책을 수동으로 편집하여 에서 첨부한 정책 설명문에 aws:SourceArn 조건 키를 추가하십시오. CloudTrail SNS CloudTrail 이 키의 값은 해당 주제를 ARN 사용하는 트레일 또는 트레일 ARNs 배열입니다. SNS 여기에는 특정 트레일 ID와 트레일을 소유한 계정의 ID가 모두 포함되므로 트레일을 관리할 권한이 있는 계정으로만 SNS 주제 액세스를 제한합니다. SNS주제 정책에 조건 키를 추가하기 전에 콘솔의 트레일 설정에서 SNS 주제 이름을 가져오세요. CloudTrail

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

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

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

  3. 트레일 설정에 표시된 SNS 주제를 선택한 다음 편집을 선택합니다.

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

  5. Access 정책 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 조건에 대한 새 블록을 추가합니다. ARN의 aws:SourceArn 값은 알림을 보내는 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:SourceArn": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail3" } } }
  7. SNS주제 정책 편집을 마치면 변경 내용 저장을 선택합니다.

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

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

  3. 트레일 설정에 표시된 SNS 주제를 선택한 다음 편집을 선택합니다.

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

  5. Access 정책 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 값은 트레일을 소유한 계정의 ID입니다. CloudTrail 이 예에서는 SNS 123456789012 AWS 계정에 로그인할 수 있는 사용자만 주제에 액세스할 수 있도록 제한합니다.

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

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

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

SNS주제 정책을 수동으로 업데이트하려면
  1. https://console.aws.amazon.com/sns/v3/home에서 아마존 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 계정을 IDs 지정하는 이전 정책이 있을 수 있습니다. 이 정책은 지정된 지역에 대해서만 알림을 보낼 수 있는 CloudTrail 권한을 부여합니다.

다음 주제 정책은 지정된 9개 지역에 대해서만 알림을 CloudTrail 보낼 수 있도록 허용합니다.

예 계정을 포함한 주제 정책 IDs
{ "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 계정을 기반으로 한 권한을 사용합니다IDs. 새 지역에 대한 로그를 전달하려면 해당 지역의 CloudTrail 계정 ID를 포함하도록 정책을 수동으로 업데이트해야 합니다. 예를 들어 미국 동부 (오하이오) 지역에 대한 지원이 CloudTrail 추가되었으므로 정책을 업데이트하여 해당 지역의 계정 ID를 ARN 추가해야 합니다"arn:aws:iam::475085895292:root".

가장 좋은 방법은 CloudTrail 서비스 주체의 권한을 사용하도록 정책을 업데이트하는 것입니다. 이렇게 하려면 계정 ID를 서비스 사용자 ARNs 이름:으로 바꾸세요"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 주제에 모든 멤버 계정이 IDs 포함되지 않는 경우 SNS주제 정책이 올바르지 않으면 권한 부여가 실패합니다.

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

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

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

추가 리소스

SNS주제 및 구독에 대한 자세한 내용은 Amazon 단순 알림 서비스 개발자 안내서를 참조하십시오.