AWS CloudTrail 리소스 기반 정책 예제 - AWS CloudTrail

AWS CloudTrail 리소스 기반 정책 예제

이 섹션에서는 CloudTrail Lake 대시보드, 이벤트 데이터 스토어 및 채널에 대한 리소스 기반 정책의 예를 제공합니다.

CloudTrail은 다음과 같은 유형의 리소스 기반 정책을 지원합니다.

  • CloudTrail은 CloudTrail Lake를 AWS 외부 이벤트 소스와 통합하는 데 사용되는 채널에서 리소스 기반 정책을 지원합니다. 채널의 리소스 기반 정책은 이벤트를 대상 이벤트 데이터 스토어에 전달하기 위해 채널에서 PutAuditEvents를 호출할 수 있는 보안 주체 엔터티(계정, 사용자, 역할 및 페더레이션 사용자)를 정의합니다. CloudTrail Lake와의 통합 생성에 대한 자세한 내용은 AWS 외부 이벤트 소스와의 통합 생성의 내용을 참조하세요.

  • 이벤트 데이터 스토어에서 작업을 수행할 수 있는 위탁자를 제어할 수 있는 리소스 기반 정책. 리소스 기반 정책을 사용하여 이벤트 데이터 스토어에 대한 교차 계정 액세스를 제공할 수 있습니다.

  • 대시보드에 대한 새로 고침 일정을 설정할 때 CloudTrail이 정의한 간격으로 CloudTrail Lake 대시보드를 새로 고칠 수 있도록 허용하는 대시보드의 리소스 기반 정책입니다. 자세한 내용은 CloudTrail 콘솔을 사용하여 사용자 지정 대시보드의 새로 고침 일정 설정 섹션을 참조하세요.

채널용 리소스 기반 정책 예제

채널의 리소스 기반 정책은 이벤트를 대상 이벤트 데이터 스토어에 전달하기 위해 채널에서 PutAuditEvents를 호출할 수 있는 보안 주체 엔터티(계정, 사용자, 역할 및 페더레이션 사용자)를 정의합니다.

정책에 필요한 정보는 통합 유형에 따라 결정됩니다.

  • 직접 통합의 경우 CloudTrail은 파트너의 AWS 계정 ID를 정책에 포함하도록 요구하고, 파트너가 제공한 고유한 외부 ID를 입력하도록 요구합니다. CloudTrail 콘솔을 사용하여 통합을 생성할 때 CloudTrail은 파트너의 AWS 계정 ID를 리소스 정책에 자동으로 추가합니다. 정책에 필요한 AWS 계정 번호를 받는 방법을 알아보려면 파트너 설명서를 참조하세요.

  • 솔루션 통합의 경우 하나 이상의 AWS 계정 ID를 보안 주체로 지정해야 하며, 외부 ID를 입력하여 혼동된 대리자를 방지할 수 있습니다.

다음은 리소스 기반 정책에 대한 요구 사항입니다.

  • 정책에는 하나 이상의 정책 문이 포함됩니다. 정책은 최대 20개의 문을 보유할 수 있습니다.

  • 각 문에는 하나 이상의 보안 주체가 포함됩니다. 위탁자는 계정, 사용자, 역할 또는 페더레이션 사용자일 수 있습니다. 문에는 최대 50개의 보안 주체가 있을 수 있습니다.

  • 정책에 정의된 리소스 ARN은 정책이 연결된 채널 ARN과 일치해야 합니다.

  • 정책에는 cloudtrail-data:PutAuditEvents의 한 가지 작업만 포함됩니다.

정책에서 소유자의 리소스 액세스를 거부하지 않는 한 채널 소유자는 채널에서 PutAuditEvents API를 호출할 수 있습니다.

예: 보안 주체에 채널 액세스 제공

다음 예제에서는 ARN arn:aws:iam::111122223333:root, arn:aws:iam::444455556666:rootarn:aws:iam::123456789012:root에 ARN arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b를 사용하여 CloudTrail 채널에서 PutAuditEvents API를 호출하는 권한을 부여합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b" } ] }

예제: 외부 ID를 사용하여 혼동된 대리자 문제 방지

다음 예제에서는 외부 ID를 사용하여 혼동된 대리자 문제를 방지합니다. 혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다.

통합 파트너는 정책에서 사용할 외부 ID를 생성합니다. 그리고 통합 생성의 일부로 외부 ID를 제공합니다. 이 값은 암호 또는 계정 번호와 같은 어떤 고유한 문자열도 가능합니다.

예제에서는 ARN arn:aws:iam::111122223333:root, arn:aws:iam::444455556666:rootarn:aws:iam::123456789012:root를 사용하는 보안 주체에 PutAuditEvents API 호출에 정책에 포함된 외부 ID 값이 포함된 경우 CloudTrail 채널 리소스에 PutAuditEvents API를 호출하는 권한을 부여합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b" } ] }

이벤트 데이터 스토어의 리소스 기반 정책 예시

리소스 기반 정책을 사용하면 이벤트 데이터 스토어에서 작업을 수행할 수 있는 위탁자를 제어할 수 있습니다.

리소스 기반 정책을 사용하여 교차 계정 액세스를 제공하면 선택한 위탁자가 이벤트 데이터 스토어를 쿼리하고, 쿼리를 나열 및 취소하고, 쿼리 결과를 확인하도록 할 수 있습니다.

CloudTrail Lake 대시보드의 경우 리소스 기반 정책을 사용하여 대시보드를 새로 고칠 때 CloudTrail가 쿼리를 실행하여 대시보드 위젯의 데이터를 채우도록 허용할 수 있습니다. CloudTrail Lake는 사용자 지정 대시보드를 생성하거나 CloudTrail 콘솔에서 Highlights 대시보드를 활성화할 때 이벤트 데이터 스토어에 기본 리소스 기반 정책을 연결하는 옵션을 제공합니다.

이벤트 데이터 스토어의 리소스 기반 정책에서 지원되는 작업은 다음과 같습니다.

  • cloudtrail:StartQuery

  • cloudtrail:CancelQuery

  • cloudtrail:ListQueries

  • cloudtrail:DescribeQuery

  • cloudtrail:GetQueryResults

  • cloudtrail:GenerateQuery

  • cloudtrail:GenerateQueryResultsSummary

  • cloudtrail:GetEventDataStore

이벤트 데이터 스토어를 생성 또는 업데이트하거나 CloudTrail 콘솔에서 대시보드를 관리할 때 이벤트 데이터 스토어에 리소스 기반 정책을 추가할 수 있는 옵션이 제공됩니다. put-resource-policy 명령을 실행하여 리소스 기반 정책을 이벤트 데이터 스토어에 연결할 수도 있습니다.

리소스 기반 정책에는 하나 이상의 문이 포함됩니다. 예를 들어 CloudTrail이 대시보드에 대한 이벤트 데이터 스토어를 쿼리하도록 허용하는 문 하나와 이벤트 데이터 스토어를 쿼리하기 위해 교차 계정 액세스를 허용하는 다른 문 하나를 포함할 수 있습니다. CloudTrail 콘솔의 이벤트 데이터 스토어 세부 정보 페이지에서 기존 이벤트 데이터 스토어의 리소스 기반 정책을 업데이트할 수 있습니다.

조직 이벤트 데이터 스토어의 경우 CloudTrail은 위임된 관리자 계정이 조직 이벤트 데이터 스토어에서 수행할 수 있는 작업을 나열하는 기본 리소스 기반 정책을 생성합니다. 이 정책의 권한은 AWS Organizations의 위임된 관리자 권한에서 파생됩니다. 이 정책은 조직의 이벤트 데이터 스토어 또는 조직이 변경되면(예: CloudTrail의 위임된 관리자 계정이 등록 또는 제거됨) 자동으로 업데이트됩니다.

예시: CloudTrail이 쿼리를 실행하여 대시보드를 새로 고치도록 허용

새로 고침 중에 CloudTrail Lake 대시보드에 데이터를 채우려면 CloudTrail이 사용자를 대신하여 쿼리를 실행하도록 허용해야 합니다. 이렇게 하려면 CloudTrail이 위젯의 데이터를 채우는 StartQuery 작업을 수행할 수 있는 문이 포함된 대시보드 위젯과 연결된 각 이벤트 데이터 스토어에 리소스 기반 정책을 연결합니다.

다음은 해당 문에 대한 기본 요구 사항입니다.

  • 유일한 Principalcloudtrail.amazonaws.com입니다.

  • 허용되는 유일한 Actioncloudtrail:StartQuery입니다.

  • Condition에는 대시보드 ARN과 AWS 계정 ID만 포함됩니다. AWS:SourceArn의 경우 대시보드 ARN 배열을 제공할 수 있습니다.

다음 예제 정책에는 CloudTrail이 example-dashboard1 example-dashboard2 및 라는 사용자 지정 대시보드 2개와 계정 AWSCloudTrail-Highlights에 대한 Highlights 대시보드에 대해 이벤트 데이터 스토어에서 쿼리를 실행할 수 있도록 허용하는 문이 포함되어 있습니다123456789012.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "cloudtrail:StartQuery" ], "Resource": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/*", "Condition": { "StringLike": { "AWS:SourceArn": [ "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard1", "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard2", "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/AWSCloudTrail-Highlights" ], "AWS:SourceAccount": "123456789012" } } } ] }

예: 다른 계정이 이벤트 데이터 스토어를 쿼리하고 쿼리 결과를 볼 수 있도록 허용

리소스 기반 정책을 사용하여 이벤트 데이터 스토어에 대한 교차 계정 액세스를 제공하여 다른 계정이 이벤트 데이터 스토어에서 쿼리를 실행할 수 있도록 할 수 있습니다.

다음 예제 정책에는 계정 111122223333, 777777777777, 999999999999, 111111111111의 루트 사용자가 계정 ID 555555555555가 소유한 이벤트 데이터 스토어에서 쿼리를 실행하고 쿼리 결과를 가져올 수 있도록 허용하는 문이 포함되어 있습니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "policy1", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::777777777777:root", "arn:aws:iam::999999999999:root", "arn:aws:iam::111111111111:root" ] }, "Action": [ "cloudtrail:StartQuery", "cloudtrail:GetEventDataStore", "cloudtrail:GetQueryResults" ], "Resource": "arn:aws:cloudtrail:us-east-1:555555555555:eventdatastore/example80-699f-4045-a7d2-730dbf313ccf" } ] }

대시보드용 리소스 기반 정책 예시

CloudTrail Lake 대시보드에 대한 새로 고침 일정을 설정할 수 있습니다. 그러면 새로 고침 일정을 설정할 때 정의한 간격으로 CloudTrail이 사용자를 대신하여 대시보드를 새로 고칠 수 있습니다. 이렇게 하려면 CloudTrail이 대시보드에서 StartDashboardRefresh 작업을 수행할 수 있도록 리소스 기반 정책을 대시보드에 연결해야 합니다.

다음은 리소스 기반 정책에 대한 요구 사항입니다.

  • 유일한 Principalcloudtrail.amazonaws.com입니다.

  • 정책에서 허용되는 유일한 Actioncloudtrail:StartDashboardRefresh입니다.

  • Condition에는 대시보드 ARN 및 AWS 계정 ID만 포함됩니다.

다음 예제 정책은 CloudTrail이 계정 123456789012에 대해 exampleDash라는 대시보드를 새로 고치도록 허용합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "cloudtrail:StartDashboardRefresh" ], "Resource": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/exampleDash", "AWS:SourceAccount":"123456789012" } } } ] }