

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

# 의 보안 AWS CloudTrail
<a name="WhatIsCloudTrail-Security"></a>

의 클라우드 보안 AWS 이 최우선 순위입니다. AWS 고객은 보안에 가장 민감한 조직의 요구 사항을 충족하도록 구축된 데이터 센터 및 네트워크 아키텍처의 이점을 누릴 수 있습니다.

보안은 AWS 와 사용자 간의 공동 책임입니다. [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)은 이를 클라우드*의* 보안과 클라우드 *내* 보안으로 설명합니다.
+ **클라우드 보안 **- AWS 는 AWS 클라우드에서 AWS 서비스를 실행하는 인프라를 보호할 책임이 있습니다. AWS 또한는 안전하게 사용할 수 있는 서비스를 제공합니다. 서드 파티 감사원은 정기적으로 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/)의 일환으로 보안 효과를 테스트하고 검증합니다. 에 적용되는 규정 준수 프로그램에 대한 자세한 내용은 [AWS 규정 준수 프로그램 제공 범위 내 서비스를](https://aws.amazon.com/compliance/services-in-scope/) AWS CloudTrail참조하세요.
+ **클라우드의 보안** - 사용자의 책임은 사용하는 AWS 서비스에 따라 결정됩니다. 또한 귀하는 귀사의 데이터 민감도, 귀사의 요구 사항, 관련 법률 및 규정을 비롯한 기타 요소에 대해서도 책임이 있습니다.

이 설명서는 CloudTrail을 사용할 때 공동 책임 모델을 적용하는 방법을 이해하는 데 도움이 됩니다. 다음 주제에서는 보안 및 규정 준수 목적에 맞게 CloudTrail을 구성하는 방법을 보여 줍니다. 또한 CloudTrail 리소스를 모니터링하고 보호하는 데 도움이 되는 다른 AWS 서비스를 사용하는 방법을 알아봅니다.

**Topics**
+ [의 데이터 보호 AWS CloudTrail](data-protection.md)
+ [용 자격 증명 및 액세스 관리 AWS CloudTrail](security-iam.md)
+ [에 대한 규정 준수 검증 AWS CloudTrail](CloudTrail-compliance.md)
+ [의 복원력 AWS CloudTrail](disaster-recovery-resiliency.md)
+ [의 인프라 보안 AWS CloudTrail](infrastructure-security.md)
+ [교차 서비스 혼동된 대리인 방지](cross-service-confused-deputy-prevention.md)
+ [의 보안 모범 사례 AWS CloudTrail](best-practices-security.md)
+ [AWS KMS 키를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어 암호화(SSE-KMS)](encrypting-cloudtrail-log-files-with-aws-kms.md)

# 의 데이터 보호 AWS CloudTrail
<a name="data-protection"></a>

 AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)의 데이터 보호에 적용됩니다 AWS CloudTrail. 이 모델에 설명된 대로 AWS 는 모든를 실행하는 글로벌 인프라를 보호할 책임이 있습니다 AWS 클라우드. 사용자는 이 인프라에 호스팅되는 콘텐츠에 대한 통제 권한을 유지할 책임이 있습니다. 사용하는 AWS 서비스 의 보안 구성과 관리 태스크에 대한 책임도 사용자에게 있습니다. 데이터 프라이버시에 관한 자세한 내용은 [데이터 프라이버시 FAQ](https://aws.amazon.com/compliance/data-privacy-faq/)를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은 *AWS 보안 블로그*의 [AWS 공동 책임 모델 및 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 블로그 게시물을 참조하세요.

데이터 보호를 위해 자격 증명을 보호하고 AWS 계정 AWS IAM Identity Center 또는 AWS Identity and Access Management (IAM)를 사용하여 개별 사용자를 설정하는 것이 좋습니다. 이렇게 하면 개별 사용자에게 자신의 직무를 충실히 이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.
+ 각 계정에 다중 인증(MFA)을 사용합니다.
+ SSL/TLS를 사용하여 AWS 리소스와 통신합니다. TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ 를 사용하여 API 및 사용자 활동 로깅을 설정합니다 AWS CloudTrail. CloudTrail 추적을 사용하여 AWS 활동을 캡처하는 방법에 대한 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [ CloudTrail 추적 작업을 참조하세요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html).
+ 내부의 모든 기본 보안 제어와 함께 AWS 암호화 솔루션을 사용합니다 AWS 서비스.
+ Amazon S3에 저장된 민감한 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리형 보안 서비스를 사용합니다.
+ 명령줄 인터페이스 또는 API를 AWS 통해에 액세스할 때 FIPS 140-3 검증 암호화 모듈이 필요한 경우 FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 [연방 정보 처리 표준(FIPS) 140-3](https://aws.amazon.com/compliance/fips/)을 참조하세요.

고객의 이메일 주소와 같은 기밀 정보나 중요한 정보는 태그나 **이름** 필드와 같은 자유 형식 텍스트 필드에 입력하지 않는 것이 좋습니다. 여기에는 CloudTrail 또는 기타 AWS 서비스 에서 콘솔 AWS CLI, API 또는 AWS SDKs를 사용하여 작업하는 경우가 포함됩니다. 이름에 사용되는 태그 또는 자유 형식 텍스트 필드에 입력하는 모든 데이터는 청구 또는 진단 로그에 사용될 수 있습니다. 외부 서버에 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 자격 증명을 URL에 포함해서는 안 됩니다.

기본적으로 CloudTrai 이벤트 로그 파일 및 다이제스트 파일은 Amazon S3 서버 측 암호화(SSE)를 사용하여 암호화합니다. AWS Key Management Service (AWS KMS) 키를 사용하여 로그 파일과 다이제스트 파일을 암호화하도록 선택할 수도 있습니다. 원하는 만큼 오래 버킷에 로그 파일을 저장할 수 있습니다. 또한 Amazon S3 수명 주기 규칙을 정의하여 로그 파일을 자동으로 보관하거나 삭제할 수도 있습니다. 로그 파일 전송 및 검증에 대한 알림을 원할 경우에는 Amazon SNS 알림을 설정할 수 있습니다.

다음 보안 모범 사례에서도 CloudTrail의 데이터 보호를 다룹니다.
+ [AWS KMS 키를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어 암호화(SSE-KMS)](encrypting-cloudtrail-log-files-with-aws-kms.md)
+ [CloudTrail에 대한 Amazon S3 버킷 정책](create-s3-bucket-policy-for-cloudtrail.md)
+ [CloudTrail 로그 파일 무결성 검증](cloudtrail-log-file-validation-intro.md)
+ [AWS 계정 간에 CloudTrail 로그 파일 공유](cloudtrail-sharing-logs.md)

CloudTrail 로그 파일은 Amazon S3의 버킷에 저장되므로 Amazon Simple Storage Service 사용 설명서에서 데이터 보호 정보도 검토해야 합니다. 자세한 내용은 [Amazon S3의 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DataDurability.html)를 참조하세요.

# 용 자격 증명 및 액세스 관리 AWS CloudTrail
<a name="security-iam"></a>





AWS Identity and Access Management (IAM)는 관리자가 AWS 리소스에 대한 액세스를 안전하게 제어하는 데 도움이 AWS 서비스 되는 입니다. IAM 관리자는 어떤 사용자가 CloudTrail 리소스를 사용할 수 있는 **‘인증’(로그인) 및 **‘권한’(권한 있음)을 받을 수 있는지 제어합니다. IAM은 추가 비용 없이 사용할 수 AWS 서비스 있는 입니다.

**Topics**
+ [대상](#security_iam_audience)
+ [ID를 통한 인증](#security_iam_authentication)
+ [정책을 사용하여 액세스 관리](#security_iam_access-manage)
+ [AWS CloudTrail 에서 IAM을 사용하는 방법](security_iam_service-with-iam.md)
+ [에 대한 자격 증명 기반 정책 예제 AWS CloudTrail](security_iam_id-based-policy-examples.md)
+ [AWS CloudTrail 리소스 기반 정책 예제](security_iam_resource-based-policy-examples.md)
+ [CloudTrail에 대한 Amazon S3 버킷 정책](create-s3-bucket-policy-for-cloudtrail.md)
+ [CloudTrail Lake 쿼리 결과에 대한 Amazon S3 버킷 정책](s3-bucket-policy-lake-query-results.md)
+ [CloudTrail에 대한 Amazon SNS 주제 정책](cloudtrail-permissions-for-sns-notifications.md)
+ [AWS CloudTrail 자격 증명 및 액세스 문제 해결](security_iam_troubleshoot.md)
+ [CloudTrail에 서비스 연결 역할 사용](using-service-linked-roles.md)
+ [AWS 에 대한 관리형 정책 AWS CloudTrail](security-iam-awsmanpol.md)

## 대상
<a name="security_iam_audience"></a>

 AWS Identity and Access Management (IAM)를 사용하는 방법은 역할에 따라 다릅니다.
+ **서비스 사용자** - 기능에 액세스할 수 없는 경우 관리자에게 권한 요청(참조[AWS CloudTrail 자격 증명 및 액세스 문제 해결](security_iam_troubleshoot.md))
+ **서비스 관리자** - 사용자 액세스 결정 및 권한 요청 제출([AWS CloudTrail 에서 IAM을 사용하는 방법](security_iam_service-with-iam.md) 참조)
+ **IAM 관리자** - 액세스를 관리하기 위한 정책 작성([에 대한 자격 증명 기반 정책 예제 AWS CloudTrail](security_iam_id-based-policy-examples.md) 참조)

## ID를 통한 인증
<a name="security_iam_authentication"></a>

인증은 자격 증명 자격 증명을 AWS 사용하여에 로그인하는 방법입니다. AWS 계정 루트 사용자, IAM 사용자 또는 IAM 역할을 수임하여 인증되어야 합니다.

 AWS IAM Identity Center (IAM Identity Center), Single Sign-On 인증 또는 Google/Facebook 자격 증명과 같은 자격 증명 소스의 자격 증명을 사용하여 페더레이션 자격 증명으로 로그인할 수 있습니다. 로그인하는 방법에 대한 자세한 내용은 *AWS Sign-In 사용 설명서*의 [AWS 계정에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 섹션을 참조하세요.

프로그래밍 방식 액세스를 위해는 요청에 암호화 방식으로 서명할 수 있는 SDK 및 CLI를 AWS 제공합니다. 자세한 내용은 *IAM 사용 설명서*의 [API 요청용AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) 섹션을 참조하세요.

### AWS 계정 루트 사용자
<a name="security_iam_authentication-rootuser"></a>

 를 생성할 때 모든 AWS 서비스 및 리소스에 대한 완전한 액세스 권한이 있는 AWS 계정 *theroot 사용자*라는 하나의 로그인 자격 증명으로 AWS 계정시작합니다. 일상적인 태스크에 루트 사용자를 사용하지 않을 것을 강력히 권장합니다. 루트 사용자 자격 증명이 필요한 작업은 *IAM 사용 설명서*의 [루트 사용자 자격 증명이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) 섹션을 참조하세요.

### 페더레이션 ID
<a name="security_iam_authentication-federated"></a>

가장 좋은 방법은 인간 사용자에게 자격 증명 공급자와의 페더레이션을 사용하여 임시 자격 증명을 AWS 서비스 사용하여에 액세스하도록 요구하는 것입니다.

*페더레이션 자격 증명*은 엔터프라이즈 디렉터리, 웹 자격 증명 공급자 또는 자격 증명 소스의 자격 증명을 AWS 서비스 사용하여 Directory Service 에 액세스하는 사용자입니다. 페더레이션 ID는 임시 자격 증명을 제공하는 역할을 수임합니다.

중앙 집중식 액세스 관리를 위해 AWS IAM Identity Center를 추천합니다. 자세한 정보는 *AWS IAM Identity Center 사용 설명서*의 [What is IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)를 참조하세요.

### IAM 사용자 및 그룹
<a name="security_iam_authentication-iamuser"></a>

*[IAM 사용자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*는 단일 개인 또는 애플리케이션에 대한 특정 권한을 가진 ID입니다. 장기 자격 증명이 있는 IAM 사용자 대신 임시 자격 증명을 사용하는 것이 좋습니다. 자세한 내용은 *IAM 사용 설명서*의 자격 [증명 공급자와의 페더레이션을 사용하여 임시 자격 증명을 AWS 사용하여에 액세스하도록 인간 사용자에게 요구](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)하기를 참조하세요.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)은 IAM 사용자 모음을 지정하고 대규모 사용자 집합에 대한 관리 권한을 더 쉽게 만듭니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자 사용 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) 섹션을 참조하세요.

### IAM 역할
<a name="security_iam_authentication-iamrole"></a>

*[IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*은 임시 자격 증명을 제공하는 특정 권한이 있는 자격 증명입니다. [사용자에서 IAM 역할(콘솔)로 전환하거나 또는 API 작업을 호출하여 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) 수임할 수 있습니다. AWS CLI AWS 자세한 내용은 *IAM 사용 설명서*의 [역할 수임 방법](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)을 참조하세요.

IAM 역할은 페더레이션 사용자 액세스, 임시 IAM 사용자 권한, 교차 계정 액세스, 교차 서비스 액세스 및 Amazon EC2에서 실행되는 애플리케이션에 유용합니다. 자세한 내용은 *IAM 사용 설명서*의 [교차 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

## 정책을 사용하여 액세스 관리
<a name="security_iam_access-manage"></a>

정책을 AWS 생성하고 자격 증명 또는 리소스에 연결하여 AWS 에서 액세스를 제어합니다. 정책은 자격 증명 또는 리소스와 연결될 때 권한을 정의합니다.는 보안 주체가 요청할 때 이러한 정책을 AWS 평가합니다. 대부분의 정책은에 JSON 문서 AWS 로 저장됩니다. JSON 정책 문서에 대한 자세한 내용은 *IAM 사용 설명서*의 [JSON 정책 개요](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) 섹션을 참조하세요.

정책을 사용하여 관리자는 어떤 **보안 주체**가 어떤 **리소스**에 대해 어떤 **조건**에서 **작업**을 수행할 수 있는지 정의하여 누가 무엇을 액세스할 수 있는지 지정합니다.

기본적으로 사용자 및 역할에는 어떠한 권한도 없습니다. IAM 관리자는 IAM 정책을 생성하고 사용자가 수임할 수 있는 역할에 추가합니다. IAM 정책은 작업을 수행하기 위해 사용하는 방법과 관계없이 작업에 대한 권한을 정의합니다.

### ID 기반 정책
<a name="security_iam_access-manage-id-based-policies"></a>

ID 기반 정책은 ID(사용자, 사용자 그룹 또는 역할)에 연결하는 JSON 권한 정책 문서입니다. 이러한 정책은 자격 증명이 수행할 수 있는 작업, 대상 리소스 및 이에 관한 조건을 제어합니다. ID 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*에서 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)를 참조하세요.

ID 기반 정책은 *인라인 정책*(단일 ID에 직접 포함) 또는 *관리형 정책*(여러 ID에 연결된 독립 실행형 정책)일 수 있습니다. 관리형 정책 또는 인라인 정책을 선택하는 방법을 알아보려면 *IAM 사용 설명서*의 [관리형 정책 및 인라인 정책 중에서 선택](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) 섹션을 참조하세요.

### 리소스 기반 정책
<a name="security_iam_access-manage-resource-based-policies"></a>

리소스 기반 정책은 리소스에 연결하는 JSON 정책 설명서입니다. 예를 들어 IAM *역할 신뢰 정책* 및 Amazon S3 *버킷 정책*이 있습니다. 리소스 기반 정책을 지원하는 서비스에서 서비스 관리자는 이러한 정책을 사용하여 특정 리소스에 대한 액세스를 통제할 수 있습니다. 리소스 기반 정책에서 [보안 주체를 지정](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)해야 합니다.

리소스 기반 정책은 해당 서비스에 있는 인라인 정책입니다. 리소스 기반 정책에서는 IAM의 AWS 관리형 정책을 사용할 수 없습니다.

### 기타 정책 유형
<a name="security_iam_access-manage-other-policies"></a>

AWS 는 보다 일반적인 정책 유형에서 부여한 최대 권한을 설정할 수 있는 추가 정책 유형을 지원합니다.
+ **권한 경계** - ID 기반 정책에서 IAM 엔터티에 부여할 수 있는 최대 권한을 설정합니다. 자세한 정보는 *IAM 사용 설명서*의 [IAM 엔터티의 권한 범위](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)를 참조하세요.
+ **서비스 제어 정책(SCP)** - AWS Organizations내 조직 또는 조직 단위에 대한 최대 권한을 지정합니다. 자세한 내용은AWS Organizations 사용 설명서의 [서비스 제어 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)을 참조하세요.**
+ **리소스 제어 정책(RCP)** – 계정의 리소스에 사용할 수 있는 최대 권한을 설정합니다. 자세한 내용은 *AWS Organizations 사용 설명서*의 [리소스 제어 정책(RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)을 참조하세요.
+ **세션 정책** – 역할 또는 페더레이션 사용자에 대해 임시 세션을 프로그래밍 방식으로 생성할 때 파라미터로 전달하는 고급 정책입니다. 자세한 내용은 *IAM 사용 설명서*의 [세션 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)을 참조하세요.

### 여러 정책 유형
<a name="security_iam_access-manage-multiple-policies"></a>

여러 정책 유형이 요청에 적용되는 경우, 결과 권한은 이해하기가 더 복잡합니다. 에서 여러 정책 유형이 관련될 때 요청을 허용할지 여부를 AWS 결정하는 방법을 알아보려면 *IAM 사용 설명서*의 [정책 평가 로직](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)을 참조하세요.

# AWS CloudTrail 에서 IAM을 사용하는 방법
<a name="security_iam_service-with-iam"></a>

IAM을 사용하여 CloudTrail에 대한 액세스를 관리하기 전에 CloudTrail와 함께 사용할 수 있는 IAM 기능을 알아보세요.






**에서 사용할 수 있는 IAM 기능 AWS CloudTrail**  

| IAM 특성 | CloudTrail 지원 | 
| --- | --- | 
|  [자격 증명 기반 정책](#security_iam_service-with-iam-id-based-policies)  |   예  | 
|  [리소스 기반 정책](#security_iam_service-with-iam-resource-based-policies)  |   부분적  | 
|  [정책 작업](#security_iam_service-with-iam-id-based-policies-actions)  |   예  | 
|  [정책 리소스](#security_iam_service-with-iam-id-based-policies-resources)  |   예  | 
|  [정책 조건 키(서비스별)](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   아니요   | 
|  [ACL](#security_iam_service-with-iam-acls)  |   아니요   | 
|  [ABAC(정책의 태그)](#security_iam_service-with-iam-tags)  |   예  | 
|  [임시 보안 인증](#security_iam_service-with-iam-roles-tempcreds)  |   예  | 
|  [전달 액세스 세션(FAS)](#security_iam_service-with-iam-principal-permissions)  |   예  | 
|  [서비스 역할](#security_iam_service-with-iam-roles-service)  |   예  | 
|  [서비스 연결 역할](#security_iam_service-with-iam-roles-service-linked)  |   예  | 

CloudTrail 및 기타 AWS 서비스에서 대부분의 IAM 기능을 사용하는 방법을 전체적으로 알아보려면 *IAM 사용 설명서*의 [AWS IAM으로 작업하는 서비스를](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 참조하세요.

## CloudTrail에 대한 자격 증명 기반 정책
<a name="security_iam_service-with-iam-id-based-policies"></a>

**ID 기반 정책 지원:** 예

ID 기반 정책은 IAM 사용자, 사용자 그룹 또는 역할과 같은 ID에 연결할 수 있는 JSON 권한 정책 문서입니다. 이러한 정책은 사용자 및 역할이 어떤 리소스와 어떤 조건에서 어떤 작업을 수행할 수 있는지를 제어합니다. 자격 증명 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*에서 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)를 참조하세요.

IAM ID 기반 정책을 사용하면 허용되거나 거부되는 작업과 리소스뿐 아니라 작업이 허용되거나 거부되는 조건을 지정할 수 있습니다. JSON 정책에서 사용할 수 있는 모든 요소에 대해 알아보려면 *IAM 사용 설명서*의 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하세요.

### CloudTrail에 대한 자격 증명 기반 정책 예시
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



CloudTrail 자격 증명 기반 정책 예를 보려면 [에 대한 자격 증명 기반 정책 예제 AWS CloudTrail](security_iam_id-based-policy-examples.md) 단원을 참조하세요.

## CloudTrail 내 리소스 기반 정책
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**리소스 기반 정책 지원:** 부분적

리소스 기반 정책은 리소스에 연결하는 JSON 정책 설명서입니다. 리소스 기반 정책의 예제는 IAM *역할 신뢰 정책*과 Amazon S3 *버킷 정책*입니다. 리소스 기반 정책을 지원하는 서비스에서 서비스 관리자는 이러한 정책을 사용하여 특정 리소스에 대한 액세스를 통제할 수 있습니다. 정책이 연결된 리소스의 경우 정책은 지정된 보안 주체가 해당 리소스와 어떤 조건에서 어떤 작업을 수행할 수 있는지를 정의합니다. 리소스 기반 정책에서 [보안 주체를 지정](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)해야 합니다. 보안 주체에는 계정, 사용자, 역할, 페더레이션 사용자 또는가 포함될 수 있습니다 AWS 서비스.

교차 계정 액세스를 활성화하려는 경우, 전체 계정이나 다른 계정의 IAM 개체를 리소스 기반 정책의 보안 주체로 지정할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM에서 교차 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

CloudTrail은 다음과 같은 유형의 리소스 기반 정책을 지원합니다.
+ CloudTrail Lake와 외부 이벤트 소스의 통합에 사용되는 채널에 대한 리소스 기반 정책입니다 AWS. 채널의 리소스 기반 정책은 이벤트를 대상 이벤트 데이터 스토어에 전달하기 위해 채널에서 `PutAuditEvents`를 호출할 수 있는 보안 주체 엔터티(계정, 사용자, 역할 및 페더레이션 사용자)를 정의합니다. CloudTrail Lake와의 통합 생성에 대한 자세한 내용은 [외부의 이벤트 소스와 통합 생성 AWS](query-event-data-store-integration.md)의 내용을 참조하세요.
+ 이벤트 데이터 스토어에서 작업을 수행할 수 있는 위탁자를 제어할 수 있는 리소스 기반 정책. 리소스 기반 정책을 사용하여 이벤트 데이터 스토어에 대한 교차 계정 액세스를 제공할 수 있습니다.
+ 대시보드에 대한 새로 고침 일정을 설정할 때 CloudTrail이 정의한 간격으로 CloudTrail Lake 대시보드를 새로 고칠 수 있도록 허용하는 대시보드의 리소스 기반 정책입니다. 자세한 내용은 [CloudTrail 콘솔을 사용하여 사용자 지정 대시보드의 새로 고침 일정 설정](lake-dashboard-refresh.md) 단원을 참조하십시오.

### 예제
<a name="security_iam_service-with-iam-resource-based-policies-examples"></a>

CloudTrail 리소스 기반 정책의 예제는 [AWS CloudTrail 리소스 기반 정책 예제](security_iam_resource-based-policy-examples.md) 섹션을 참조하세요.

## CloudTrail 정책 작업
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**정책 작업 지원:** 예

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

JSON 정책의 `Action`요소는 정책에서 액세스를 허용하거나 거부하는 데 사용할 수 있는 작업을 설명합니다. 연결된 작업을 수행할 수 있는 권한을 부여하기 위한 정책에 작업을 포함하세요.



CloudTrail 작업 목록을 보려면 *서비스 권한 부여 참조*의 [AWS CloudTrail에서 정의한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscloudtrail.html#awscloudtrail-actions-as-permissions) 섹션을 참조하세요.

CloudTrail의 정책 작업은 작업 앞에 접두사를 사용합니다.

```
cloudtrail
```

예를 들어 `ListTags` API 작업을 사용하여 추적에 대한 태그를 나열할 수 있는 권한을 부여하려면 해당 정책에 `cloudtrail:ListTags` 작업을 포함합니다. 정책 문에는 `Action` 또는 `NotAction` 요소가 포함되어야 합니다. CloudTrail은 이 서비스로 수행할 수 있는 작업을 설명하는 고유한 작업 세트를 정의합니다.

명령문 하나에 여러 작업을 지정하려면 다음과 같이 쉼표로 구분합니다.

```
"Action": [
      "cloudtrail:AddTags",
      "cloudtrail:ListTags",
      "cloudtrail:RemoveTags
```

와일드카드(`*`)를 사용하여 여러 작업을 지정할 수 있습니다. 예를 들어, `Get`라는 단어로 시작하는 모든 작업을 지정하려면 다음 작업을 포함합니다.

```
"Action": "cloudtrail:Get*"
```







## CloudTrail 정책 리소스
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**정책 리소스 지원:** 예

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

`Resource` JSON 정책 요소는 작업이 적용되는 하나 이상의 객체를 지정합니다. 모범 사례에 따라 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)을 사용하여 리소스를 지정합니다. 리소스 수준 권한을 지원하지 않는 작업의 경우, 와일드카드(\$1)를 사용하여 해당 문이 모든 리소스에 적용됨을 나타냅니다.

```
"Resource": "*"
```

CloudTrail 리소스 유형 및 그 ACM의 목록을 보려면, *서비스 권한 부여 참조*의 [AWS CloudTrail에서 정의한 리소스](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscloudtrail.html#awscloudtrail-resources-for-iam-policies)를 참조하세요. 각 리소스의 ARN을 지정할 수 있는 작업을 알아보려면 [AWS CloudTrail가 정의한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscloudtrail.html#awscloudtrail-actions-as-permissions)을 참조하세요.





CloudTrail에는 추적, 이벤트 데이터 스토어, 대시보드 및 채널이라는 네 가지 리소스 유형이 있습니다. 각 리소스에는 고유의 Amazon 리소스 이름(ARN)이 연결되어 있습니다. 정책에서 ARN을 사용하여 정책이 적용되는 리소스를 식별합니다. CloudTrail은 현재 하위 리소스라고도 하는 다른 리소스 유형을 지원하지 않습니다.

CloudTrail 추적 리소스에는 다음 ARN이 있습니다.

```
arn:${Partition}:cloudtrail:${Region}:${Account}:trail/{TrailName}
```

CloudTrail 추적 리소스에는 다음과 같은 ARN이 있습니다.

```
arn:${Partition}:cloudtrail:${Region}:${Account}:eventdatastore/{EventDataStoreId}
```

CloudTrail 대시보드 리소스에는 다음 ARN이 있습니다.

```
arn:${Partition}:cloudtrail:${Region}:${Account}:dashboard/{DashboardName}
```

CloudTrail 채널 리소스에는 다음 ARN이 있습니다.

```
arn:${Partition}:cloudtrail:${Region}:${Account}:channel/{ChannelId}
```

ARN 형식에 대한 자세한 내용은 [Amazon 리소스 이름(ARNs) 및 AWS 서비스 네임스페이스를 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

예를 들어 ID AWS 계정 가 *123456789012*인의 경우 문에서 미국 동부(오하이오) 리전에 있는 *My-Trail*이라는 추적을 지정하려면 다음 ARN을 사용합니다.

```
"Resource": "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-Trail"
```

해당의 특정 계정에 속하는 모든 추적을 지정하려면 와일드카드(\$1)를 AWS 리전사용합니다.

```
"Resource": "arn:aws:cloudtrail:us-east-2:123456789012:trail/*"
```

리소스를 생성하기 위한 작업과 같은 일부 CloudTrail 작업은 특정 리소스에서 수행할 수 없습니다. 이 때는 와일드카드(`*`)를 사용해야 합니다.

```
"Resource": "*"
```

다양한 CloudTrail API 작업에는 여러 리소스가 관여합니다. 예를 들어 `CreateTrail`에는 로그 파일을 저장하기 위한 Amazon S3 버킷이 필요하므로 사용자는 버킷에 쓸 수 있는 권한이 있어야 합니다. 단일 문에서 여러 리소스를 지정하려면 ARN을 쉼표로 구분합니다.

```
"Resource": [
      "resource1",
      "resource2"
```

## CloudTrail 정책 조건 키
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**서비스별 정책 조건 키 지원:** 아니요 

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

`Condition` 요소는 정의된 기준에 따라 문이 실행되는 시기를 지정합니다. 같음(equals) 또는 미만(less than)과 같은 [조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)를 사용하여 정책의 조건을 요청의 값과 일치시키는 조건식을 생성할 수 있습니다. 모든 AWS 전역 조건 키를 보려면 *IAM 사용 설명서*의 [AWS 전역 조건 컨텍스트 키를](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 참조하세요.

CloudTrail은 자체 조건 키를 정의하지 않지만, 일부 글로벌 조건 키 사용을 지원합니다. 모든 AWS 전역 조건 키를 보려면 *IAM 사용 설명서*의 [AWS 전역 조건 컨텍스트 키를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).

CloudTrail 조건 키 목록을 보려면 *서비스 권한 부여 참조*의 [AWS CloudTrail조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscloudtrail.html#awscloudtrail-policy-keys) 섹션을 참조하세요. 조건 키를 사용할 수 있는 작업과 리소스를 알아보려면 [에서 정의한 작업을 AWS CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscloudtrail.html#awscloudtrail-actions-as-permissions) 참조하세요.

## CloudTrail의 ACL
<a name="security_iam_service-with-iam-acls"></a>

**ACL 지원:** 아니요 

액세스 제어 목록(ACL)은 어떤 보안 주체(계정 멤버, 사용자 또는 역할)가 리소스에 액세스할 수 있는 권한을 가지고 있는지를 제어합니다. ACL은 JSON 정책 문서 형식을 사용하지 않지만 리소스 기반 정책과 유사합니다.

## CloudTrail를 사용한 ACL
<a name="security_iam_service-with-iam-tags"></a>

**ABAC 지원(정책의 태그):** 예

속성 기반 액세스 제어(ABAC)는 태그라고 불리는 속성을 기반으로 권한을 정의하는 권한 부여 전략입니다. IAM 엔터티 및 AWS 리소스에 태그를 연결한 다음 보안 주체의 태그가 리소스의 태그와 일치할 때 작업을 허용하는 ABAC 정책을 설계할 수 있습니다.

태그에 근거하여 액세스를 제어하려면 `aws:ResourceTag/key-name`, `aws:RequestTag/key-name`또는 `aws:TagKeys`조건 키를 사용하여 정책의 [조건 요소](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)에 태그 정보를 제공합니다.

서비스가 모든 리소스 유형에 대해 세 가지 조건 키를 모두 지원하는 경우, 값은 서비스에 대해 **예**입니다. 서비스가 일부 리소스 유형에 대해서만 세 가지 조건 키를 모두 지원하는 경우, 값은 **부분적**입니다.

ABAC에 대한 자세한 내용은 *IAM 사용 설명서*의 [ABAC 권한 부여를 통한 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)를 참조하세요. ABAC 설정 단계가 포함된 자습서를 보려면 *IAM 사용 설명서*의 [속성 기반 액세스 제어(ABAC) 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)을 참조하세요.

태그를 CloudTrail 리소스에 연결하거나 요청을 통해 태그를 CloudTrail에 전달할 수 있습니다. CloudTrail 리소스의 태그 지정에 대한 자세한 내용은 [CloudTrail 콘솔을 사용하여 추적 생성](cloudtrail-create-a-trail-using-the-console-first-time.md) 및 [를 사용하여 추적 생성, 업데이트 및 관리 AWS CLI](cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.md) 단원을 참조하세요.

## CloudTrail에서 임시 자격 증명 사용
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**임시 자격 증명 지원:** 예

임시 자격 증명은 AWS 리소스에 대한 단기 액세스를 제공하며 페더레이션을 사용하거나 역할을 전환할 때 자동으로 생성됩니다. 장기 액세스 키를 사용하는 대신 임시 자격 증명을 동적으로 생성하는 것이 AWS 좋습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM의 임시 보안 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 및 [IAM으로 작업하는AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 섹션을 참조하세요.

## CloudTrail에 대한 액세스 세션 전달
<a name="security_iam_service-with-iam-principal-permissions"></a>

**전달 액세스 세션(FAS) 지원:** 예

 전달 액세스 세션(FAS)은를 호출하는 보안 주체의 권한을 다운스트림 서비스에 AWS 서비스 대한 요청과 AWS 서비스함께 사용합니다. FAS 요청 시 정책 세부 정보는 [전달 액세스 세션](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)을 참조하세요.

## CloudTrail의 서비스 주제
<a name="security_iam_service-with-iam-roles-service"></a>

**서비스 역할 지원:** 예

 서비스 역할은 서비스가 사용자를 대신하여 작업을 수행하는 것으로 가정하는 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)입니다. IAM 관리자는 IAM 내에서 서비스 역할을 생성, 수정 및 삭제할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스 AWS에 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 참조하세요.

**주의**  
서비스 역할에 대한 권한을 변경하면 CloudTrail 기능이 중단될 수 있습니다. CloudTrail에서 관련 지침을 제공하는 경우에만 서비스 역할을 편집하세요.

## CloudTrail 서비스 연결 역할
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**서비스 연결 역할 지원:** 예

 서비스 연결 역할은에 연결된 서비스 역할의 한 유형입니다 AWS 서비스. 서비스는 사용자를 대신하여 작업을 수행하기 위해 역할을 수임할 수 있습니다. 서비스 연결 역할은에 표시 AWS 계정 되며 서비스가 소유합니다. IAM 관리자는 서비스 연결 역할의 권한을 볼 수 있지만 편집은 할 수 없습니다.

CloudTrail은 와의 통합을 위한 서비스 연결 역할을 지원합니다 AWS Organizations. 이 역할은 조직 추적 또는 이벤트 데이터 스토어를 생성하는 데 필요합니다. 조직 추적 및 이벤트 데이터 스토어는 조직의 모든 AWS 계정 에 대한 이벤트를 로깅합니다. CloudTrail 서비스 연결 역할 생성 또는 관리에 대한 자세한 내용은 [CloudTrail에 서비스 연결 역할 사용](using-service-linked-roles.md) 섹션을 참조하세요.

# 에 대한 자격 증명 기반 정책 예제 AWS CloudTrail
<a name="security_iam_id-based-policy-examples"></a>

기본적으로 사용자 및 역할은 CloudTrail 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 사용자에게 사용자가 필요한 리소스에서 작업을 수행할 권한을 부여하려면 IAM 관리자가 IAM 정책을 생성하면 됩니다.

이러한 예제 JSON 정책 문서를 사용하여 IAM ID 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*의 [IAM 정책 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)을 참조하세요.

각 리소스 유형에 대한 ARN 형식을 포함하여 CloudTrail에서 정의한 작업 및 리소스 유형에 대한 자세한 내용은 *서비스 권한 부여 참조*의 [AWS CloudTrail에 대한 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscloudtrail.html) 섹션을 참조하세요.

**Topics**
+ [정책 모범 사례](#security_iam_service-with-iam-policy-best-practices)
+ [예: 지정된 추적에 대한 작업 허용 및 거부](#security_iam_id-based-policy-examples-allow-deny-for-specific-trail)
+ [예: 특정 추적 작업에 대한 정책 생성 및 적용](#grant-custom-permissions-for-cloudtrail-users-resource-level)
+ [예제: 태그를 기반으로 이벤트 데이터 스토어를 생성 또는 삭제하기 위한 액세스 거부](#security_iam_id-based-policy-examples-eds-tags)
+ [CloudTrail 콘솔 사용](#security_iam_id-based-policy-examples-console)
+ [사용자가 자신이 권한을 볼 수 있도록 허용](#security_iam_id-based-policy-examples-view-own-permissions)
+ [CloudTrail 사용자에 대한 사용자 지정 권한 부여](#grant-custom-permissions-for-cloudtrail-users)

## 정책 모범 사례
<a name="security_iam_service-with-iam-policy-best-practices"></a>

자격 증명 기반 정책에 따라 계정에서 사용자가 CloudTrail 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부가 결정됩니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. ID 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르세요.
+ ** AWS 관리형 정책을 시작하고 최소 권한으로 전환 -** 사용자 및 워크로드에 권한 부여를 시작하려면 많은 일반적인 사용 사례에 대한 권한을 부여하는 *AWS 관리형 정책을* 사용합니다. 에서 사용할 수 있습니다 AWS 계정. 사용 사례에 맞는 AWS 고객 관리형 정책을 정의하여 권한을 추가로 줄이는 것이 좋습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) 또는 [AWS 직무에 대한 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)을 참조하세요.
+ **최소 권한 적용** – IAM 정책을 사용하여 권한을 설정하는 경우, 작업을 수행하는 데 필요한 권한만 부여합니다. 이렇게 하려면 *최소 권한*으로 알려진 특정 조건에서 특정 리소스에 대해 수행할 수 있는 작업을 정의합니다. IAM을 사용하여 권한을 적용하는 방법에 대한 자세한 정보는 *IAM 사용 설명서*에 있는 [IAM의 정책 및 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.
+ **IAM 정책의 조건을 사용하여 액세스 추가 제한** – 정책에 조건을 추가하여 작업 및 리소스에 대한 액세스를 제한할 수 있습니다. 예를 들어, SSL을 사용하여 모든 요청을 전송해야 한다고 지정하는 정책 조건을 작성할 수 있습니다. AWS 서비스와 같은 특정를 통해 사용되는 경우 조건을 사용하여 서비스 작업에 대한 액세스 권한을 부여할 수도 있습니다 CloudFormation. 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소: 조건](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)을 참조하세요.
+ **IAM Access Analyzer를 통해 IAM 정책을 확인하여 안전하고 기능적인 권한 보장** - IAM Access Analyzer에서는 IAM 정책 언어(JSON)와 모범 사례가 정책에서 준수되도록 새로운 및 기존 정책을 확인합니다. IAM Access Analyzer는 100개 이상의 정책 확인 항목과 실행 가능한 추천을 제공하여 안전하고 기능적인 정책을 작성하도록 돕습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM Access Analyzer에서 정책 검증](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)을 참조하세요.
+ **다중 인증(MFA) 필요 -**에서 IAM 사용자 또는 루트 사용자가 필요한 시나리오가 있는 경우 추가 보안을 위해 MFA를 AWS 계정켭니다. API 작업을 직접적으로 호출할 때 MFA가 필요하면 정책에 MFA 조건을 추가합니다. 자세한 내용은 *IAM 사용 설명서*의 [MFA를 통한 보안 API 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)를 참조하세요.

IAM의 모범 사례에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

CloudTrail에는 정책 문의 `Condition` 요소에 사용할 수 있는 서비스별 컨텍스트 키가 없습니다.

## 예: 지정된 추적에 대한 작업 허용 및 거부
<a name="security_iam_id-based-policy-examples-allow-deny-for-specific-trail"></a>

다음 예제에서는 이 정책이 있는 사용자가 추적의 상태와 구성을 보고 *My-First-Trail*이라는 추적에 대한 로깅을 시작 및 중지하도록 허용하는 정책을 보여 줍니다. 이 추적은 AWS 계정 ID가 *123456789012*인의 미국 동부(오하이오) 리전(홈 리전)에서 생성되었습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "cloudtrail:StartLogging",
              "cloudtrail:StopLogging",
              "cloudtrail:GetTrail",
              "cloudtrail:GetTrailStatus",
              "cloudtrail:GetEventSelectors"
          ],
          "Resource": [
              "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail"
          ]
      }
  ]
}
```

------

다음 예는 이름이 *My-First-Trail*이 아닌 모든 추적에 대해 CloudTrail 작업을 명시적으로 거부하는 정책을 보여 줍니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Deny",
          "Action": [
              "cloudtrail:*"
          ],
          "NotResource": [
              "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail"
          ]
      }
  ]
}
```

------

## 예: 특정 추적 작업에 대한 정책 생성 및 적용
<a name="grant-custom-permissions-for-cloudtrail-users-resource-level"></a>

권한과 정책을 사용하여 CloudTrail 추적에서 사용자가 특정 작업을 수행하는 기능을 제어할 수 있습니다.

예를 들어, 회사 개발자 그룹에 소속된 사용자는 특정 추적에 대한 로깅을 시작하거나 중지해서는 안 됩니다. 하지만 해당 추적에서 `DescribeTrails` 및 `GetTrailStatus` 작업을 수행할 수 있는 권한을 부여해야 할 수도 있습니다. 개발자 그룹의 사용자가 자신이 관리하는 추적에 대한 `StartLogging` 또는 `StopLogging` 작업을 허용하게 하려고 합니다.

2개의 정책 문을 생성하고, IAM에서 생성하는 개발자 그룹에 연결할 수 있습니다. IAM의 그룹에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 그룹](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) 단원을 참조하세요.

첫 번째 정책에서 지정한 추적 ARN에 대한 `StartLogging` 및 `StopLogging` 작업을 거부합니다. 다음 예제에서 추적 ARN은 `arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail`입니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1446057698000",
            "Effect": "Deny",
            "Action": [
                "cloudtrail:StartLogging",
                "cloudtrail:StopLogging"
            ],
            "Resource": [
                "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail"
            ]
        }
    ]
}
```

------

두 번째 정책에서 `DescribeTrails` 및 `GetTrailStatus` 작업은 모든 CloudTrail 리소스에서 허용됩니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1446072643000",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:DescribeTrails",
                "cloudtrail:GetTrail",
                "cloudtrail:GetTrailStatus"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

개발자 그룹에 소속된 사용자가 첫 번째 정책에서 지정된 추적의 로깅을 시작하거나 중지하려고 하면 해당 사용자에게 액세스 거부 예외가 발생합니다. 개발자 그룹에 소속된 사용자는 그들이 생성하고 관리하는 추적에서 로깅을 시작하고 중지할 수 있습니다.

다음 예제는 라는 이름의 AWS CLI 프로필에서 구성된 개발자 그룹을 보여줍니다`devgroup`. 먼저 `devgroup`의 사용자가 `describe-trails` 명령을 실행합니다.

```
$ aws --profile devgroup cloudtrail describe-trails
```

명령은 다음 출력과 함께 성공적으로 완료됩니다.

```
{
    "trailList": [
        {
            "IncludeGlobalServiceEvents": true, 
            "Name": "Default", 
            "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail", 
            "IsMultiRegionTrail": false, 
            "S3BucketName": "amzn-s3-demo-bucket", 
            "HomeRegion": "us-east-2"
        }
    ]
}
```

그런 다음 사용자가 첫 번째 정책에서 지정된 추적의 `get-trail-status` 명령을 실행합니다.

```
$ aws --profile devgroup cloudtrail get-trail-status --name Example-Trail
```

명령은 다음 출력과 함께 성공적으로 완료됩니다.

```
{
    "LatestDeliveryTime": 1449517556.256, 
    "LatestDeliveryAttemptTime": "2015-12-07T19:45:56Z", 
    "LatestNotificationAttemptSucceeded": "", 
    "LatestDeliveryAttemptSucceeded": "2015-12-07T19:45:56Z", 
    "IsLogging": true, 
    "TimeLoggingStarted": "2015-12-07T19:36:27Z", 
    "StartLoggingTime": 1449516987.685, 
    "StopLoggingTime": 1449516977.332, 
    "LatestNotificationAttemptTime": "", 
    "TimeLoggingStopped": "2015-12-07T19:36:17Z"
}
```

다음으로 `devgroup` 그룹의 사용자가 동일한 추적에서 `stop-logging` 명령을 실행합니다.

```
$ aws --profile devgroup cloudtrail stop-logging --name Example-Trail
```

명령이 다음과 같은 액세스가 거부된 예외를 반환합니다.

```
A client error (AccessDeniedException) occurred when calling the StopLogging operation: Unknown
```

사용자는 같은 추적에서 `start-logging` 명령을 실행합니다.

```
$ aws --profile devgroup cloudtrail start-logging --name Example-Trail
```

다시 명령은 다음과 같은 액세스가 거부된 예외를 반환합니다.

```
A client error (AccessDeniedException) occurred when calling the StartLogging operation: Unknown 
```

## 예제: 태그를 기반으로 이벤트 데이터 스토어를 생성 또는 삭제하기 위한 액세스 거부
<a name="security_iam_id-based-policy-examples-eds-tags"></a>

다음 정책 예제는 다음 조건 중 하나 이상이 충족되지 않으면, `CreateEventDataStore`를 사용하여 이벤트 데이터 스토어를 만들 수 있는 권한이 거부됩니다.
+ 이벤트 데이터 스토어에는 자체 적용된 `stage`의 태그 키가 없습니다.
+ 스테이지 태그의 값은 `alpha`, `beta`, `gamma`, `prod`가 아닙니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "cloudtrail:CreateEventDataStore",
            "Resource": "*",
            "Condition": {
                "Null": {
                    "aws:RequestTag/stage": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": "cloudtrail:CreateEventDataStore",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringNotEquals": {
                    "aws:RequestTag/stage": [
                        "alpha",
                        "beta",
                        "gamma",
                        "prod"
                    ]
                }
            }
        }
    ]
}
```

------

다음 정책 예에서 이벤트 데이터 스토어에 `prod` 값을 가진 `stage` 태그가 있는 경우 `DeleteEventDataStore`를 사용하여 이벤트 데이터 스토어를 삭제할 수 있는 권한은 거부됩니다. 이와 같은 정책을 사용하면 이벤트 데이터 스토어가 실수로 삭제되지 않도록 보호할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "cloudtrail:DeleteEventDataStore",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/stage": "prod"
                }
            }
        }
    ]
}
```

------

## CloudTrail 콘솔 사용
<a name="security_iam_id-based-policy-examples-console"></a>

 AWS CloudTrail 콘솔에 액세스하려면 최소 권한 집합이 있어야 합니다. 이러한 권한은에서 CloudTrail 리소스에 대한 세부 정보를 나열하고 볼 수 있도록 허용해야 합니다 AWS 계정. 최소 필수 권한보다 더 제한적인 ID 기반 정책을 생성하는 경우, 콘솔이 해당 정책에 연결된 엔티티(사용자 또는 역할)에 대해 의도대로 작동하지 않습니다.

 AWS CLI 또는 AWS API만 호출하는 사용자에게는 최소 콘솔 권한을 허용할 필요가 없습니다. 대신, 수행하려는 API 작업과 일치하는 작업에만 액세스할 수 있도록 합니다.

### CloudTrail 관리에 대한 권한 부여
<a name="grant-permissions-for-cloudtrail-administration"></a>

IAM 역할 또는 사용자가 추적, 이벤트 데이터 스토어, 채널과 같은 CloudTrail 리소스를 관리할 수 있게 하려면, CloudTrail 작업과 연관된 작업을 수행할 수 있는 명시적 권한을 부여해야 합니다. 대부분의 경우 사전 정의된 권한이 포함된 AWS 관리형 정책을 사용할 수 있습니다.

**참고**  
CloudTrail 관리 작업을 수행할 수 있도록 사용자에게 부여하는 권한은 로그 파일을 Amazon S3 버킷에 전달하거나 알림을 Amazon SNS 주제에 전송하기 위해 CloudTrail에서 필요한 권한과 같지 않습니다. 이러한 권한에 대한 자세한 내용은 [CloudTrail에 대한 Amazon S3 버킷 정책](create-s3-bucket-policy-for-cloudtrail.md)를 참조하십시오.  
Amazon CloudWatch Logs와의 통합을 구성하는 경우 CloudTrail에는 Amazon CloudWatch Logs 로그 그룹에 이벤트를 전달하기 위해 수임할 수 있는 역할도 필요합니다. CloudTrail이 사용하는 역할을 생성해야 합니다. 자세한 내용은 [CloudTrail 콘솔에서 Amazon CloudWatch Logs 정보를 확인하고 구성할 수 있는 권한 부여](#grant-cloudwatch-permissions-for-cloudtrail-users) 및 [CloudWatch Logs에 이벤트 전송](send-cloudtrail-events-to-cloudwatch-logs.md) 섹션을 참조하세요.

CloudTrail에 사용할 수 있는 AWS 관리형 정책은 다음과 같습니다.
+  [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html) – 이 정책은 추적, 이벤트 데이터 스토어, 채널과 같은 CloudTrail 리소스에서의 CloudTrail 작업에 대한 전체 액세스를 제공합니다. 이 정책은 CloudTrail 추적, 이벤트 데이터 스토어 및 채널을 생성, 업데이트 및 삭제하는 데 필요한 권한을 제공합니다.

   또한 Amazon S3 버킷, CloudWatch Logs의 로그 그룹 및 추적에 대한 Amazon SNS 주제를 관리할 수 있는 권한도 제공합니다. 하지만 `AWSCloudTrail_FullAccess` 관리형 정책에서는 Amazon S3 버킷, CloudWatch Logs의 로그 그룹 또는 Amazon SNS 주제를 삭제할 수 있는 권한은 제공하지 않습니다. 다른의 관리형 정책에 대한 자세한 AWS 서비스내용은 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html) 참조하세요.
**참고**  
이 **AWSCloudTrail\$1FullAccess** 정책은 사용자 간에 광범위하게 공유하기 위한 것이 아닙니다 AWS 계정. 이 역할이 있는 사용자는 자신의 AWS 계정에서 가장 민감하고 중요한 감사 기능을 사용 중지하거나 재구성할 수 있습니다. 이러한 이유로 이 정책은 계정 관리자에게만 적용해야 합니다. 이 정책의 사용을 면밀히 관리하고 모니터링해야 합니다.
+  [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_ReadOnlyAccess.html) – 이 정책은 최근 이벤트 및 이벤트 기록을 포함하여 CloudTrail 콘솔을 확인할 수 있는 권한을 부여합니다. 또한 이 정책을 통해 기존 추적, 이벤트 데이터 스토어 및 채널을 확인할 수도 있습니다. 이 정책을 사용하는 역할 및 사용자는 [이벤트 기록을 다운로드](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html#downloading-events)할 수 있지만, 추적, 이벤트 데이터 스토어 또는 채널을 만들거나 업데이트할 수는 없습니다.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요.
+ 의 사용자 및 그룹 AWS IAM Identity Center:

  권한 세트를 생성합니다. *AWS IAM Identity Center 사용자 안내서*에서 [권한 세트 생성](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)의 지침을 따릅니다.
  + (권장되지 않음) 정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. *IAM 사용 설명서*에서 [사용자(콘솔)에 권한 추가](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)의 지침을 따릅니다.

#### 추가 리소스
<a name="cloudtrail-notifications-more-info-3"></a>

IAM을 사용하여 사용자 및 역할과 같은 자격 증명, 계정의 리소스에 대한 액세스 권한을 부여하는 방법에 대한 자세한 내용은 [IAM 사용 설명서의 IAM 설정](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html) 및 [AWS 리소스에 대한 액세스 관리를](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) 참조하세요. ** 

 AWS CLI 또는 AWS API만 호출하는 사용자에게는 최소 콘솔 권한을 허용할 필요가 없습니다. 그 대신, 수행하려는 API 작업과 일치하는 작업에만 액세스할 수 있도록 합니다.

## 사용자가 자신이 권한을 볼 수 있도록 허용
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

이 예제는 IAM 사용자가 자신의 사용자 ID에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여줍니다. 이 정책에는 콘솔에서 또는 AWS CLI 또는 AWS API를 사용하여 프로그래밍 방식으로이 작업을 완료할 수 있는 권한이 포함됩니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## CloudTrail 사용자에 대한 사용자 지정 권한 부여
<a name="grant-custom-permissions-for-cloudtrail-users"></a>

CloudTrail 정책은 CloudTrail로 작업하는 사용자에게 권한을 부여합니다. 사용자에게 서로 다른 권한을 부여해야 하는 경우 CloudTrail 정책을 IAM 그룹이나 사용자에게 연결할 수 있습니다. 특정 권한을 포함하거나 제외하도록 정책을 편집할 수 있습니다. 또한 사용자 고유의 사용자 지정 정책을 만들 수도 있습니다. 정책에서는 사용자가 수행하도록 허용한 작업 및 사용자가 작업을 수행하도록 허용한 리소스를 정의하는 JSON 문서입니다. 구체적인 예는 [예: 지정된 추적에 대한 작업 허용 및 거부](#security_iam_id-based-policy-examples-allow-deny-for-specific-trail) 및 [예: 특정 추적 작업에 대한 정책 생성 및 적용](#grant-custom-permissions-for-cloudtrail-users-resource-level) 단원을 참조하십시오.

**Contents**
+ [읽기 전용 액세스](#grant-custom-permissions-for-cloudtrail-users-read-only)
+ [모든 액세스](#grant-custom-permissions-for-cloudtrail-users-full-access)
+ [CloudTrail 콘솔에서 AWS Config 정보를 볼 수 있는 권한 부여](#grant-aws-config-permissions-for-cloudtrail-users)
+ [CloudTrail 콘솔에서 Amazon CloudWatch Logs 정보를 확인하고 구성할 수 있는 권한 부여](#grant-cloudwatch-permissions-for-cloudtrail-users)
+ [추가 정보](#cloudtrail-notifications-more-info-2)

### 읽기 전용 액세스
<a name="grant-custom-permissions-for-cloudtrail-users-read-only"></a>

다음 예에서는 CloudTrail 추적에 대한 읽기 전용 액세스 권한을 부여하는 정책을 보여 줍니다. 이 정책은 관리형 정책 **AWSCloudTrail\$1ReadOnlyAccess**와 동일합니다. 추적 정보를 볼 수 있는 사용자 권한을 허용하지만 추적을 생성하거나 업데이트할 권한은 허용하지 않습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudtrail:Get*",
                "cloudtrail:Describe*",
                "cloudtrail:List*",
                "cloudtrail:LookupEvents"
            ],
            "Resource": "*"
        }
    ]
}
```

------

정책 설명에서 `Effect` 요소는 작업 허용 또는 거부 여부를 지정합니다. `Action` 요소는 사용자가 수행할 수 있도록 허용된 특정 작업을 나열합니다. `Resource` 요소는 사용자가 해당 작업을 수행할 수 있는 AWS 리소스를 나열합니다. CloudTrail 작업에 대한 액세스를 제어하는 정책의 경우 `Resource` 요소가 일반적으로 `*`로 설정되며 여기서 와일드카드는 ‘모든 리소스’를 의미합니다.

서비스가 지원하는 API에 대한 `Action` 요소의 값입니다. 작업 앞에는 CloudTrail 작업 참조를 나타내기 위해 `cloudtrail:`이 위치합니다. 다음 예와 같이 `Action` 요소에서 `*` 와일드카드 문자를 사용할 수 있습니다.
+ `"Action": ["cloudtrail:*Logging"]`

  이렇게 하면 "Logging"으로 끝나는 모든 CloudTrail 작업이 허용됩니다(`StartLogging`, `StopLogging`).
+ `"Action": ["cloudtrail:*"]`

  이렇게 하면 모든 CloudTrail 작업이 허용되지만 다른 AWS 서비스에 대한 작업은 허용되지 않습니다.
+ `"Action": ["*"]`

  이렇게 하면 모든 AWS 작업이 허용됩니다. 이 권한은 계정에 대해 AWS 관리자로 작업하는 사용자에게 적합합니다.

읽기 전용 정책에서는 `CreateTrail`, `UpdateTrail`, `StartLogging` 및 `StopLogging` 작업에 대한 사용자 권한을 허용하지 않습니다. 이 정책이 적용된 사용자는 추적을 만들고, 추적을 업데이트하며, 로깅을 켜거나 끌 수 없습니다. CloudTrail 작업 목록은 [AWS CloudTrail API 참조](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/)를 참조하세요.

### 모든 액세스
<a name="grant-custom-permissions-for-cloudtrail-users-full-access"></a>

다음 예에서는 CloudTrail에 대한 모든 액세스 권한을 부여하는 정책을 보여 줍니다. 이 정책은 관리형 정책 **AWSCloudTrail\$1FullAccess**와 동일합니다. 사용자에게 모든 CloudTrail 작업을 수행할 수 있는 권한을 부여합니다. 또한 사용자가 Amazon S3 및 AWS Lambda에서 데이터 이벤트를 로그하고, Amazon S3 버킷에서 파일을 관리하며, CloudWatch Logs에서 CloudTrail 로그 이벤트를 모니터링하는 방법을 관리하고, 사용자가 연결된 계정에서 Amazon SNS 주제를 관리할 수 있도록 합니다.

**중요**  
**AWSCloudTrail\$1FullAccess** 정책 또는 이에 상응하는 권한은 AWS 계정 전체에서 광범위하게 공유하기 위한 것이 아닙니다. 이 역할 또는 이에 상응하는 액세스 권한이 있는 사용자는 AWS 계정에서 가장 민감하고 중요한 감사 기능을 비활성화하거나 재구성할 수 있습니다. 이러한 이유로 이 정책은 계정 관리자에게만 적용해야 하며 이 정책의 사용을 긴밀하게 제어하고 모니터링해야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:AddPermission",
                "sns:CreateTopic",
                "sns:SetTopicAttributes",
                "sns:GetTopicAttributes"
            ],
            "Resource": [
                "arn:aws:sns:*:*:aws-cloudtrail-logs*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:ListTopics"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-logging-bucket1*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "cloudtrail:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:aws-cloudtrail-logs*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles",
                "iam:GetRolePolicy",
                "iam:GetUser"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "cloudtrail.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:CreateKey",
                "kms:CreateAlias",
                "kms:ListKeys",
                "kms:ListAliases"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "lambda:ListFunctions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:ListGlobalTables",
                "dynamodb:ListTables"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### CloudTrail 콘솔에서 AWS Config 정보를 볼 수 있는 권한 부여
<a name="grant-aws-config-permissions-for-cloudtrail-users"></a>

CloudTrail 콘솔에서 이벤트와 관련된 리소스를 포함하여 해당 이벤트 정보를 볼 수 있습니다. 이러한 리소스의 경우 AWS Config 콘솔에서 AWS Config 아이콘을 선택하여 해당 리소스의 타임라인을 볼 수 있습니다. 사용자에게 읽기 전용 AWS Config 액세스 권한을 부여하려면이 정책을 사용자에게 연결합니다. 정책에서는 AWS Config에서 설정을 변경하는 권한을 허용하지 않습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "config:Get*",
            "config:Describe*",
            "config:List*"
        ],
        "Resource": "*"
    }]
}
```

------

자세한 내용은 [에서 참조되는 리소스 보기 AWS Config](view-cloudtrail-events-console.md#viewing-resources-config) 단원을 참조하세요.

### CloudTrail 콘솔에서 Amazon CloudWatch Logs 정보를 확인하고 구성할 수 있는 권한 부여
<a name="grant-cloudwatch-permissions-for-cloudtrail-users"></a>

충분한 권한이 있는 경우 CloudTrail 콘솔에서 CloudWatch Logs로의 이벤트 전달을 확인하고 구성할 수 있습니다. 이러한 권한은 CloudTrail 관리자에게 부여되는 권한 범위를 벗어날 수 있습니다. CloudWatch Logs와 CloudTrail 통합을 구성하고 관리할 관리자에게 이 정책을 연결합니다. 이 정책은 CloudTrail 또는 CloudWatch Logs에서 직접 관리자에게 권한을 부여하지 않지만, 대신 CloudTrail이 CloudWatch Logs 그룹에 이벤트를 성공적으로 전달하기 위해 맡을 역할을 생성하고 구성하는 데 필요한 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iam:CreateRole",
            "iam:PutRolePolicy",
            "iam:AttachRolePolicy",
            "iam:ListRoles",
            "iam:GetRolePolicy",
            "iam:GetUser"
        ],
        "Resource": "*"
    }]
}
```

------

자세한 내용은 [Amazon CloudWatch Logs로 CloudTrail 로그 파일 모니터링](monitor-cloudtrail-log-files-with-cloudwatch-logs.md) 단원을 참조하세요.

### 추가 정보
<a name="cloudtrail-notifications-more-info-2"></a>

IAM을 사용하여 사용자 및 역할과 같은 자격 증명에 계정의 리소스에 대한 액세스 권한을 부여하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 리소스에 대한 [시작하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html) 및 액세스 관리를 참조하세요. [AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) 







# AWS CloudTrail 리소스 기반 정책 예제
<a name="security_iam_resource-based-policy-examples"></a>

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

CloudTrail은 다음과 같은 유형의 리소스 기반 정책을 지원합니다.
+ CloudTrail Lake와 외부 이벤트 소스의 통합에 사용되는 채널에 대한 리소스 기반 정책입니다 AWS. 채널의 리소스 기반 정책은 이벤트를 대상 이벤트 데이터 스토어에 전달하기 위해 채널에서 `PutAuditEvents`를 호출할 수 있는 보안 주체 엔터티(계정, 사용자, 역할 및 페더레이션 사용자)를 정의합니다. CloudTrail Lake와의 통합 생성에 대한 자세한 내용은 [외부의 이벤트 소스와 통합 생성 AWS](query-event-data-store-integration.md)의 내용을 참조하세요.
+ 이벤트 데이터 스토어에서 작업을 수행할 수 있는 위탁자를 제어할 수 있는 리소스 기반 정책. 리소스 기반 정책을 사용하여 이벤트 데이터 스토어에 대한 교차 계정 액세스를 제공할 수 있습니다.
+ 대시보드에 대한 새로 고침 일정을 설정할 때 CloudTrail이 정의한 간격으로 CloudTrail Lake 대시보드를 새로 고칠 수 있도록 허용하는 대시보드의 리소스 기반 정책입니다. 자세한 내용은 [CloudTrail 콘솔을 사용하여 사용자 지정 대시보드의 새로 고침 일정 설정](lake-dashboard-refresh.md) 단원을 참조하십시오.

**Topics**
+ [채널용 리소스 기반 정책 예제](#security_iam_resource-based-policy-examples-channels)
+ [이벤트 데이터 스토어의 리소스 기반 정책 예시](#security_iam_resource-based-policy-examples-eds)
+ [대시보드용 리소스 기반 정책 예시](#security_iam_resource-based-policy-examples-dashboards)

## 채널용 리소스 기반 정책 예제
<a name="security_iam_resource-based-policy-examples-channels"></a>

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

정책에 필요한 정보는 통합 유형에 따라 결정됩니다.
+ 직접 통합의 경우 CloudTrail은 파트너의 AWS 계정 ID를 정책에 포함하도록 요구하고, 파트너가 제공한 고유한 외부 ID를 입력하도록 요구합니다. CloudTrail 콘솔을 사용하여 통합을 생성할 때 CloudTrail은 리소스 정책에 파트너의 AWS 계정 IDs를 자동으로 추가합니다. 정책에 필요한 AWS 계정 번호를 가져오는 방법을 알아보려면 [파트너의 설명서를](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-event-data-store-integration.html#cloudtrail-lake-partner-information#lake-integration-partner-documentation) 참조하세요.
+ 솔루션 통합의 경우 하나 이상의 AWS 계정 ID를 보안 주체로 지정해야 하며 선택적으로 외부 ID를 입력하여 혼동된 대리자를 방지할 수 있습니다.

다음은 리소스 기반 정책에 대한 요구 사항입니다.
+  정책에는 하나 이상의 정책 문이 포함됩니다. 정책은 최대 20개의 문을 보유할 수 있습니다.
+  각 문에는 하나 이상의 보안 주체가 포함됩니다. 위탁자는 계정, 사용자, 역할 또는 페더레이션 사용자일 수 있습니다. 문에는 최대 50개의 보안 주체가 있을 수 있습니다.
+ 정책에 정의된 리소스 ARN은 정책이 연결된 채널 ARN과 일치해야 합니다.
+  정책에는 `cloudtrail-data:PutAuditEvents`의 한 가지 작업만 포함됩니다.

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

**Topics**
+ [예: 보안 주체에 채널 액세스 제공](#security_iam_resource-based-policy-examples-principals)
+ [예제: 외부 ID를 사용하여 혼동된 대리자 문제 방지](#security_iam_resource-based-policy-examples-externalID)

### 예: 보안 주체에 채널 액세스 제공
<a name="security_iam_resource-based-policy-examples-principals"></a>

다음 예제에서는 ARN `arn:aws:iam::111122223333:root`, `arn:aws:iam::444455556666:root` 및 `arn:aws:iam::123456789012:root`에 ARN `arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b`를 사용하여 CloudTrail 채널에서 [PutAuditEvents](https://docs.aws.amazon.com/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html) 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를 사용하여 혼동된 대리자 문제 방지
<a name="security_iam_resource-based-policy-examples-externalID"></a>

다음 예제에서는 외부 ID를 사용하여 [혼동된 대리자](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cross-service-confused-deputy-prevention.html) 문제를 방지합니다. 혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다.

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

예제에서는 ARN `arn:aws:iam::111122223333:root`, `arn:aws:iam::444455556666:root` 및 `arn:aws:iam::123456789012:root`를 사용하는 보안 주체에 `PutAuditEvents` API 호출에 정책에 포함된 외부 ID 값이 포함된 경우 CloudTrail 채널 리소스에 [PutAuditEvents](https://docs.aws.amazon.com/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html) 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"
        }
    ]
}
```

------

## 이벤트 데이터 스토어의 리소스 기반 정책 예시
<a name="security_iam_resource-based-policy-examples-eds"></a>

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

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

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

이벤트 데이터 스토어의 리소스 기반 정책에서 지원되는 작업은 다음과 같습니다.
+  `cloudtrail:StartQuery` 
+  `cloudtrail:CancelQuery` 
+  `cloudtrail:ListQueries` 
+  `cloudtrail:DescribeQuery` 
+  `cloudtrail:GetQueryResults` 
+  `cloudtrail:GenerateQuery` 
+  `cloudtrail:GenerateQueryResultsSummary` 
+  `cloudtrail:GetEventDataStore` 

CloudTrail 콘솔에서 이벤트 데이터 스토어를 [생성](query-event-data-store-cloudtrail.md#query-event-data-store-cloudtrail-procedure) 또는 [업데이트](query-event-data-store-update.md)하거나 대시보드를 관리할 때 이벤트 데이터 스토어에 리소스 기반 정책을 추가할 수 있는 옵션이 제공됩니다. [put-resource-policy](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/put-resource-policy.html) 명령을 실행하여 리소스 기반 정책을 이벤트 데이터 스토어에 연결할 수도 있습니다.

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

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

**Topics**
+ [예시: CloudTrail이 쿼리를 실행하여 대시보드를 새로 고치도록 허용](#security_iam_resource-based-policy-examples-eds-dashboard)
+ [예: 다른 계정이 이벤트 데이터 스토어를 쿼리하고 쿼리 결과를 볼 수 있도록 허용](#security_iam_resource-based-policy-examples-eds-query)

### 예시: CloudTrail이 쿼리를 실행하여 대시보드를 새로 고치도록 허용
<a name="security_iam_resource-based-policy-examples-eds-dashboard"></a>

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

다음은 해당 문에 대한 기본 요구 사항입니다.
+ 유일한 `Principal`은 `cloudtrail.amazonaws.com`입니다.
+ 허용되는 유일한 `Action`은 `cloudtrail:StartQuery`입니다.
+ 에는 대시보드 ARN(들)과 AWS 계정 ID`Condition`만 포함됩니다. `AWS:SourceArn`의 경우 대시보드 ARN 배열을 제공할 수 있습니다.

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

------
#### [ 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"
               }
            }
        }
    ]
}
```

------

### 예: 다른 계정이 이벤트 데이터 스토어를 쿼리하고 쿼리 결과를 볼 수 있도록 허용
<a name="security_iam_resource-based-policy-examples-eds-query"></a>

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

다음 예제 정책에는 계정 `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"
    }
  ]
}
```

------

## 대시보드용 리소스 기반 정책 예시
<a name="security_iam_resource-based-policy-examples-dashboards"></a>

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

다음은 리소스 기반 정책에 대한 요구 사항입니다.
+ 유일한 `Principal`은 `cloudtrail.amazonaws.com`입니다.
+ 정책에서 허용되는 유일한 `Action`은 `cloudtrail:StartDashboardRefresh`입니다.
+ 에는 대시보드 ARN 및 AWS 계정 ID`Condition`만 포함됩니다.

다음 예제 정책은 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"
                }
            }
        }
    ]
}
```

------

# CloudTrail에 대한 Amazon S3 버킷 정책
<a name="create-s3-bucket-policy-for-cloudtrail"></a>

기본적으로 Amazon S3 버킷 및 객체는 프라이빗입니다. 리소스 소유자(버킷을 생성한 AWS 계정)만 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.

조직 추적에 대한 로그 파일을 수신하도록 Amazon S3 버킷을 생성하거나 수정하려면 버킷 정책을 변경해야 합니다. 자세한 내용은 [를 사용하여 조직에 대한 추적 생성 AWS CLI](cloudtrail-create-and-update-an-organizational-trail-by-using-the-aws-cli.md) 단원을 참조하세요.

S3 버킷에 로그 파일을 전달하려면 CloudTrail에 필요한 권한이 있어야 하며, 버킷을 [요청자 지불](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html) 버킷으로 구성할 수 없습니다.

CloudTrail은 정책에 다음 필드를 자동으로 추가합니다.
+ 허용된 SID
+ 버킷 이름
+ CloudTrail에 대한 서비스 보안 주체 이름
+ 버킷 이름, 접두사(지정한 경우) 및 AWS 계정 ID를 포함하여 로그 파일이 저장되는 폴더의 이름

보안 모범 사례로 `aws:SourceArn` 조건 키를 Amazon S3 버킷 정책에 추가합니다. IAM 전역 조건 키 `aws:SourceArn`는 CloudTrail이 특정 추적(들)에 대해서만 S3 버킷에 쓰도록 합니다. `aws:SourceArn`의 값은 항상 버킷을 사용하여 로그를 저장하는 추적의 ARN(또는 추적 ARN의 배열)입니다. 기존 추적에 대해 S3 버킷 정책에 `aws:SourceArn` 조건 키를 추가해야 합니다.

**참고**  
추적을 잘못 구성한 경우(예: S3 버킷에 연결할 수 없음) CloudTrail은 30일 동안 S3 버킷에 로그 파일을 다시 전송하려고 시도하며 이러한 전송 시도 이벤트에는 표준 CloudTrail 요금이 부과됩니다. 잘못 구성된 추적에 대한 요금이 부과되지 않도록 하려면 추적을 삭제해야 합니다.

다음 정책은 CloudTrail이 지원되는에서 버킷에 로그 파일을 쓸 수 있도록 허용합니다 AWS 리전. *amzn-s3-demo-bucket*, *[optionalPrefix]/*, *myAccountID*, *region*, *trailName*을 구성에 대해 적절한 값으로 바꿉니다.

**S3 버킷 정책**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailAclCheck20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/[optionalPrefix]/AWSLogs/myAccountID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        }
    ]
}
```

------

에 대한 자세한 내용은 단원을 AWS 리전참조하십시오[CloudTrail 지원 리전](cloudtrail-supported-regions.md).

**Contents**
+ [CloudTrail 로그 전달 시 기존 버킷 지정](#specify-an-existing-bucket-for-cloudtrail-log-delivery)
+ [다른 계정의 로그 파일 수신](#aggregration-option)
+ [조직 추적에 대한 로그 파일을 저장하는 데 사용할 Amazon S3 버킷 생성 또는 업데이트](#org-trail-bucket-policy)
+ [Amazon S3 버킷 정책 문제 해결](#troubleshooting-s3-bucket-policy)
  + [일반적인 Amazon S3 정책 구성 오류](#s3-bucket-policy-for-multiple-regions)
  + [기존 버킷의 접두사 변경](#cloudtrail-add-change-or-remove-a-bucket-prefix)
+ [추가 리소스](#cloudtrail-S3-bucket-policy-resources)

## CloudTrail 로그 전달 시 기존 버킷 지정
<a name="specify-an-existing-bucket-for-cloudtrail-log-delivery"></a>

로그 파일 전달 시 스토리지 위치로 기존 S3 버킷을 지정한 경우 CloudTrail이 버킷에 작성하도록 허용하는 정책을 해당 버킷에 연결해야 합니다.

**참고**  
CloudTrail 로그 전용 S3 버킷을 사용하는 것이 가장 좋습니다.

**Amazon S3 버킷에 필요한 CloudTrail 정책을 추가하려면**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. CloudTrail이 로그 파일을 전송할 버킷을 선택한 다음, **권한(Permissions)**을 선택합니다.

1. **편집**을 선택합니다.

1. [S3 bucket policy](#s3-bucket-policy)를 [**Bucket Policy Editor**] 창으로 복사합니다. 기울임꼴로 표시된 자리 표시자를 버킷 이름, 접두사, 계정 번호로 바꿉니다. 추적을 생성했을 때 접두사를 지정한 경우 여기에 포함합니다. 접두사는 버킷 안에 폴더 같은 조직을 생성한 S3 객체 키에 선택적으로 추가할 수 있습니다.
**참고**  
기존 버킷에 이미 하나 이상의 정책이 연결되어 있는 경우 CloudTrail 액세스용 문을 해당 정책에 추가합니다. 버킷에 액세스하는 사용자에게 적절한지 발생한 권한 집합을 평가합니다.

## 다른 계정의 로그 파일 수신
<a name="aggregration-option"></a>

여러 AWS 계정의 로그 파일을 단일 S3 버킷으로 전송하도록 CloudTrail을 구성할 수 있습니다. 자세한 내용은 [여러 계정에서 CloudTrail 로그 파일 수신다른 계정에서 호출한 데이터 이벤트에 대한 버킷 소유자 계정 ID 수정](cloudtrail-receive-logs-from-multiple-accounts.md) 단원을 참조하십시오.

## 조직 추적에 대한 로그 파일을 저장하는 데 사용할 Amazon S3 버킷 생성 또는 업데이트
<a name="org-trail-bucket-policy"></a>

조직 추적에 대한 로그 파일을 수신할 Amazon S3 버킷을 지정해야 합니다. 이 버킷에는 CloudTrail이 조직에 대한 로그 파일을 버킷에 저장할 수 있도록 허용하는 정책이 있어야 합니다.

다음은 조직의 관리 계정이 소유한 *amzn-s3-demo-bucket*이라는 Amazon S3 버킷에 대한 정책 예제입니다. *amzn-s3-demo-bucket*, *region*, *managementAccountID*, *trailName*, *o-organizationID*를 조직의 값으로 바꿉니다.

이 버킷 정책은 다음 세 가지 문을 포함합니다.
+ 첫 번째 문은 CloudTrail이 Amazon S3 버킷에서 Amazon S3 `GetBucketAcl` 작업을 호출할 수 있도록 허용합니다.
+ 두 번째 문은 추적이 조직 추적에서 해당 계정의 추적으로 변경된 경우에 해당 계정에 대한 로깅을 허용합니다.
+ 세 번째 문은 조직 추적에 대한 로깅을 허용합니다.

예제 정책에는 Amazon S3 버킷 정책을 위한 `aws:SourceArn` 조건 키가 포함되어 있습니다. IAM 전역 조건 키 `aws:SourceArn`는 CloudTrail이 특정 추적(들)에 대해서만 S3 버킷에 쓰도록 합니다. 조직 추적에서 `aws:SourceArn`의 값은 관리 계정이 소유하고 관리 계정 ID를 사용하는 추적 ARN이어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailAclCheck20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cloudtrail.amazonaws.com"
                ]
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cloudtrail.amazonaws.com"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/managementAccountID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailOrganizationWrite20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cloudtrail.amazonaws.com"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/o-organizationID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName"
                }
            }
        }
    ]
}
```

------

이 정책 예제에서는 멤버 계정의 사용자가 조직에 대해 생성된 로그 파일에 액세스하는 것을 허용하지 않습니다. 기본적으로 관리 계정만 조직 로그 파일에 액세스할 수 있습니다. 멤버 계정의 IAM 사용자에게 Amazon S3 버킷에 대한 읽기 액세스를 허용하는 방법에 대한 자세한 내용은 [AWS 계정 간에 CloudTrail 로그 파일 공유](cloudtrail-sharing-logs.md) 단원을 참조하세요.

## Amazon S3 버킷 정책 문제 해결
<a name="troubleshooting-s3-bucket-policy"></a>

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

**참고**  
추적을 잘못 구성한 경우(예: S3 버킷에 연결할 수 없음) CloudTrail은 30일 동안 S3 버킷에 로그 파일을 다시 전송하려고 시도하며 이러한 전송 시도 이벤트에는 표준 CloudTrail 요금이 부과됩니다. 잘못 구성된 추적에 대한 요금이 부과되지 않도록 하려면 추적을 삭제해야 합니다.

### 일반적인 Amazon S3 정책 구성 오류
<a name="s3-bucket-policy-for-multiple-regions"></a>

추적을 생성 또는 업데이트하는 과정에서 새 버킷을 생성할 때 CloudTrail은 필요한 권한을 해당 버킷에 연결합니다. 버킷 정책은 서비스 보안 주체 이름 `"cloudtrail.amazonaws.com"`을 사용합니다. 이는 CloudTrail이 모든 리전의 로그를 전송하도록 허용합니다.

CloudTrail이 리전의 로그를 전송하지 않으면 각 리전의 CloudTrail 계정 ID를 지정하는 이전 정책이 버킷에 연결되어 있는 것일 수 있습니다. 이 정책은 지정된 리전의 로그만 전송하는 권한을 CloudTrail에 부여합니다.

CloudTrail 서비스 보안 주체와 함께 권한을 사용하도록 정책을 업데이트하는 것이 가장 좋습니다. 이 작업을 수행하려면 계정 ID ARN을 서비스 보안 주체 이름 `"cloudtrail.amazonaws.com"`으로 변경해야 합니다. 이렇게 하면 현재 리전 및 새 리전의 로그를 전송하는 권한이 CloudTrail에 부여됩니다. 보안 모범 사례로 `aws:SourceArn` 또는 `aws:SourceAccount` 조건 키를 Amazon S3 버킷 정책에 추가합니다. 이렇게 하면 S3 버킷에 대한 무단 계정 액세스를 방지하는 데 도움이 됩니다. 기존 추적이 있는 경우 하나 이상의 조건 키를 추가해야 합니다. 다음 예시는 권장되는 정책 구성을 보여 줍니다. *amzn-s3-demo-bucket*, *[optionalPrefix]/*, *myAccountID*, *region*, *trailName*을 구성에 대해 적절한 값으로 바꿉니다.

**Example 서비스 보안 주체 이름이 포함된 버킷 정책의 예**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailAclCheck20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/[optionalPrefix]/AWSLogs/myAccountID/*",
            "Condition": {"StringEquals": {
                "s3:x-amz-acl": "bucket-owner-full-control",
                "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        }
    ]
}
```

### 기존 버킷의 접두사 변경
<a name="cloudtrail-add-change-or-remove-a-bucket-prefix"></a>

추적에서 로그를 수신하는 S3 버킷에 대한 로그 파일 접두사를 추가, 수정 또는 제거할 경우 **There is a problem with the bucket policy**라는 오류가 표시될 수 있습니다. 잘못된 접두사를 가진 버킷 정책을 사용할 경우 추적이 버킷으로 로그를 전송하지 못할 수 있습니다. 이 문제를 해결하려면 Amazon S3 콘솔을 사용하여 버킷 정책의 접두사를 업데이트한 후 CloudTrail 콘솔을 사용하여 추적의 버킷에 대해 동일한 접두사를 지정합니다.

**Amazon S3 버킷의 로그 파일 접두사를 업데이트하려면**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 접두사를 수정할 버킷을 선택한 다음 **권한(Permissions)**을 선택합니다.

1. **편집**을 선택합니다.

1. 버킷 정책의 `s3:PutObject` 작업에서 `Resource` 항목을 편집하여 필요에 따라 로그 파일 *prefix/*를 추가, 수정 또는 제거합니다.

   ```
   "Action": "s3:PutObject",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/myAccountID/*",
   ```

1. **저장(Save)**을 선택합니다.

1. [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/)에서 CloudTrail 콘솔을 엽니다.

1. 트레일을 선택하고 **스토리지 위치(Storage location)**에서 연필 아이콘을 클릭하여 버킷에 대한 설정을 편집합니다.

1. **S3 버킷(S3 bucket)**에서 변경하는 접두사를 포함한 버킷을 선택합니다.

1. **로그 파일 접두사(Log file prefix)**에서 버킷 정책에 입력한 접두사와 일치하도록 접두사를 업데이트합니다.

1. **저장**을 선택합니다.

## 추가 리소스
<a name="cloudtrail-S3-bucket-policy-resources"></a>

S3 버킷 및 정책에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [버킷 정책 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)을 참조하십시오.

# CloudTrail Lake 쿼리 결과에 대한 Amazon S3 버킷 정책
<a name="s3-bucket-policy-lake-query-results"></a>

기본적으로 Amazon S3 버킷 및 객체는 프라이빗입니다. 리소스 소유자(버킷을 생성한 AWS 계정)만 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.

S3 버킷에 CloudTrail Lake 쿼리 결과를 전달하려면 CloudTrail에 필요한 권한이 있어야 하며, 버킷을 [요청자 지불](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html) 버킷으로 구성할 수 없습니다.

CloudTrail은 정책에 다음 필드를 자동으로 추가합니다.
+ 허용된 SID
+ 버킷 이름
+ CloudTrail에 대한 서비스 보안 주체 이름

보안 모범 사례로 `aws:SourceArn` 조건 키를 Amazon S3 버킷 정책에 추가합니다. IAM 전역 조건 키 `aws:SourceArn`는 CloudTrail이 이벤트 데이터 스토어에 대해서만 S3 버킷에 쓰도록 합니다.

다음 정책은 CloudTrail이 지원되는 AWS 리전의 버킷에 쿼리 결과를 전달하도록 허용합니다. *amzn-s3-demo-bucket*, *myAccountID*, *myQueryRunningRegion*을 구성에 대한 적절한 값으로 바꿉니다. *myAccountID*는 CloudTrail에 사용되는 AWS 계정 ID로, S3 버킷의 AWS 계정 ID와 동일하지 않을 수 있습니다.

**참고**  
버킷 정책에 KMS 키에 대한 문이 포함된 경우 정규화된 KMS 키 ARN을 사용하는 것이 좋습니다. 대신 KMS 키 별칭을 사용하는 경우는 요청자의 계정 내에서 키를 AWS KMS 해결합니다. 이 동작으로 인해 버킷 소유자가 아닌 요청자에게 속한 KMS로 데이터가 암호화될 수 있습니다.  
조직 이벤트 데이터 스토어인 경우 이벤트 데이터 스토어 ARN에 관리 계정에 대한 AWS 계정 ID가 포함되어야 합니다. 이는 관리 계정이 모든 조직 리소스의 소유권을 유지하기 때문입니다.

**S3 버킷 정책**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailLake1",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": [
                "s3:PutObject*",
                "s3:Abort*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:sourceAccount": "111111111111"
                },
                "ArnLike": {
                    "aws:sourceArn": "arn:aws:cloudtrail:us-east-1:111111111111:eventdatastore/*"
                }
            }     
        },
        {
            "Sid": "AWSCloudTrailLake2",
            "Effect": "Allow",
            "Principal": {"Service":"cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:sourceAccount": "111111111111"
                },
                "ArnLike": {
                    "aws:sourceArn": "arn:aws:cloudtrail:us-east-1:111111111111:eventdatastore/*"
                }
            }
        }
    ]
}
```

------

**Contents**
+ [CloudTrail Lake 쿼리 결과에 대한 기존 버킷 지정](#specify-an-existing-bucket-for-cloudtrail-query-results-delivery)
+ [추가 리소스](#cloudtrail-lake-S3-bucket-policy-resources)

## CloudTrail Lake 쿼리 결과에 대한 기존 버킷 지정
<a name="specify-an-existing-bucket-for-cloudtrail-query-results-delivery"></a>

CloudTrail Lake 쿼리 결과 전달 시 스토리지 위치로 기존 S3 버킷을 지정한 경우 CloudTrail이 버킷에 쿼리 결과를 전달하도록 허용하는 정책을 해당 버킷에 연결해야 합니다.

**참고**  
CloudTrail Lake 쿼리 결과 전용 S3 버킷을 사용하는 것이 가장 좋습니다.

**Amazon S3 버킷에 필요한 CloudTrail 정책을 추가하려면**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. CloudTrail이 Lake 쿼리 결과를 전송할 버킷을 선택한 다음, **Permissions**(권한)을 선택합니다.

1. **편집**을 선택합니다.

1. [S3 bucket policy for query results](#s3-bucket-policy-lake-query)를 [**Bucket Policy Editor**] 창으로 복사합니다. 기울임꼴로 표시된 자리 표시자를 버킷 이름, 리전, 계정 ID로 바꿉니다.
**참고**  
기존 버킷에 이미 하나 이상의 정책이 연결되어 있는 경우 CloudTrail 액세스용 문을 해당 정책에 추가합니다. 발생한 권한 집합을 평가해 버킷에 액세스하는 사용자에게 적절한지 확인합니다.

## 추가 리소스
<a name="cloudtrail-lake-S3-bucket-policy-resources"></a>

S3 버킷 및 정책에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [버킷 정책 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)을 참조하십시오.

# CloudTrail에 대한 Amazon SNS 주제 정책
<a name="cloudtrail-permissions-for-sns-notifications"></a>

SNS 주제에 알림을 전송하려면 CloudTrail에 필요한 권한이 있어야 합니다. CloudTrail 콘솔에서 추적을 생성 또는 업데이트하는 과정에서 Amazon SNS 주제를 생성할 때 CloudTrail은 필요한 권한을 주제에 자동으로 연결합니다.

**중요**  
보안 모범 사례로, SNS 주제에 대한 액세스를 제한하려면 SNS 알림을 전송하는 추적을 생성하거나 업데이트한 후 SNS 주제에 연결된 IAM 정책을 수동으로 편집하여 조건 키를 추가하는 것이 좋습니다. 자세한 내용은 이번 주제에서 전반부 [SNS 주제 정책에 대한 보안 모범 사례](#cloudtrail-sns-notifications-policy-security) 섹션을 참조하세요.

CloudTrail은 다음 필드를 사용하여 다음 문을 정책에 추가합니다.
+ 허용된 SID
+ CloudTrail에 대한 서비스 보안 주체 이름
+ 리전, 계정 ID 및 주제 이름을 포함한 SNS 주제

다음 정책은 CloudTrail이 지원되는 리전의 로그 파일 전달에 대한 알림을 전송할 수 있도록 허용합니다. 자세한 내용은 [CloudTrail 지원 리전](cloudtrail-supported-regions.md) 단원을 참조하세요. 이 정책은 추적을 생성하거나 업데이트하고 SNS 알림을 사용하도록 선택할 때 신규 또는 기존 SNS 주제 정책에 연결되는 기본 정책입니다.

**SNS 주제 정책**

------
#### [ JSON ]

****  

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

------<a name="kms-key-policy"></a>

 AWS KMS암호화된 Amazon SNS 주제를 사용하여 알림을 보내려면의 정책에 다음 문을 추가하여 이벤트 소스(CloudTrail)와 암호화된 주제 간의 호환성도 활성화해야 합니다 AWS KMS key.

**KMS 키 정책**

------
#### [ JSON ]

****  

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

------

자세한 내용은 [AWS 서비스의 이벤트 소스와 암호화된 주제 간의 호환성 활성화를 참조하세요](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services).

**Contents**
+ [SNS 주제 정책에 대한 보안 모범 사례](#cloudtrail-sns-notifications-policy-security)
+ [알림 전송을 위한 기존 주제 지정](#specifying-an-existing-topic-for-sns-notifications)
+ [SNS 주제 정책 문제 해결](#troubleshooting-sns-topic-policy)
  + [CloudTrail이 리전에 대한 알림을 전송하지 않음](#sns-topic-policy-for-multiple-regions)
  + [CloudTrail이 조직의 멤버 계정에 대한 알림을 전송하지 않음](#sns-topic-policy-authorization-failure)
+ [추가 리소스](#cloudtrail-notifications-more-info-5)

## SNS 주제 정책에 대한 보안 모범 사례
<a name="cloudtrail-sns-notifications-policy-security"></a>

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

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

**SNS 주제 정책에 `aws:SourceArn` 조건 키를 추가하려면**

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

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

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

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

1. [**액세스 정책(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"
       }
   ```

1. 다음 예와 같이 `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"
           }
         }
       }
   ```

1. SNS 주제 정책 편집을 마쳤으면 [**변경 사항 저장(Save changes)**]을 선택합니다.

**SNS 주제 정책에 `aws:SourceAccount` 조건 키를 추가하려면**

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

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

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

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

1. [**액세스 정책(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"
       }
   ```

1. 다음 예와 같이 `aws:SourceAccount` 조건에 대한 새 블록을 추가합니다. `aws:SourceAccount` 값은 CloudTrail 추적을 소유한 계정의 ID입니다. 이 예제에서는 SNS 주제에 대한 액세스를 AWS 계정 123456789012에 로그인할 수 있는 사용자로만 제한합니다.

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

1. SNS 주제 정책 편집을 마쳤으면 [**변경 사항 저장(Save changes)**]을 선택합니다.

## 알림 전송을 위한 기존 주제 지정
<a name="specifying-an-existing-topic-for-sns-notifications"></a>

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

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

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

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

1. **편집**을 선택한 다음, **액세스 정책**까지 아래로 스크롤합니다.

1. 리전, 계정 ID, 주제 이름에 대한 적절한 값을 사용하여 [SNS topic policy](#sns-topic-policy)에서 명령문을 추가합니다.

1. 주제가 암호화된 주제일 경우 CloudTrail에 `kms:GenerateDataKey*` 및 `kms:Decrypt` 권한을 허용해야 합니다. 자세한 내용은 [Encrypted SNS topic KMS key policy](#kms-key-policy) 단원을 참조하십시오.

1. **변경 사항 저장**을 선택합니다.

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

## SNS 주제 정책 문제 해결
<a name="troubleshooting-sns-topic-policy"></a>

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

**Topics**
+ [CloudTrail이 리전에 대한 알림을 전송하지 않음](#sns-topic-policy-for-multiple-regions)
+ [CloudTrail이 조직의 멤버 계정에 대한 알림을 전송하지 않음](#sns-topic-policy-authorization-failure)

### CloudTrail이 리전에 대한 알림을 전송하지 않음
<a name="sns-topic-policy-for-multiple-regions"></a>

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

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

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

다음 예제 정책은 현재 리전 및 새 리전의 알림을 전송할 수 있는 권한을 CloudTrail에 부여합니다.

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

```
{
    "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이 조직의 멤버 계정에 대한 알림을 전송하지 않음
<a name="sns-topic-policy-authorization-failure"></a>

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

추적의 SNS 주제 정책에 권한 부여 실패가 있는지 확인하려면 다음을 수행합니다.
+ CloudTrail 콘솔에서 추적의 세부 정보 페이지를 확인합니다. 권한 부여에 실패하면 세부 정보 페이지는 `SNS authorization failed` 경고를 포함하고 SNS 주제 정책을 수정함을 나타냅니다.
+ 에서 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/get-trail-status.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/get-trail-status.html) 명령을 AWS CLI실행합니다. 권한 부여에 실패하면 명령 출력은 값이 `AuthorizationError`인 `LastNotificationError` 필드를 포함합니다.

## 추가 리소스
<a name="cloudtrail-notifications-more-info-5"></a>

SNS 주제 설정 및 구독에 대한 자세한 내용은 [Amazon Simple Notification Service 개발자 가이드](https://docs.aws.amazon.com/sns/latest/dg/)를 참조하세요.

# AWS CloudTrail 자격 증명 및 액세스 문제 해결
<a name="security_iam_troubleshoot"></a>

다음 정보를 사용하여 CloudTrail 및 IAM 작업 시 발생할 수 있는 일반적인 문제를 진단하고 수정할 수 있습니다.

**Topics**
+ [CloudTrail에서 작업을 수행할 권한이 없음](#security_iam_troubleshoot-no-permissions)
+ [`iam:PassRole`을 수행할 권한이 없음](#security_iam_troubleshoot-passrole)
+ [내 외부의 사람이 내 CloudTrail 리소스 AWS 계정 에 액세스하도록 허용하고 싶습니다.](#security_iam_troubleshoot-cross-account-access)
+ [`iam:PassRole`을 수행할 권한이 없음](#security_iam_troubleshoot-passrole)
+ [조직 추적 또는 이벤트 데이터 스토어를 생성하려고 하면 `NoManagementAccountSLRExistsException` 예외가 발생합니다.](#security_iam_troubleshoot-no-slr)

## CloudTrail에서 작업을 수행할 권한이 없음
<a name="security_iam_troubleshoot-no-permissions"></a>

작업을 수행할 권한이 없다는 오류가 표시되면 작업을 수행할 수 있도록 정책을 업데이트해야 합니다.

다음의 예제 오류는 `mateojackson` IAM 사용자가 콘솔을 사용하여 가상 `my-example-widget` 리소스에 대한 세부 정보를 보려고 하지만 가상 `cloudtrail:GetWidget` 권한이 없을 때 발생합니다.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: cloudtrail:GetWidget on resource: my-example-widget
```

이 경우, `cloudtrail:GetWidget` 작업을 사용하여 `my-example-widget` 리소스에 액세스할 수 있도록 `mateojackson` 사용자 정책을 업데이트해야 합니다.

도움이 필요한 경우 AWS 관리자에게 문의하세요. 관리자는 로그인 자격 증명을 제공한 사람입니다.

에서 작업을 수행할 권한이 없다는 AWS Management Console 메시지가 표시되면 관리자에게 문의하여 도움을 받아야 합니다. 관리자는 로그인 보안 인증 정보를 제공한 사람입니다.

`mateojackson` IAM 사용자가 콘솔을 사용하여 추적에 대한 세부 정보를 보려고 하지만 적절한 CloudTrail 관리형 정책(**AWSCloudTrail\$1FullAccess** 또는 **AWSCloudTrail\$1ReadOnlyAccess**) 또는 동등한 권한이 계정에 적용되어 있지 않으면 다음 예제 오류가 발생합니다.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: cloudtrail:GetTrailStatus on resource: My-Trail
```

이 경우 Mateo는 콘솔에서 추적 정보와 상태에 액세스하도록 허용하는 정책을 업데이트하라고 관리자에게 요청합니다.

**AWSCloudTrail\$1FullAccess** 관리형 정책 또는 동등한 권한이 있는 IAM 사용자 또는 역할로 로그인하고 추적과 AWS Config 또는 Amazon CloudWatch Logs 통합을 구성할 수 없는 경우 해당 서비스와 통합하는 데 필요한 권한이 없을 수 있습니다. 자세한 내용은 [CloudTrail 콘솔에서 AWS Config 정보를 볼 수 있는 권한 부여](security_iam_id-based-policy-examples.md#grant-aws-config-permissions-for-cloudtrail-users) 및 [CloudTrail 콘솔에서 Amazon CloudWatch Logs 정보를 확인하고 구성할 수 있는 권한 부여](security_iam_id-based-policy-examples.md#grant-cloudwatch-permissions-for-cloudtrail-users) 섹션을 참조하세요.

## `iam:PassRole`을 수행할 권한이 없음
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` 작업을 수행할 수 있는 권한이 없다는 오류가 수신되면 CloudTrail에 역할을 전달할 수 있도록 정책을 업데이트해야 합니다.

일부 AWS 서비스 에서는 새 서비스 역할 또는 서비스 연결 역할을 생성하는 대신 기존 역할을 해당 서비스에 전달할 수 있습니다. 이렇게 하려면 역할을 서비스에 전달할 권한이 있어야 합니다.

다음 예시 오류는 `marymajor`라는 IAM 사용자가 콘솔을 사용하여 CloudTrail에서 작업을 수행하려고 하는 경우에 발생합니다. 하지만 작업을 수행하려면 서비스 역할이 부여한 권한이 서비스에 있어야 합니다. Mary는 서비스에 역할을 전달할 권한이 없습니다.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

이 경우, Mary가 `iam:PassRole`작업을 수행할 수 있도록 Mary의 정책을 업데이트해야 합니다.

도움이 필요한 경우 AWS 관리자에게 문의하세요. 관리자는 로그인 자격 증명을 제공한 사람입니다.

## 내 외부의 사람이 내 CloudTrail 리소스 AWS 계정 에 액세스하도록 허용하고 싶습니다.
<a name="security_iam_troubleshoot-cross-account-access"></a>

역할을 생성하고 여러 AWS 계정간에 CloudTrail 정보를 공유할 수 있습니다. 자세한 내용은 [AWS 계정 간에 CloudTrail 로그 파일 공유](cloudtrail-sharing-logs.md) 단원을 참조하십시오.

다른 계정의 사용자 또는 조직 외부의 사람이 리소스에 액세스할 때 사용할 수 있는 역할을 생성할 수 있습니다. 역할을 수임할 신뢰할 수 있는 사람을 지정할 수 있습니다. 리소스 기반 정책 또는 액세스 제어 목록(ACL)을 지원하는 서비스의 경우, 이러한 정책을 사용하여 다른 사람에게 리소스에 대한 액세스 권한을 부여할 수 있습니다.

자세한 내용은 다음을 참조하세요.
+ CloudTrail에서 이러한 기능을 지원하는지 여부를 알아보려면 [AWS CloudTrail 에서 IAM을 사용하는 방법](security_iam_service-with-iam.md) 단원을 참조하세요.
+ 소유 AWS 계정 한의 리소스에 대한 액세스 권한을 제공하는 방법을 알아보려면 [IAM 사용 설명서의 소유한 다른의 IAM 사용자에게 액세스 권한 제공을 참조 AWS 계정 하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html). ** 
+ 타사에 리소스에 대한 액세스 권한을 제공하는 방법을 알아보려면 *IAM 사용 설명서*의 [타사가 AWS 계정 소유한에 대한 액세스 권한 제공을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) AWS 계정참조하세요.
+ ID 페더레이션을 통해 액세스 권한을 제공하는 방법을 알아보려면 *IAM 사용 설명서*의 [외부에서 인증된 사용자에게 액세스 권한 제공(ID 페더레이션)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)을 참조하세요.
+ 크로스 계정 액세스에 대한 역할과 리소스 기반 정책 사용의 차이점을 알아보려면 *IAM 사용 설명서*의 [IAM의 크로스 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

## `iam:PassRole`을 수행할 권한이 없음
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` 작업을 수행할 수 있는 권한이 없다는 오류가 수신되면 CloudTrail에 역할을 전달할 수 있도록 정책을 업데이트해야 합니다.

일부 AWS 서비스 에서는 새 서비스 역할 또는 서비스 연결 역할을 생성하는 대신 기존 역할을 해당 서비스에 전달할 수 있습니다. 이렇게 하려면 역할을 서비스에 전달할 권한이 있어야 합니다.

다음 예시 오류는 `marymajor`라는 IAM 사용자가 콘솔을 사용하여 CloudTrail에서 작업을 수행하려고 하는 경우에 발생합니다. 하지만 작업을 수행하려면 서비스 역할이 부여한 권한이 서비스에 있어야 합니다. Mary는 서비스에 역할을 전달할 권한이 없습니다.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

이 경우, Mary가 `iam:PassRole`작업을 수행할 수 있도록 Mary의 정책을 업데이트해야 합니다.

도움이 필요한 경우 AWS 관리자에게 문의하세요. 관리자는 로그인 자격 증명을 제공한 사람입니다.

## 조직 추적 또는 이벤트 데이터 스토어를 생성하려고 하면 `NoManagementAccountSLRExistsException` 예외가 발생합니다.
<a name="security_iam_troubleshoot-no-slr"></a>

관리 계정에 서비스 연결 역할이 없는 경우 `NoManagementAccountSLRExistsException` 예외가 발생합니다.

 AWS Organizations CLI 또는 API 작업을 사용하여 위임된 관리자를 추가하면 CloudTrail 서비스 연결 역할이 없으면 자동으로 생성되지 않습니다. 서비스 연결 역할은 관리 계정에서 CloudTrail 서비스로 직접 호출할 때만 생성됩니다. 예를 들어 CloudTrail 콘솔, AWS CLI 또는 CloudTrail API를 사용하여 위임된 관리자를 추가하거나 조직 추적 또는 이벤트 데이터 스토어를 만들면 AWSServiceRoleForCloudTrail 서비스 연결 역할이 생성됩니다.

 AWS CloudTrail CLI 또는 API 작업을 사용하여 위임된 관리자를 추가하면 CloudTrail은 AWSServiceRoleForCloudTrail 및 AWSServiceRoleForCloudTrailEventContext 서비스 연결 역할을 모두 생성합니다.

조직의 관리 계정을 사용하여 위임된 관리자를 추가하거나 CloudTrail 콘솔에서 조직 추적 또는 이벤트 데이터 스토어를 생성하거나 AWS CLI 또는 CloudTrail API를 사용하면 CloudTrail은 아직 없는 경우 관리 계정에 대한 AWSServiceRoleForCloudTrail 서비스 연결 역할을 자동으로 생성합니다. 자세한 내용은 [CloudTrail에 서비스 연결 역할 사용](using-service-linked-roles.md) 단원을 참조하십시오.

위임된 관리자를 추가하지 않은 경우 CloudTrail 콘솔 AWS CLI 또는 CloudTrail API를 사용하여 위임된 관리자를 추가합니다. 위임된 관리자 추가에 대한 자세한 내용은 [CloudTrail 위임된 관리자 추가](cloudtrail-add-delegated-administrator.md) 및 [RegisterOrganizationDelegatedAdmin](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_RegisterOrganizationDelegatedAdmin.html)(API)을 참조하세요.

위임된 관리자를 이미 추가한 경우 관리 계정을 사용하여 CloudTrail 콘솔에서 또는 AWS CLI 또는 CloudTrail API를 사용하여 조직 추적 또는 이벤트 데이터 스토어를 생성합니다. 조직 추적을 생성하는 방법에 대한 자세한 내용은 [콘솔에서 조직에 대한 추적 생성](creating-an-organizational-trail-in-the-console.md), [를 사용하여 조직에 대한 추적 생성 AWS CLI](cloudtrail-create-and-update-an-organizational-trail-by-using-the-aws-cli.md), 및 [CreateTrail](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_CreateTrail.html)(API)을 참조하세요.

# CloudTrail에 서비스 연결 역할 사용
<a name="using-service-linked-roles"></a>

AWS CloudTrail 는 AWS Identity and Access Management (IAM) [ 서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 CloudTrail에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 CloudTrail에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

**Topics**
+ [CloudTrail에서 조직 추적 및 CloudTrail Lake 조직 이벤트 데이터 스토어를 생성하고 관리하기 위해 역할을 사용합니다.](using-service-linked-roles-create-slr-for-org-trails.md)
+ [CloudTrail 서비스 연결 역할을 지원하는 리전](#slr-regions-create-slr-for-org-trails)
+ [역할을 사용하여 CloudTrail에서 CloudTrail 이벤트 컨텍스트 생성 및 관리](using-service-linked-roles-create-slr-for-context-management.md)
+ [CloudTrail 서비스 연결 역할을 지원하는 리전](#slr-regions-create-slr-for-context-management)

# CloudTrail에서 조직 추적 및 CloudTrail Lake 조직 이벤트 데이터 스토어를 생성하고 관리하기 위해 역할을 사용합니다.
<a name="using-service-linked-roles-create-slr-for-org-trails"></a>

AWS CloudTrail 는 AWS Identity and Access Management (IAM) [서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 CloudTrail에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 CloudTrail에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없으므로 CloudTrail을 더 쉽게 설정할 수 있습니다. CloudTrail에서 서비스 연결 역할의 권한을 정의하므로 달리 정의되어 있지 않는 한, CloudTrail만 해당 역할을 맡을 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

먼저 관련 리소스를 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 리소스에 대한 액세스 권한을 부주의로 삭제할 수 없기 때문에 CloudTrail 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 다른 서비스에 대한 자세한 내용은 [AWS IAM으로 작업하는 서비스를](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 참조하고 **서비스 연결 역할** 열에서 **Yes**가 있는 서비스를 찾습니다. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## CloudTrail에 대한 서비스 연결 역할 권한
<a name="service-linked-role-permissions-create-slr-for-org-trails"></a>

CloudTrail은 **AWSServiceRoleForCloudTrail**이라는 서비스 연결 역할을 사용합니다. 이 서비스 연결 역할은 조직 추적과 조직 이벤트 데이터 스토어를 지원하는 데 사용됩니다.

AWSServiceRoleForCloudTrail 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.
+ `cloudtrail.amazonaws.com`

역할 권한 정책인 CloudTrailServiceRolePolicy는 CloudTrail이 지정된 리소스에서 다음 작업을 완료하도록 허용합니다.
+ 모든 CloudTrail 리소스에 대한 작업
  + `All`
+ 모든 AWS Organizations 리소스에 대한 작업:
  + `organizations:DescribeAccount`
  + `organizations:DescribeOrganization`
  + `organizations:ListAccounts`
  + `organizations:ListAWSServiceAccessForOrganization`
+ 조직의 위임된 관리자를 나열하는 CloudTrail 서비스 보안 주체에 대한 모든 조직 리소스 작업: 
  + `organizations:ListDelegatedAdministrators` 
+ 조직 이벤트 데이터 스토어에서 [Lake 페더레이션을 비활성화](query-disable-federation.md)하기 위한 작업:
  + `glue:DeleteTable`
  + `lakeformation:DeRegisterResource`

사용자, 그룹 또는 역할이 서비스 연결 역할을 생성, 편집 또는 삭제할 수 있도록 사용 권한을 구성해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)을 참조하세요.

AWSServiceRoleForCloudTrail과 연결된 관리형 정책에 대한 자세한 내용은 [AWS 에 대한 관리형 정책 AWS CloudTrail](security-iam-awsmanpol.md) 섹션을 참조하세요.

## CloudTrail에 대한 서비스 연결 역할 생성
<a name="create-service-linked-role-create-slr-for-org-trails"></a>

서비스 연결 역할은 수동으로 생성할 필요가 없습니다. CloudTrail 콘솔, AWS Management Console AWS CLI또는 AWS API에서 조직 추적 또는 조직 이벤트 데이터 스토어를 생성하거나 위임된 관리자를 추가하면 CloudTrail이 서비스 연결 역할을 생성합니다.

이 서비스 연결 역할을 삭제했다가 다시 생성해야 하는 경우 동일한 프로세스를 사용하여 계정에서 역할을 다시 생성할 수 있습니다. CloudTrail 콘솔에서에서 조직 추적이나 조직 이벤트 데이터 스토어를 생성하거나 위임된 관리자를 추가하면 CloudTrail이 서비스 연결 역할을 생성합니다.

## CloudTrail에 대한 서비스 연결 역할 편집
<a name="edit-service-linked-role-create-slr-for-org-trails"></a>

CloudTrail은 AWSServiceRoleForCloudTrail 서비스 연결 역할을 편집하도록 허용하지 않습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 하지만 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)을 참조하세요.

## CloudTrail에 대한 서비스 연결 역할 삭제
<a name="delete-service-linked-role-create-slr-for-org-trails"></a>

AWSServiceRoleForCloudTrail 역할을 수동으로 삭제하지 않아도 됩니다. Organizations 조직에서 AWS 계정 이 제거되면 해당에서 AWSServiceRoleForCloudTrail 역할이 자동으로 제거됩니다 AWS 계정. 조직에서 계정을 제거해야만 조직 관리 계정의 AWSServiceRoleForCloudTrail 서비스 연결 역할에서 정책을 분리하거나 제거할 수 있습니다.

IAM 콘솔, AWS CLI 또는 AWS API를 사용하여 서비스 연결 역할을 수동으로 삭제할 수도 있습니다. 단, 서비스 연결 역할에 대한 리소스를 먼저 정리해야 수동으로 삭제할 수 있습니다.

**참고**  
리소스를 삭제하려 할 때 CloudTrail 서비스가 역할을 사용 중이면 삭제에 실패할 수 있습니다. 이 문제가 발생하면 몇 분 기다렸다가 작업을 다시 시도하세요.

AWSServiceRoleForCloudTrail 역할이 사용 중인 리소스를 제거하려면 다음 중 하나를 수행할 수 있습니다.
+ Organizations AWS 계정 의 조직에서를 제거합니다.
+ 더 이상 조직 추적이 아니도록 추적을 업데이트합니다. 자세한 내용은 [CloudTrail 콘솔을 사용하여 추적 업데이트](cloudtrail-update-a-trail-console.md) 단원을 참조하십시오.
+ 이벤트 데이터 스토어가 더 이상 조직 이벤트 데이터 스토어가 아니도록 이벤트 데이터 스토어를 업데이트합니다. 자세한 내용은 [콘솔을 사요하여 이벤트 데이터 저장소 업데이트](query-event-data-store-update.md) 단원을 참조하십시오.
+ 추적을 삭제합니다. 자세한 내용은 [CloudTrail 콘솔을 사용하여 추적 삭제](cloudtrail-delete-trails-console.md) 단원을 참조하십시오.
+ 이벤트 데이터 스토어를 삭제합니다. 자세한 내용은 [콘솔을 사용하여 이벤트 데이터 저장소 삭제](query-event-data-store-delete.md) 단원을 참조하십시오.

**IAM을 사용하여 수동으로 서비스 연결 역할을 삭제하려면 다음을 수행하세요.**

IAM 콘솔 AWS CLI, 또는 AWS API를 사용하여 AWSServiceRoleForCloudTrail 서비스 연결 역할을 삭제합니다. 자세한 내용은 IAM 사용 설명서의 [서비스 연결 역할 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)**를 참조하십시오.

## CloudTrail 서비스 연결 역할을 지원하는 리전
<a name="slr-regions-create-slr-for-org-trails"></a>

CloudTrail은 CloudTrail과 Organizations를 모두 사용할 수 AWS 리전 있는 모든에서 서비스 연결 역할 사용을 지원합니다. 자세한 내용은 *AWS 일반 참조*의 [AWS 리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요.

# 역할을 사용하여 CloudTrail에서 CloudTrail 이벤트 컨텍스트 생성 및 관리
<a name="using-service-linked-roles-create-slr-for-context-management"></a>

AWS CloudTrail 는 AWS Identity and Access Management (IAM) [서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 CloudTrail에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 CloudTrail에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없으므로 CloudTrail을 더 쉽게 설정할 수 있습니다. CloudTrail에서 서비스 연결 역할의 권한을 정의하므로 달리 정의되어 있지 않는 한, CloudTrail만 해당 역할을 맡을 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

먼저 관련 리소스를 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 리소스에 대한 액세스 권한을 부주의로 삭제할 수 없기 때문에 CloudTrail 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 다른 서비스에 대한 자세한 내용은 [AWS IAM으로 작업하는 서비스를](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 참조하고 **서비스 연결 역할** 열에서 **예**인 서비스를 찾습니다. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## CloudTrail에 대한 서비스 연결 역할 권한
<a name="service-linked-role-permissions-create-slr-for-context-management"></a>

CloudTrail은 **AWSServiceRoleForCloudTrailEventContext**라는 서비스 연결 역할을 사용합니다. 이 서비스 연결 역할은 CloudTrail 이벤트 컨텍스트 및 EventBridge 규칙을 관리하는 데 사용됩니다.

AWSServiceRoleForCloudTrailEventContext 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.
+ `context.cloudtrail.amazonaws.com`

역할 권한 정책인 CloudTrailEventContext는 CloudTrail이 지정된 리소스에서 다음 작업을 완료하도록 허용합니다.
+ 리소스 태그에 대한 작업:
  + `tag:GetResources`
+ CloudTrail 서비스 위탁자가 규칙을 생성하기 위한 모든 Amazon EventBridge 리소스에 대한 작업:
  + `events:PutRule`
+ CloudTrail 서비스 위탁자가 생성하는 규칙을 관리하기 위한 모든 Amazon EventBridge 리소스에 대한 작업: 
  + `events:PutTargets`
  + `events:DeleteRule`
  + `events:RemoveTargets`
  + `events:RemoveTargets`
+ CloudTrail 서비스 위탁자가 생성하는 규칙을 설명하기 위한 모든 Amazon EventBridge 리소스에 대한 작업:
  + `events:DescribeRule`
  + `events:DeRegisterResource`
+ 모든 Amazon EventBridge 리소스에 대한 작업:
  + `events:ListRules`

사용자, 그룹 또는 역할이 서비스 연결 역할을 생성, 편집 또는 삭제할 수 있도록 사용 권한을 구성해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)을 참조하세요.

AWSServiceRoleForCloudTrailEventContext와 연결된 관리형 정책에 대한 자세한 내용은 [AWS 에 대한 관리형 정책 AWS CloudTrail](security-iam-awsmanpol.md)을 참조하세요.

## CloudTrail에 대한 서비스 연결 역할 생성
<a name="create-service-linked-role-create-slr-for-context-management"></a>

서비스 연결 역할은 수동으로 생성할 필요가 없습니다. AWS Management Console, AWS CLI또는 AWS API에서 컨텍스트 이벤트 기능을 사용하기 시작하면 CloudTrail이 서비스 연결 역할을 생성합니다.

이 서비스 연결 역할을 삭제했다가 다시 생성해야 하는 경우 동일한 프로세스를 사용하여 계정에서 역할을 다시 생성할 수 있습니다. 컨텍스트 이벤트 기능을 사용하기 시작하면 CloudTrail이 서비스 연결 역할을 다시 생성합니다.

## CloudTrail에 대한 서비스 연결 역할 편집
<a name="edit-service-linked-role-create-slr-for-context-management"></a>

CloudTrail은 AWSServiceRoleForCloudTrailEventContext 서비스 연결 역할을 편집하도록 허용하지 않습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 하지만 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)을 참조하세요.

## CloudTrail에 대한 AWSServiceRoleForCloudTrailEventContext 서비스 연결 역할 삭제
<a name="delete-service-linked-role-create-slr-for-context-management"></a>

AWSServiceRoleForCloudTrailEventContext 서비스 연결 역할이 필요한 기능 또는 서비스가 더 이상 필요 없는 경우에는 해당 역할을 삭제하는 것이 좋습니다. 따라서 적극적으로 모니터링하거나 유지하지 않는 미사용 엔터티가 없도록 합니다. 하지만 수동으로 삭제하기 전에, 이벤트 데이터 스토어에서 TagContext 키를 제거하여 서비스 연결 역할에 대한 리소스를 정리해야 합니다.

**참고**  
리소스를 삭제하려 할 때 CloudTrail 서비스가 역할을 사용 중이면 삭제에 실패할 수 있습니다. 이 문제가 발생하면 몇 분 기다렸다가 작업을 다시 시도하세요.

**AWSServiceRoleForCloudTrailEventContext 서비스 연결 역할에서 사용하는 CloudTrail 리소스를 삭제하려면**

1. 터미널 또는 명령줄에서 `TagContext` 키를 제거할 이벤트 스토어에 대해 **put-event-configuration** 명령을 실행합니다. 예를 들어 미국 동부(오하이오) 리전의 *111122223333* 계정에 있는, ARN이 *arn:aws:cloudtrail:us-east-2:111122223333:eventdatastore/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111*인 이벤트 스토어에서 `TagContext`가 유일한 컨텍스트 키 선택기인 경우, `TagContext` 키를 제거하려면 `--context-key-selectors`에 대해 값이 지정되지 않은 상태로 **put-event-configuration** 명령을 사용합니다.

   ```
    aws cloudtrail put-event-configuration --event-data-store arn:aws:cloudtrail:us-east-2:111122223333:eventdatastore/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 --max-event-size Large --context-key-selectors
   ```

1. 파티션의 모든 리전에 있는 모든 데이터 스토어에 대해 이 명령을 반복합니다. 자세한 내용은 [Amazon AWS 리소스 이름(ARNs)을 사용하여 리소스 식별을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html).

**IAM을 사용하여 수동으로 서비스 연결 역할을 삭제하려면 다음을 수행하세요.**

IAM 콘솔 AWS CLI, 또는 AWS API를 사용하여 AWSServiceRoleForCloudTrailEventContext 서비스 연결 역할을 삭제합니다. 자세한 내용은 IAM 사용 설명서의 [서비스 연결 역할 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)**를 참조하십시오.



## CloudTrail 서비스 연결 역할을 지원하는 리전
<a name="slr-regions-create-slr-for-context-management"></a>

CloudTrail은 CloudTrail과 EventBridge를 모두 사용할 수 있는 모든 리전에서 서비스 연결 역할 사용을 지원합니다. 자세한 내용은 [AWS 리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html) 단원을 참조하세요.

# AWS 에 대한 관리형 정책 AWS CloudTrail
<a name="security-iam-awsmanpol"></a>

사용자, 그룹 및 역할에 권한을 추가하려면 정책을 직접 작성하는 것보다 AWS 관리형 정책을 사용하는 것이 더 쉽습니다. 팀에 필요한 권한만 제공하는 [IAM 고객 관리형 정책을 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)하기 위해서는 시간과 전문 지식이 필요합니다. 빠르게 시작하려면 AWS 관리형 정책을 사용할 수 있습니다. 이 정책은 일반적인 사용 사례를 다루며 사용자의 AWS 계정에서 사용할 수 있습니다. AWS 관리형 정책에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 관리형 정책을](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) 참조하세요.

AWS 서비스는 AWS 관리형 정책을 유지 관리하고 업데이트합니다. AWS 관리형 정책에서는 권한을 변경할 수 없습니다. 서비스에서 때때로 추가 권한을 AWS 관리형 정책에 추가하여 새로운 기능을 지원합니다. 이 유형의 업데이트는 정책이 연결된 모든 ID(사용자, 그룹 및 역할)에 적용됩니다. 서비스는 새로운 기능이 시작되거나 새 작업을 사용할 수 있을 때 AWS 관리형 정책에 업데이트됩니다. 서비스는 AWS 관리형 정책에서 권한을 제거하지 않으므로 정책 업데이트로 인해 기존 권한이 손상되지 않습니다.

또한는 여러 서비스에 걸쳐 있는 직무에 대한 관리형 정책을 AWS 지원합니다. 예를 들어 **ReadOnlyAccess** AWS 관리형 정책은 모든 AWS 서비스 및 리소스에 대한 읽기 전용 액세스를 제공합니다. 서비스가 새 기능을 시작하면는 새 작업 및 리소스에 대한 읽기 전용 권한을 AWS 추가합니다. 직무 정책의 목록과 설명은 *IAM 사용 설명서*의 [직무에 관한AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)을 참조하세요.

## AWS 관리형 정책: `AWSCloudTrail_FullAccess`
<a name="security-iam-awsmanpol-AWSCloudTrail-FullAccess"></a>

해당 역할에 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html) 정책이 연결되어 있는 사용자 자격 증명은 CloudTrail에서 전체 관리 액세스 권한을 갖습니다.

정책 세부 정보에 대한 JSON 목록은 *AWS Managed Policy 참조 안내서*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html) 섹션을 참조하세요.

## AWS 관리형 정책: `AWSCloudTrail_ReadOnlyAccess`
<a name="security-iam-awsmanpol-AWSCloudTrail-ReadOnlyAccess"></a>

추적, CloudTrail Lake 이벤트 데이터 스토어 또는 Lake 쿼리에 대한 `Get*`, `List*`, `Describe*` 작업 등 CloudTrail에서 읽기 전용 작업을 수행할 수 있는 역할에 연결된 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_ReadOnlyAccess.html) 정책이 있는 사용자 자격 증명입니다.

정책 세부 정보에 대한 JSON 목록은 *AWS Managed Policy 참조 안내서*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_ReadOnlyAccess.html) 섹션을 참조하세요.

## AWS 관리형 정책: `AWSServiceRoleForCloudTrail`
<a name="security-iam-awsmanpol-CloudTrailServiceRolePolicy"></a>

이 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailServiceRolePolicy.html) 정책은 AWS CloudTrail 가 사용자를 대신하여 조직 추적 및 조직 이벤트 데이터 스토어에 대한 작업을 수행하도록 허용합니다. 이 정책에는 조직 계정 및 AWS Organizations 조직의 위임된 관리자를 설명하고 나열하는 데 필요한 AWS Organizations 권한이 포함되어 있습니다.

이 정책에는 조직 이벤트 데이터 스토어에서 [Lake 페더레이션을 비활성화](query-disable-federation.md)하는 데 필요한 AWS Glue 및 AWS Lake Formation 권한이 추가로 포함되어 있습니다.

이 정책은 CloudTrail에서 사용자를 대신하여 작업을 수행할 수 있도록 **AWSServiceRoleForCloudTrail** 서비스 연결 역할에 연결됩니다. 이 정책을 사용자, 그룹 또는 역할에 연결할 수 없습니다.

정책 세부 정보에 대한 JSON 목록은 *AWS Managed Policy 참조 안내서*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailServiceRolePolicy.html) 섹션을 참조하세요.

## AWS 관리형 정책: `CloudTrailEventContext`
<a name="security-iam-awsmanpol-CloudTrailEventContext"></a>

이 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailEventContext.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailEventContext.html) 정책은 AWS CloudTrail 가 사용자를 대신하여 CloudTrail 이벤트 컨텍스트 및 EventBridge 규칙을 관리할 수 있도록 허용합니다. 정책에는 사용자를 위해 생성하는 규칙을 생성, 관리 및 설명하는 데 필요한 EventBridge 권한이 포함되어 있습니다.

이 정책은 CloudTrail에서 사용자를 대신하여 작업을 수행할 수 있도록 **AWSServiceRoleForCloudTrailEventContext** 서비스 연결 역할에 연결됩니다. 이 정책을 사용자, 그룹 또는 역할에 연결할 수 없습니다.

정책 세부 정보에 대한 JSON 목록은 *AWS Managed Policy 참조 안내서*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailEventContext.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudTrailEventContext.html) 섹션을 참조하세요.

## AWS 관리형 정책에 대한 CloudTrail 업데이트
<a name="security-iam-awsmanpol-updates"></a>

CloudTrail의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다. 이 페이지의 변경 사항에 대한 자동 알림을 받아보려면 CloudTrail [문서 기록](cloudtrail-document-history.md) 페이지에서 RSS 피드를 구독하세요.


| 변경 | 설명 | Date | 
| --- | --- | --- | 
|  [`CloudTrailEventContext`](using-service-linked-roles-create-slr-for-context-management.md) – `AWSServiceRoleForCloudTrailEventContext` 서비스 연결 역할에서 사용하는 새로운 정책  |  CloudTrail 보강 이벤트 기능에 사용되는 새 정책 및 역할이 추가되었습니다.  |  2025년 5월 19일  | 
|  [`CloudTrailServiceRolePolicy`](#security-iam-awsmanpol-CloudTrailServiceRolePolicy) - 기존 정책 업데이트  |  페더레이션이 비활성화된 경우 조직 이벤트 데이터 스토어에서 다음 작업을 허용하도록 정책이 업데이트되었습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/security-iam-awsmanpol.html)  |  2023년 11월 26일  | 
|  [`AWSCloudTrail_ReadOnlyAccess`](#security-iam-awsmanpol-AWSCloudTrail-ReadOnlyAccess) - 기존 정책 업데이트  |  CloudTrail에서 `AWSCloudTrailReadOnlyAccess` 정책의 이름을 `AWSCloudTrail_ReadOnlyAccess`로 변경했습니다. 또한 정책의 권한 범위가 CloudTrail 작업으로 축소되었습니다. 더 이상 Amazon S3 AWS KMS또는 AWS Lambda 작업 권한이 포함되지 않습니다.  | 2022년 6월 6일 | 
|  CloudTrail에서 변경 사항 추적 시작  |  CloudTrail이 AWS 관리형 정책에 대한 변경 사항 추적을 시작했습니다.  | 2022년 6월 6일 | 

# 에 대한 규정 준수 검증 AWS CloudTrail
<a name="CloudTrail-compliance"></a>

타사 감사자는 여러 규정 준수 프로그램의 AWS CloudTrail 일환으로의 보안 및 AWS 규정 준수를 평가합니다. 여기에는 SOC, PCI, FedRAMP, HIPAA 등이 포함됩니다.

 AWS 서비스 가 특정 규정 준수 프로그램의 범위 내에 있는지 알아보려면 [AWS 서비스 규정 준수 프로그램 범위 내](https://aws.amazon.com/compliance/services-in-scope/)를 참조하고 관심 있는 규정 준수 프로그램을 선택합니다. 일반 정보는 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/).

를 사용하여 타사 감사 보고서를 다운로드할 수 있습니다 AWS Artifact. 자세한 내용은 [Downloading Reports inDownloading AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)을 참조하세요.

사용 시 규정 준수 책임은 데이터의 민감도, 회사의 규정 준수 목표 및 관련 법률과 규정에 따라 AWS 서비스 결정됩니다. 사용 시 규정 준수 책임에 대한 자세한 내용은 [AWS 보안 설명서를](https://docs.aws.amazon.com/security/) AWS 서비스참조하세요.

# 의 복원력 AWS CloudTrail
<a name="disaster-recovery-resiliency"></a>

 AWS 글로벌 인프라는 AWS 리전 및 가용 영역을 중심으로 구축됩니다. AWS 리전은 물리적으로 분리되고 격리된 여러 가용 영역을 제공하며,이 가용 영역은 지연 시간이 짧고 처리량이 높으며 중복성이 높은 네트워킹과 연결됩니다. 가용 영역을 사용하면 중단 없이 가용 영역 간에 자동으로 장애 조치가 이루어지는 애플리케이션 및 데이터베이스를 설계하고 운영할 수 있습니다. 가용 영역은 기존의 단일 또는 복수 데이터 센터 인프라보다 가용성, 내결함성, 확장성이 뛰어납니다. 특히 더 먼 지리적 거리에 CloudTrail 로그 파일을 복제해야 하는 경우 추적 Amazon S3 버킷에 [교차 리전 복제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)를 사용하면 여러 AWS 리전의 버킷 간에 객체를 비동기식으로 자동 복사할 수 있습니다.

 AWS 리전 및 가용 영역에 대한 자세한 내용은 [AWS 글로벌 인프라를](https://aws.amazon.com/about-aws/global-infrastructure/) 참조하세요.

 AWS 글로벌 인프라 외에도 CloudTrail은 데이터 복원력 및 백업 요구 사항을 지원하는 몇 가지 기능을 제공합니다.

**모든 AWS 리전의 이벤트를 로깅하는 추적 및 이벤트 데이터 스토어**

다중 리전 추적을 생성하면 CloudTrail은 계정에서 활성화된 모든 AWS 리전 에서 동일한 구성으로 추적을 생성합니다.

다중 리전 이벤트 데이터 스토어를 생성하면 CloudTrail은 계정 AWS 리전 의 모든에서 발생하는 이벤트를 수집합니다.

**CloudTrail 로그 데이터에 대한 버전 관리, 수명 주기 구성 및 객체 잠금 보호**

CloudTrail은 Amazon S3 버킷을 사용하여 로그 파일을 저장하기 때문에 Amazon S3에서 제공하는 기능을 사용하여 데이터 복원성 및 백업 요구 사항을 지원할 수도 있습니다. 자세한 내용은 [Amazon S3의 복원성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/disaster-recovery-resiliency.html) 단원을 참조하세요.

# 의 인프라 보안 AWS CloudTrail
<a name="infrastructure-security"></a>

관리형 서비스인는 AWS 글로벌 네트워크 보안으로 보호 AWS CloudTrail 됩니다. AWS 보안 서비스 및가 인프라를 AWS 보호하는 방법에 대한 자세한 내용은 [AWS 클라우드 보안을](https://aws.amazon.com/security/) 참조하세요. 인프라 보안 모범 사례를 사용하여 환경을 설계하려면 *보안 원칙 AWS Well‐Architected Framework*의 [인프라 보호를](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) 참조하세요 AWS .

 AWS 에서 게시한 API 호출을 사용하여 네트워크를 통해 CloudTrail에 액세스합니다. 클라이언트는 다음을 지원해야 합니다.
+ Transport Layer Security(TLS). TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ DHE(Ephemeral Diffie-Hellman) 또는 ECDHE(Elliptic Curve Ephemeral Diffie-Hellman)와 같은 완전 전송 보안(PFS)이 포함된 암호 제품군. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

다음 보안 모범 사례에서도 CloudTrail의 인프라 보안을 다룹니다.
+ [추적 액세스를 위한 Amazon VPC 엔드포인트를 고려합니다.](cloudtrail-and-interface-VPC.md)
+ Amazon S3 버킷 액세스에 대해 Amazon VPC 엔드포인트 고려 자세한 내용은 [버킷 정책을 사용하여 VPC 엔드포인트에서 액세스 제어](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html)를 참조하세요.
+ CloudTrail 로그 파일이 포함된 모든 Amazon S3 버킷을 식별하고 감사합니다. 태그를 사용하여 CloudTrail 로그 파일이 포함된 Amazon S3 버킷과 CloudTrail 추적을 모두 식별하는 것이 좋습니다. 그런 다음, CloudTrail 리소스의 리소스 그룹을 사용할 수 있습니다. 자세한 내용은 [AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html) 단원을 참조하십시오.

# 교차 서비스 혼동된 대리인 방지
<a name="cross-service-confused-deputy-prevention"></a>

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. 에서 AWS교차 서비스 가장은 혼동된 대리자 문제를 초래할 수 있습니다. 교차 서비스 가장은 한 서비스(*직접 호출하는 서비스*)가 다른 서비스(*직접 호출되는 서비스*)를 직접 호출할 때 발생할 수 있습니다. 직접 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS 에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 위탁자를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다.

리소스 정책에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 컨텍스트 키를 사용하여 리소스에 다른 서비스를 AWS CloudTrail 제공하는 권한을 제한하는 것이 좋습니다. 하나의 리소스만 교차 서비스 액세스와 연결되도록 허용하려는 경우 `aws:SourceArn`을 사용하세요. 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`을(를) 사용합니다.

혼동된 대리자 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모를 경우 또는 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드(`*`)를 포함한 `aws:SourceArn`전역 조건 컨텍스트 키를 사용합니다. 예제: `"arn:aws:cloudtrail:*:AccountID:trail/*"`. 또한 와일드카드를 포함할 때는 `StringLike` 조건 연산자도 사용해야 합니다.

`aws:SourceArn`의 값은 리소스를 사용하는 추적, 이벤트 데이터 스토어 또는 채널의 ARN이 되어야 합니다.

다음 예는 CloudTrail에서 `aws:SourceArn` 및 `aws:SourceAccount` 전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제 [CloudTrail Lake 쿼리 결과에 대한 Amazon S3 버킷 정책](s3-bucket-policy-lake-query-results.md)를 방지하는 방법을 보여 줍니다.

# 의 보안 모범 사례 AWS CloudTrail
<a name="best-practices-security"></a>

AWS CloudTrail 는 자체 보안 정책을 개발하고 구현할 때 고려해야 할 여러 보안 기능을 제공합니다. 다음 모범 사례는 일반적인 지침이며 완벽한 보안 솔루션을 나타내지는 않습니다. 이러한 모범 사례는 사용자의 환경에 적절하지 않거나 충분하지 않을 수 있으므로 규정이 아닌 참고용으로만 사용하세요.

**Topics**
+ [CloudTrail 탐지 보안 모범 사례](#best-practices-security-detective)
+ [CloudTrail 예방적 보안 모범 사례](#best-practices-security-preventative)

## CloudTrail 탐지 보안 모범 사례
<a name="best-practices-security-detective"></a>

**추적 생성**

 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성해야 합니다. CloudTrail은 추적을 생성하지 않고 CloudTrail 콘솔에서 관리 이벤트에 대한 90일의 이벤트 기록 정보를 제공하지만, 이 기록은 영구적인 레코드가 아니며 가능한 모든 유형의 이벤트에 대한 정보를 제공하는 것도 아닙니다. 지속적인 레코드 및 지정하는 모든 이벤트 유형이 포함된 레코드를 얻으려면 추적을 생성해야 합니다. 추적은 지정된 Amazon S3 버킷에 로그 파일을 제공합니다.

CloudTrail 데이터를 관리하는 데 도움이 되도록 관리 이벤트를 모두 로깅하는 추적 하나를 생성한 다음 Amazon S3 버킷 활동 또는 AWS Lambda 함수 AWS 리전와 같은 리소스에 대한 특정 이벤트 유형을 로깅하는 추가 추적을 생성하는 것이 좋습니다.

다음과 같은 몇 가지 단계를 수행할 수 있습니다.
+ [AWS 계정에 대한 추적을 생성합니다.](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)
+ [조직에 대한 추적을 생성합니다.](creating-trail-organization.md)

**다중 리전 추적 생성**

 AWS 계정의 IAM 자격 증명 또는 서비스가 수행한 이벤트에 대한 전체 레코드를 가져오려면 다중 리전 추적을 생성하세요. 다중 리전 추적은에서 AWS 리전 [활성화된](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html#manage-acct-regions-enable-standalone) 모든의 이벤트를 로깅합니다 AWS 계정. 활성화된 모든에서 이벤트를 로깅하면에서 활성화된 모든 리전의 활동을 AWS 리전캡처할 수 있습니다 AWS 계정. 여기에는 해당 [서비스의 특정에 로깅되는 글로벌 서비스 이벤트](cloudtrail-concepts.md#cloudtrail-concepts-global-service-events) 로깅이 포함됩니다. AWS 리전 CloudTrail 콘솔을 사용하여 생성하는 모든 추적은 다중 리전 추적입니다.

다음과 같은 몇 가지 단계를 수행할 수 있습니다.
+ [AWS 계정에 대한 추적을 생성합니다.](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)
+ [기존 단일 리전 추적](cloudtrail-update-a-trail-console.md)을 다중 리전 추적으로 변환합니다.
+ 다중 [multi-region-cloud-trail-enabled](https://docs.aws.amazon.com/config/latest/developerguide/multi-region-cloudtrail-enabled.html) 규칙을 AWS 리전 사용하여 생성된 모든 추적이 모든에서 이벤트를 로깅하도록 지속적인 탐지 제어를 구현합니다 AWS Config.

**CloudTrail 로그 파일 무결성 사용**

검증된 로그 파일은 보안 및 과학 수사에서 특히 중요합니다. 예를 들어, 검증된 로그 파일을 사용하면 로그 파일 자체가 변경되지 않았음을 또는 특정 IAM 자격 증명이 특정 API 활동을 수행했음을 확실하게 주장할 수 있습니다. 또한 CloudTrail 로그 파일 무결성 검증 프로세스를 사용하면 로그 파일이 삭제 또는 변경되었는지 여부를 알 수 있거나 특정 시간 동안 사용자 계정으로 로그 파일이 전송되지 않았음을 확실하게 주장할 수 있습니다. CloudTrail 로그 파일 무결성 검증은 산업 표준 알고리즘(해싱을 위한 SHA-256, 디지털 서명을 위해 RSA를 사용하는 SHA-256)을 사용합니다. 따라서 감지되지 않으면서 CloudTrail 로그 파일을 수정, 삭제 또는 위조하는 것은 컴퓨팅 방식으로 실행 불가능합니다. 자세한 내용은 [검증 활성화 및 파일 검증](cloudtrail-log-file-validation-intro.md#cloudtrail-log-file-validation-intro-enabling-and-using) 섹션을 참조하세요.

**Amazon CloudWatch Logs와 통합**

CloudWatch Logs를 사용하면 CloudTrail에서 캡처된 특정 이벤트에 대한 알림을 모니터링하고 수신할 수 있습니다. CloudWatch Logs에 전송된 이벤트는 추적에서 로깅하도록 구성한 이벤트이므로, 모니터링하려는 이벤트 유형(관리 이벤트 데이터 이벤트 및/또는 네트워크 활동 이벤트)을 로깅하도록 추적을 하나 이상 구성했는지 확인하세요.

예를 들어 실패한 [AWS Management Console 로그인 이벤트와 같은 주요 보안 및 네트워크 관련 관리 이벤트를](cloudwatch-alarms-for-cloudtrail.md#cloudwatch-alarms-for-cloudtrail-signin) 모니터링할 수 있습니다.

다음과 같은 몇 가지 단계를 수행할 수 있습니다.
+ [CloudTrail을 위한 CloudWatch Logs 통합](cloudwatch-alarms-for-cloudtrail.md) 예제를 검토합니다.
+ [CloudWatch Logs로 이벤트를 전송](monitor-cloudtrail-log-files-with-cloudwatch-logs.md)하도록 추적을 구성합니다.
+ Cloud-trail-cloud-watch-logs-enabled 규칙을 사용하여 모든 추적이 모니터링을 위해 CloudWatch Logs로 이벤트를 전송하도록 하려면 지속적인 탐지 제어를 구현하는 것이 좋습니다 AWS Config. [cloud-trail-cloud-watch-logs-enabled](https://docs.aws.amazon.com/config/latest/developerguide/cloud-trail-cloud-watch-logs-enabled.html) 

**Amazon GuardDuty 사용**

Amazon GuardDuty는 AWS 환경 내의 계정, 컨테이너, 워크로드 및 데이터를 보호하는 데 도움이 되는 위협 탐지 서비스입니다. Amazon GuardDuty는 기계 학습(ML) 모델, 이상 및 위협 탐지 기능을 통해 다양한 데이터 소스를 지속적으로 모니터링하여 사용자 환경의 잠재적 보안 위험과 악의적 활동을 식별하고 우선순위를 지정합니다.

예를 들어, GuardDuty는 인스턴스 시작 역할을 통해 Amazon EC2 인스턴스 전용으로 자격 증명이 생성되었으나, AWS내의 다른 계정에서 이 자격 증명을 사용 중이라는 사실이 탐지한 경우 잠재적인 자격 증명 유출을 탐지합니다. 자세한 내용은 [https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html)를 참조하세요.

**--set-visible-to-all-users AWS Security Hub CSPM**

[AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)를 사용하여 보안 모범 사례와 관련된 의 사용량을 모니터링하십시오. Security Hub CSPM은 탐지 *보안 제어를* 사용하여 다양한 규정 준수 프레임워크를 준수하는 데 도움이 되는 리소스 구성 및 *보안 표준을* 평가합니다. Security Hub CSPM을 사용하여 CloudTrail 리소스를 평가하는 방법에 대한 자세한 내용은 *AWS Security Hub 사용 설명서*의 [AWS CloudTrail 제어를](https://docs.aws.amazon.com/securityhub/latest/userguide/cloudtrail-controls.html) 참조하세요.

## CloudTrail 예방적 보안 모범 사례
<a name="best-practices-security-preventative"></a>

다음과 같은 CloudTrail 모범 사례를 통해 보안 사고를 예방할 수 있습니다.

**중앙 집중식 전용 Amazon S3 버킷에 로그**

CloudTrail 로그 파일은 IAM 자격 증명 또는 AWS 서비스가 수행하는 작업의 감사 로그입니다. 이러한 로그의 무결성, 완전성 및 가용성은 과학 수사와 감사를 위해 매우 중요합니다. 중앙 집중식 전용 Amazon S3 버킷에 로그하면 엄격한 보안 제어, 액세스 및 업무 분리를 시행할 수 있습니다.

다음과 같은 몇 가지 단계를 수행할 수 있습니다.
+ 별도의 AWS 계정을 로그 아카이브 계정으로 생성합니다. 를 사용하는 경우이 계정을 조직에 AWS Organizations등록하고 [조직 추적을 생성](creating-trail-organization.md)하여 조직의 모든 AWS 계정에 대한 데이터를 기록하는 것이 좋습니다.
+ Organizations를 사용하지 않지만 여러 AWS 계정에 대한 데이터를 로깅하려는 경우 [추적을 생성](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)하여이 로그 아카이브 계정의 활동을 로깅합니다. 계정 및 감사 데이터에 액세스할 수 있어야 하는 신뢰할 수 있는 관리 사용자로만 이 계정에 대한 액세스를 제한합니다.
+ 조직 추적이든 단일 AWS 계정에 대한 추적이든 추적을 생성하는 과정에서이 추적에 대한 로그 파일을 저장할 전용 Amazon S3 버킷을 생성합니다.
+ 둘 이상의 AWS 계정에 대한 활동을 로깅하려면 AWS 계정 활동을 로깅하려는 모든 AWS 계정에 대해 로그 파일을 로깅하고 저장할 수 있도록 [버킷 정책을 수정](cloudtrail-set-bucket-policy-for-multiple-accounts.md)합니다.
+ 조직 추적을 사용하지 않으려는 경우 로그 아카이브 계정에서 Amazon S3 버킷을 지정하여 모든 AWS 계정에서 추적을 생성합니다.

** AWS KMS 관리형 키로 서버 측 암호화 사용**

기본적으로 CloudTrail에서 S3 버킷에 전달하는 로그 파일은 [KMS 키(SSE-KMS)를 사용하는 서버 측 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)를 사용해 암호화됩니다. CloudTrail과 함께 SSE-KMS를 사용하려면 KMS 키라고도 하는 [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)를 생성하고 관리합니다.

**참고**  
SSE-KMS 및 로그 파일 검증을 사용하고 SSE-KMS 암호화 파일만 허용하도록 Amazon S3 버킷 정책을 수정한 경우, 다음 예시 정책 라인과 같이 AES256 암호화를 특별히 허용하도록 버킷 정책을 수정하지 않는 한, 해당 버킷을 활용하는 추적을 생성할 수 없습니다.  

```
"StringNotEquals": { "s3:x-amz-server-side-encryption": ["aws:kms", "AES256"] } 
```

다음과 같은 몇 가지 단계를 수행할 수 있습니다.
+ [SSE-KMS로 로그 파일을 암호화하는 장점을 검토합니다](encrypting-cloudtrail-log-files-with-aws-kms.md).
+ [로그 파일을 암호화하는 데 사용할 KMS 키를 생성합니다](create-kms-key-policy-for-cloudtrail.md).
+ [추적에 대한 로그 파일 암호화를 구성합니다.](create-kms-key-policy-for-cloudtrail-update-trail.md)
+ [cloud-trail-encryption-enabled](https://docs.aws.amazon.com/config/latest/developerguide/cloud-trail-encryption-enabled.html) 규칙을 사용하여 모든 추적이 SSE-KMS로 로그 파일을 암호화하도록 지속적인 탐지 제어를 구현하는 것이 좋습니다 AWS Config.

**기본 Amazon SNS 주제 정책에 조건 키 추가**

Amazon SNS에 알림을 보내도록 추적을 구성하면 CloudTrail은 CloudTrail이 SNS 주제에 콘텐츠를 보낼 수 있도록 허용하는 정책 문을 SNS 주제 액세스 정책에 추가합니다. 보안 모범 사례로 `aws:SourceArn`(또는 선택적으로 `aws:SourceAccount`) 조건 키를 Amazon SNS 주제 정책 문에 추가하는 것이 좋습니다. 이렇게 하면 SNS 주제에 대한 무단 계정 액세스를 방지할 수 있습니다. 자세한 내용은 [CloudTrail에 대한 Amazon SNS 주제 정책](cloudtrail-permissions-for-sns-notifications.md) 섹션을 참조하세요.

**로그 파일을 저장하는 Amazon S3 버킷에 대한 최소 권한 액세스 구현**

CloudTrail은 지정된 Amazon S3 버킷으로 로그 이벤트를 추적합니다. 이러한 로그 파일에는 IAM 자격 증명 및 AWS 서비스가 수행한 작업에 대한 감사 로그가 포함되어 있습니다. 이러한 로그 파일의 무결성과 완전성은 감사와 과학 수사를 위해 매우 중요합니다. 무결성을 보장하려면 CloudTrail 로그 파일을 저장하는 데 사용된 모든 Amazon S3 버킷에 대한 액세스 권한을 생성하거나 수정할 때 최소 권한의 원칙을 준수해야 합니다 

다음 단계를 따릅니다.
+ 로그 파일을 저장하는 모든 버킷에 대한 [Amazon S3 버킷 정책](create-s3-bucket-policy-for-cloudtrail.md)을 검토하고 필요한 경우 조정하여 불필요한 액세스를 제거합니다. 이 버킷 정책은 CloudTrail 콘솔을 사용하여 추적을 생성하는 경우 자동으로 생성되지만, 수동으로 생성하고 관리할 수도 있습니다.
+ 보안 모범 사례로 반드시 `aws:SourceArn` 조건 키를 버킷 정책에 수동으로 추가합니다. 자세한 내용은 [CloudTrail에 대한 Amazon S3 버킷 정책](create-s3-bucket-policy-for-cloudtrail.md) 섹션을 참조하세요.
+ 동일한 Amazon S3 버킷을 사용하여 여러 AWS 계정에 대한 로그 파일을 저장하는 경우 [여러 계정에 대한 로그 파일 수신](cloudtrail-receive-logs-from-multiple-accounts.md) 지침을 따릅니다.
+ 조직 감사를 사용하는 경우 [조직 추적](creating-trail-organization.md)에 대한 지침을 준수해야 하며 [를 사용하여 조직에 대한 추적 생성 AWS CLI](cloudtrail-create-and-update-an-organizational-trail-by-using-the-aws-cli.md)에서 조직 추적의 Amazon S3 버킷에 대한 예시 정책을 검토합니다.
+ [Amazon S3 보안 설명서](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security.html) 및 [버킷 보안을 위한 예시 연습](https://docs.aws.amazon.com/AmazonS3/latest/userguide/walkthrough1.html)을 검토하세요.

**로그 파일을 저장하는 Amazon S3 버킷에서 MFA Delete 사용**

다중 인증(MFA)하는 구성하는 과정에서 버킷의 버전 관리 상태를 변경하거나 버킷에서 객체 버전을 영구적으로 삭제하려고 시도한다면 추가 인증이 필요합니다. 이 방법은 사용자가 Amazon S3 객체를 영구적으로 삭제할 수 있는 권한이 있는 IAM 사용자의 암호를 획득하더라도 여전히 로그 파일을 손상시킬 수 있는 작업을 방지합니다.

다음과 같은 몇 가지 단계를 수행할 수 있습니다.
+ *Amazon Simple Storage Service 사용 설명서*의 [MFA 삭제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html) 항목을 검토하세요.
+ [MFA를 요구하는 Amazon S3 버킷 정책을 추가합니다](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-MFA).

**참고**  
수명 주기 구성과 함께 MFA 삭제를 사용할 수 없습니다. 수명 주기 구성 및 다른 구성과 상호 작용하는 방법에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [수명 주기 및 다른 버킷 구성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html) 섹션을 참조하세요.

**로그 파일을 저장하는 Amazon S3 버킷에서 객체 수명 주기 관리 구성**

Amazon S3 추적 기본값은 추적을 위해 구성된 Amazon S3 버킷에 로그 파일을 무한정으로 저장하는 것입니다. [Amazon S3 객체 수명 주기 관리 규칙](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)을 사용하여 비즈니스 및 감사 필요에 더 적합하게 자체 보존 정책을 정의할 수 있습니다. 예를 들어, 1년보다 오래된 로그 파일을 Amazon Glacier에 보관하거나, 일정 시간이 지난 후 로그 파일을 삭제할 수 있습니다.

**참고**  
다중 인증(MFA) 사용 설정 버킷에 대한 수명 주기 구성은 지원되지 않습니다.

**AWSCloudTrail\$1FullAccess 정책에 대한 액세스 제한**

[AWSCloudTrail\$1FullAccess](security_iam_id-based-policy-examples.md#grant-custom-permissions-for-cloudtrail-users-full-access) 정책을 사용하는 사용자는 AWS 계정에서 가장 민감하고 중요한 감사 기능을 비활성화하거나 재구성할 수 있습니다. 이 정책은 AWS 계정의 IAM 자격 증명에 광범위하게 적용하거나 공유하기 위한 것이 아닙니다. 이 정책의 적용을 AWS 계정 관리자 역할을 할 것으로 예상되는 개인으로 최대한 제한합니다.

# AWS KMS 키를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어 암호화(SSE-KMS)
<a name="encrypting-cloudtrail-log-files-with-aws-kms"></a>

기본적으로 CloudTrail에서 버킷에 전달하는 로그 파일 및 다이제스트 파일은 [KMS 키(SSE-KMS)를 사용하는 서버 측 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)를 사용해 암호화됩니다. SSE-KMS 암호화를 활성화하지 않으면 로그 파일 및 다이제스트 파일은 [SSE-S3 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)를 사용하여 암호화합니다.

**참고**  
S3 버킷 [키와 함께 기존 S3 버킷](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)을 사용하는 경우 `GenerateDataKey` 및 AWS KMS 작업을 사용하려면 키 정책에서 CloudTrail에 권한을 허용해야 합니다`DescribeKey`. 키 정책에서 이러한 권한이 `cloudtrail.amazonaws.com`에 부여되지 않은 경우 추적을 생성하거나 업데이트할 수 없습니다.

CloudTrail에서 SSE-KMS를 사용하려면 [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)를 생성하고 관리합니다. 키에 정책을 연결합니다. 이 정책은 CloudTrail 로그 파일 및 다이제스트 파일을 암호화하고 복호화하는 데 키를 사용할 수 있는 사용자를 결정합니다. S3를 통해 원활하게 암호를 해제합니다. 키에 대한 권한이 부여된 사용자가 CloudTrail 로그 파일 또는 다이제스트 파일을 읽을 때 S3는 복호화를 관리하고 권한이 부여된 사용자는 암호화되지 않은 형식의 파일을 읽을 수 있습니다.

이 접근 방식에는 다음과 같은 장점이 있습니다.
+ KMS 키를 직접 생성하고 관리할 수 있습니다.
+ 단일 KMS 키를 사용하여 모든 리전에 걸쳐 여러 계정의 로그 파일 및 다이제스트 파일을 암호화하고 복호화할 수 있습니다.
+ CloudTrail 로그 파일 및 다이제스트 파일을 암호화 및 복호화하는 데 키를 사용할 수 있는 사용자를 제어할 수 있습니다. 요구 사항에 따라 조직에서 키에 대한 권한을 사용자에게 할당할 수 있습니다.
+ 보안을 강화했습니다. 이 기능을 사용할 경우 로그 파일 또는 다이제스트 파일을 읽으려면 다음 권한이 필요합니다.
  + 사용자는 로그 파일 및 다이제스트 파일이 포함된 버킷에 대한 S3 읽기 권한이 있어야 합니다.
  + 또한 사용자는 KMS 키 정책에 의해 복호화 권한을 허용하는 정책 또는 역할을 적용받고 있어야 합니다.
+ S3가 KMS 키를 사용할 권한이 부여된 사용자의 요청에 대한 로그 파일 및 다이제스트 파일을 자동으로 복호화하기 때문에 파일에 대한 SSE-KMS 암호화는 CloudTrail 로그 데이터를 읽는 애플리케이션과 역호환됩니다.

**참고**  
선택한 KMS 키는 로그 파일 및 다이제스트 파일을 수신하는 Amazon S3 버킷과 동일한 AWS 리전에서 생성해야 합니다. 예를 들어 미국 동부(오하이오) 리전의 버킷에 로그 파일 및 다이제스트 파일을 저장할 경우 해당 리전에서 KMS 키를 생성하거나 해당 리전에서 생성된 KMS 키를 선택해야 합니다. Amazon S3 버킷의 리전을 확인하려면 Amazon S3 콘솔에서 해당 속성을 검사하세요.

기본적으로 이벤트 데이터 스토어는 CloudTrail에 의해 암호화됩니다. 이벤트 데이터 스토어를 생성하거나 업데이트할 때 암호화에 자체 KMS 키를 사용할 수 있습니다.

## 로그 파일 암호화 사용
<a name="encrypting-cloudtrail-log-files-with-aws-kms-enabling"></a>

**참고**  
CloudTrail 콘솔에서 KMS 키를 생성하면 CloudTrail이 필요한 KMS 키 정책 단원을 자동으로 추가합니다. IAM 콘솔에서 키를 생성했거나 필요한 정책 섹션을 수동으로 추가 AWS CLI 해야 하는 경우 다음 절차를 따르세요.

CloudTrail 로그 파일에 대해 SSE-KMS 암호화를 활성화하려면 다음과 같은 개략적인 단계를 수행합니다.

1. KMS 키를 생성합니다.
   + 를 사용하여 KMS 키를 생성하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 키 생성을 AWS Management Console참조하세요. [https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) 
   + 를 사용하여 KMS 키를 생성하는 방법에 대한 자세한 내용은 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)를 AWS CLI참조하세요.
**참고**  
선택하는 KMS 키는 로그 파일 및 다이제스트 파일을 수신하는 S3 버킷과 동일한 리전에 있어야 합니다. S3 버킷에 대한 리전을 확인하려면 S3 콘솔에서 버킷 속성을 조사하세요.

1. 로그 파일 및 다이제스트 파일을 CloudTrail이 암호화하고 사용자가 복호화할 수 있게 하는 정책 섹션을 키에 추가합니다.
   + 정책에 포함할 사항에 대한 자세한 내용은 [CloudTrail에 대한 AWS KMS 키 정책 구성](create-kms-key-policy-for-cloudtrail.md)을 참조하세요.
**주의**  
로그 파일 또는 다이제스트 파일을 읽어야 하는 모든 사용자를 위해 정책에 복호화 권한을 포함해야 합니다. 키를 추적 구성에 추가하기 전에 이 단계를 수행하지 않으면 암호화 해제 권한이 없는 사용자는 해당 권한이 부여될 때까지 암호화된 파일을 읽을 수 없습니다.
   + IAM 콘솔을 사용한 정책 편집에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 정책 편집](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing) 단원을 참조하세요.
   + 를 사용하여 KMS 키에 정책을 연결하는 방법에 대한 자세한 내용은 [put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)를 AWS CLI참조하세요.

1. CloudTrail에 대해 정책을 수정한 KMS 키를 사용하도록 추적 또는 이벤트 데이터 스토어를 업데이트합니다.
   + CloudTrail 콘솔을 사용하여 추적 또는 이벤트 데이터 스토어를 업데이트하려면 [콘솔을 사용하여 KMS 키를 사용하도록 리소스 업데이트](create-kms-key-policy-for-cloudtrail-update-trail.md) 섹션을 참조하세요.
   + 를 사용하여 추적 또는 이벤트 데이터 스토어를 업데이트하려면 섹션을 AWS CLI참조하세요[를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어에 대한 암호화 활성화 및 비활성화 AWS CLI](cloudtrail-log-file-encryption-cli.md).

CloudTrail은 AWS KMS 다중 리전 키도 지원합니다. 다중 리전 키에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [다중 리전 키 사용](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) 단원을 참조하세요.

다음 단원에서는 CloudTrail에서 사용하기 위해 KMS 키 정책에 필요한 정책 단원을 설명합니다.

# KMS 키 생성 권한 부여
<a name="granting-kms-permissions"></a>

[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSKeyManagementServicePowerUser.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSKeyManagementServicePowerUser.html) 정책을 사용하여를 생성할 수 AWS KMS key 있는 권한을 사용자에게 부여할 수 있습니다.

**KMS 키 생성 권한을 부여하려면**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 권한을 부여할 그룹이나 사용자를 선택합니다.

1. **권한** 탭을 선택합니다.

1.  **권한 추가** 드롭다운 목록에서 **정책 연결**을 선택합니다.

1. **AWSKeyManagementServicePowerUser**를 검색해 정책을 선택한 다음 **정책 연결**을 선택합니다.

   이제 사용자는 KMS 키를 생성할 수 있는 권한이 있습니다. 정책 생성에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

# CloudTrail에 대한 AWS KMS 키 정책 구성
<a name="create-kms-key-policy-for-cloudtrail"></a>

세 가지 AWS KMS key 방법으로를 생성할 수 있습니다.
+ CloudTrail 콘솔
+  AWS 관리 콘솔
+ 는 AWS CLI

**참고**  
CloudTrail 콘솔에서 KMS 키를 생성하면 CloudTrail이 필요한 KMS 키 정책을 자동으로 추가합니다. 수동으로 정책 구문을 추가할 필요가 없습니다. [CloudTrail 콘솔에서 생성된 기본 KMS 키 정책](default-kms-key-policy.md)을(를) 참조하세요.

 AWS Management Console 또는에서 KMS 키를 생성하는 경우 CloudTrail과 함께 사용할 수 있도록 키에 정책 섹션을 추가해야 AWS CLI합니다. 정책은 CloudTrail이 키를 사용하여 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어를 암호화하고 지정한 사용자가 암호화되지 않은 형태로 로그 파일을 읽을 수 있도록 허용해야 합니다.

다음 리소스를 참조하세요.
+ 를 사용하여 KMS 키를 생성하려면 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)를 AWS CLI참조하세요.
+ CloudTrail에 대한 KMS 키 정책을 편집하려면 *AWS Key Management Service 개발자 가이드*의 [키 정책 편집](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing) 단원을 참조하세요.
+ CloudTrail의 사용 방식에 대한 기술적 세부 정보는 섹션을 AWS KMS참조하세요[에서를 AWS CloudTrail 사용하는 방법 AWS KMS](how-kms-works-with-cloudtrail.md).

**Topics**
+ [CloudTrail에서 사용하기 위해 필요한 KMS 키 정책 단원](#create-kms-key-policy-for-cloudtrail-policy-sections)
+ [추적에 대한 암호화 권한 부여](#create-kms-key-policy-for-cloudtrail-encrypt)
+ [이벤트 데이터 스토어에 대한 암호화 권한 부여](#create-kms-key-policy-for-cloudtrail-encrypt-eds)
+ [추적에 대한 복호화 권한 부여](#create-kms-key-policy-for-cloudtrail-decrypt)
+ [이벤트 데이터 스토어에 대한 복호화 권한 부여](#create-kms-key-policy-for-cloudtrail-decrypt-eds)
+ [KMS 키 속성을 설명하도록 CloudTrail 사용 설정](#create-kms-key-policy-for-cloudtrail-describe)
+ [CloudTrail 콘솔에서 생성된 기본 KMS 키 정책](default-kms-key-policy.md)

## CloudTrail에서 사용하기 위해 필요한 KMS 키 정책 단원
<a name="create-kms-key-policy-for-cloudtrail-policy-sections"></a>

 AWS 관리 콘솔 또는를 사용하여 KMS 키를 생성한 경우 CloudTrail에서 작동하려면 최소한 다음 문을 KMS 키 정책에 추가해야 AWS CLI합니다.

**Topics**
+ [추적에 필요한 KMS 키 정책 요소](#required-kms-key-policy-trails)
+ [이벤트 데이터 스토어에 필요한 KMS 키 정책 요소](#required-kms-key-policy-eventdatastores)

### 추적에 필요한 KMS 키 정책 요소
<a name="required-kms-key-policy-trails"></a>

1. CloudTrail 로그 및 다이제스트 파일을 암호화할 수 있는 권한을 부여합니다. 자세한 내용은 [추적에 대한 암호화 권한 부여](#create-kms-key-policy-for-cloudtrail-encrypt) 단원을 참조하십시오.

1. CloudTrail 로그 및 다이제스트 파일을 복호화할 수 있는 권한을 부여합니다. 자세한 내용은 [추적에 대한 복호화 권한 부여](#create-kms-key-policy-for-cloudtrail-decrypt) 단원을 참조하십시오. [S3 버킷 키](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)와 함께 기존 S3 버킷을 사용하는 경우 SSE-KMS 암호화가 사용 설정된 추적을 생성하거나 업데이트하려면 `kms:Decrypt` 권한이 필요합니다.

1. KMS 키 속성을 설명하도록 CloudTrail을 사용 설정합니다. 자세한 내용은 [KMS 키 속성을 설명하도록 CloudTrail 사용 설정](#create-kms-key-policy-for-cloudtrail-describe) 단원을 참조하십시오.

보안 모범 사례로 `aws:SourceArn` 조건 키를 KMS 키 정책에 추가합니다. IAM 전역 조건 키 `aws:SourceArn`는 CloudTrail이 특정 추적(들)에 대해서만 KMS 키를 사용하도록 합니다. `aws:SourceArn`의 값은 항상 KMS 키를 사용하는 추적 ARN(또는 추적 ARN의 배열)입니다. 기존 추적에 대한 KMS 키 정책에 `aws:SourceArn` 조건 키를 추가해야 합니다.

`aws:SourceAccount` 조건 키도 지원되지만 권장되지는 않습니다. `aws:SourceAccount`의 값은 추적 소유자의 계정 ID이거나 조직 추적의 경우 관리 계정 ID입니다.

**중요**  
KMS 키 정책에 새 단원을 추가할 때 정책의 기존 단원을 변경하지 마세요.  
추적에서 암호화가 활성화되고, KMS 키가 비활성화되거나 KMS 키 정책이 CloudTrail에 대해 올바르게 구성되지 않은 경우, CloudTrail은 로그를 전달할 수 없습니다.

### 이벤트 데이터 스토어에 필요한 KMS 키 정책 요소
<a name="required-kms-key-policy-eventdatastores"></a>

1. CloudTrail Lake 이벤트 데이터 스토어를 암호화할 수 있는 권한을 부여합니다. 자세한 내용은 [이벤트 데이터 스토어에 대한 암호화 권한 부여](#create-kms-key-policy-for-cloudtrail-encrypt-eds) 단원을 참조하십시오.

1. CloudTrail Lake 이벤트 데이터 스토어를 복호화할 수 있는 권한을 부여합니다. 자세한 내용은 [이벤트 데이터 스토어에 대한 복호화 권한 부여](#create-kms-key-policy-for-cloudtrail-decrypt-eds) 단원을 참조하십시오.

   이벤트 데이터 스토어를 생성하고 KMS 키로 암호화하거나 KMS 키로 암호화하는 이벤트 데이터 스토어에서 쿼리를 실행하는 경우 KMS 키에 대한 쓰기 권한이 있어야 합니다. KMS 키 정책은 CloudTrail에 액세스할 수 있어야 하며, 이벤트 데이터 스토어에서 작업(예: 쿼리)을 실행하는 사용자가 KMS 키를 관리할 수 있어야 합니다.

1. KMS 키 속성을 설명하도록 CloudTrail을 사용 설정합니다. 자세한 내용은 [KMS 키 속성을 설명하도록 CloudTrail 사용 설정](#create-kms-key-policy-for-cloudtrail-describe) 단원을 참조하십시오.

`aws:SourceArn` 및 `aws:SourceAccount` 조건 키는 이벤트 데이터 스토어의 KMS 키 정책에서 지원되지 않습니다.

**중요**  
KMS 키 정책에 새 섹션을 추가할 때 정책의 기존 섹션을 변경하지 마세요.  
이벤트 데이터 스토어에서 암호화가 활성화되고 KMS 키가 비활성화 또는 삭제되거나 KMS 키 정책이 CloudTrail에 대해 올바르게 구성되지 않은 경우 CloudTrail은 이벤트 데이터 스토어에 이벤트를 전달할 수 없습니다.

## 추적에 대한 암호화 권한 부여
<a name="create-kms-key-policy-for-cloudtrail-encrypt"></a>

**Example CloudTrail이 특정 계정을 대신하여 로그 파일 및 다이제스트 파일을 암호화하도록 허용**  
CloudTrail이 특정 계정을 대신하여 로그 파일 및 다이제스트 파일을 암호화하기 위해 KMS 키를 사용하려면 명시적 권한이 필요합니다. 계정을 지정하려면 다음 필수 명령문을 KMS 키 정책에 추가하고 *account-id*, *region* 및 *trailName*을 구성에 적절한 값으로 바꿉니다. `EncryptionContext` 섹션에 추가 계정 ID를 추가하면 해당 계정이 CloudTrail을 사용하여 KMS 키를 통해 로그 파일 및 다이제스트 파일을 암호화할 수 있습니다.  
보안 모범 사례로 `aws:SourceArn` 조건 키를 추적의 KMS 키 정책에 추가합니다. IAM 전역 조건 키 `aws:SourceArn`는 CloudTrail이 특정 추적(들)에 대해서만 KMS 키를 사용하도록 합니다.

```
{
   "Sid": "AllowCloudTrailEncryptLogs",
   "Effect": "Allow",
   "Principal": {
       "Service": "cloudtrail.amazonaws.com"
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name"
         },
         "StringLike": {
             "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:account-id:trail/*"
         }
    }
}
```

**Example**  
다음 정책 문 예제에서는 다른 계정이 KMS 키를 사용하여 CloudTrail 로그 파일 및 다이제스트 파일을 암호화하는 방법을 보여 줍니다.

**시나리오**
+ KMS 키는 계정 *111111111111*에 있습니다.
+ 귀하 및 계정 *222222222222* 모두 로그를 암호화합니다.

정책에서 키를 사용하여 암호화할 하나 이상의 계정을 CloudTrail **EncryptionContext**에 추가합니다. 이렇게 하면 CloudTrail이 키를 사용하여 지정된 해당 계정에 대한 로그 파일 및 다이제스트 파일만 암호화하도록 제한됩니다. *222222222222* 계정의 루트 사용자에게 로그 파일 및 다이제스트 파일를 암호화할 수 있는 권한을 부여하면, 계정 관리자에게 해당 계정의 다른 사용자에게 필요한 권한을 암호화할 수 있는 권한을 위임합니다. 계정 관리자는 해당 IAM 사용자와 관련된 정책을 변경하여 이 작업을 수행합니다.

보안 모범 사례로 `aws:SourceArn` 조건 키를 KMS 키 정책에 추가합니다. IAM 전역 조건 키 `aws:SourceArn`은 CloudTrail이 특정 추적들에 대해서만 KMS 키를 사용하도록 합니다. 이 조건은 이벤트 데이터 스토어의 KMS 키 정책에서 지원되지 않습니다.

KMS 키 정책 문:

```
{
  "Sid": "EnableCloudTrailEncryptPermissions",
  "Effect": "Allow",
  "Principal": {
    "Service": "cloudtrail.amazonaws.com"
  },
  "Action": "kms:GenerateDataKey*",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:EncryptionContext:aws:cloudtrail:arn": [
        "arn:aws:cloudtrail:*:111111111111:trail/*",
        "arn:aws:cloudtrail:*:222222222222:trail/*"
      ]
    },
    "StringEquals": {
        "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name"
    }
  }
}
```

CloudTrail에서 사용할 KMS 키 정책 편집에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 [키 정책 편집](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)을 참조하세요.

## 이벤트 데이터 스토어에 대한 암호화 권한 부여
<a name="create-kms-key-policy-for-cloudtrail-encrypt-eds"></a>

CloudTrail Lake 이벤트 데이터 스토어 로그를 암호화하는 데 사용되는 KMS 키의 정책은 조건 키 `aws:SourceArn` 또는 `aws:SourceAccount`를 사용할 수 없습니다. 다음은 이벤트 데이터 스토어 KMS 키 정책의 예입니다.

```
{
    "Sid": "AllowCloudTrailEncryptEds",
    "Effect": "Allow",
    "Principal": {
        "Service": "cloudtrail.amazonaws.com"
     },
     "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*"
}
```

## 추적에 대한 복호화 권한 부여
<a name="create-kms-key-policy-for-cloudtrail-decrypt"></a>

KMS 키를 CloudTrail 구성에 추가하기 전에 복호화 권한이 필요한 모든 사용자에게 해당 권한을 부여하는 것이 중요합니다. 암호화 권한이 있지만 복호화 권한이 없는 사용자는 암호화된 로그를 읽을 수 없습니다. [S3 버킷 키](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)와 함께 기존 S3 버킷을 사용하는 경우 SSE-KMS 암호화가 사용 설정된 추적을 생성하거나 업데이트하려면 `kms:Decrypt` 권한이 필요합니다.

**CloudTrail 로그 복호화 권한 사용 설정**  
키 사용자에게는 CloudTrail이 암호화한 로그 파일을 읽을 수 있는 명시적 권한이 부여되어야 합니다. 사용자가 암호화된 로그를 읽을 수 있도록 하려면 다음 필수 문을 KMS 키 정책에 추가하고, `Principal` 단원을 수정함으로써 KMS 키를 사용해 복호화할 수 있는 모든 보안 주체에 대한 코드 줄을 추가합니다.

```
{
  "Sid": "EnableCloudTrailLogDecryptPermissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::account-id:user/username"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:EncryptionContext:aws:cloudtrail:arn": "false"
    }
  }
}
```

다음은 CloudTrail 서비스 보안 주체가 추적 로그를 복호화하도록 허용하는 데 필요한 정책의 예입니다.

```
{
      "Sid": "AllowCloudTrailDecryptTrail",
      "Effect": "Allow",
      "Principal": {
          "Service": "cloudtrail.amazonaws.com"
        },
      "Action": "kms:Decrypt",
      "Resource": "*"
}
```

### 계정의 사용자가 KMS 키를 사용하여 추적 로그를 복호화하도록 허용
<a name="create-kms-key-policy-for-cloudtrail-decrypt-your-account"></a>

**예제**  
이 정책 구문은 계정의 사용자 또는 역할이 키를 사용하여 계정의 S3 버킷에서 암호화된 로그를 읽을 수 있도록 허용하는 방법을 보여 줍니다.

**Example 시나리오**  
+ KMS 키, S3 버킷, IAM 사용자 Bob은 계정 `111111111111`에 있습니다.
+ IAM 사용자 Bob에게 S3 버킷의 CloudTrail 로그를 복호화할 수 있는 권한을 부여합니다.

키 정책에서 IAM 사용자 Bob의 CloudTrail 로그 암호 복호화 권한을 사용 설정합니다.

KMS 키 정책 문:

```
{
  "Sid": "EnableCloudTrailLogDecryptPermissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111111111111:user/Bob"
  },
  "Action": "kms:Decrypt",
  "Resource": "arn:aws:kms:region:account-id:key/key-id",
  "Condition": {
    "Null": {
      "kms:EncryptionContext:aws:cloudtrail:arn": "false"
    }
  }
}
```

**Topics**

### 다른 계정의 사용자가 KMS 키를 사용하여 추적 로그를 복호화하도록 허용
<a name="create-kms-key-policy-for-cloudtrail-decrypt-other-accounts"></a>

다른 계정의 사용자가 KMS 키를 사용하여 로그를 복호화하도록 허용할 수 있습니다. 키 정책에 필요한 변경 사항은 S3 버킷이 귀하의 계정에 있는지 아니면 다른 계정에 있는지에 따라 달라집니다.

#### 다른 계정에 있는 버킷의 사용자가 로그의 암호를 해독하도록 허용
<a name="create-kms-key-policy-for-cloudtrail-decrypt-different-bucket"></a>

**예제**  
이 정책 문은 다른 계정의 IAM 사용자 또는 역할이 귀하의 키를 사용하여 다른 계정의 S3 버킷에서 암호화된 로그를 읽을 수 있도록 허용하는 방법을 보여 줍니다.

**시나리오**
+ KMS 키는 계정 `111111111111`에 있습니다.
+ IAM 사용자 Alice와 S3 버킷은 계정 `222222222222`에 있습니다.

이 경우 계정 `222222222222`에 있는 로그를 복호화할 권한을 CloudTrail에 부여하고, Alice의 IAM 사용자에게 계정 `111111111111`에 있는 키 `KeyA`를 사용할 정책 권한을 부여합니다.

KMS 키 정책 문:

```
{
  "Sid": "EnableEncryptedCloudTrailLogReadAccess",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::222222222222:root"
    ]
  },
  "Action": "kms:Decrypt",
  "Resource": "arn:aws:kms:region:111111111111:key/key-id",
  "Condition": {
    "Null": {
      "kms:EncryptionContext:aws:cloudtrail:arn": "false"
    }
  }
}
```

Alice의 IAM 사용자 정책 구문:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:us-west-2:111111111111:key/KeyA"
    }
  ]
}
```

------

#### 다른 계정의 사용자가 버킷에서 추적 로그를 복호화하도록 허용
<a name="create-kms-key-policy-for-cloudtrail-decrypt-same-bucket"></a>

**Example**  
이 정책은 다른 계정이 귀하의 키를 사용하여 S3 버킷에서 암호화된 로그를 읽는 방법을 보여 줍니다.

**Example 시나리오**  
+ KMS 키 및 S3 버킷은 계정 `111111111111`에 있습니다.
+ 버킷에서 로그를 읽는 사용자는 계정 `222222222222`에 있습니다.

이 시나리오를 활성화하려면 계정의 IAM 역할 **CloudTrailReadRole**에 대해 암호 해독 권한을 활성화한 다음 해당 역할을 수임할 수 있는 권한을 다른 계정에 부여하십시오.

KMS 키 정책 문:

```
{
  "Sid": "EnableEncryptedCloudTrailLogReadAccess",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::111111111111:role/CloudTrailReadRole"
    ]
  },
  "Action": "kms:Decrypt",
  "Resource": "arn:aws:kms:region:account-id:key/key-id",
  "Condition": {
    "Null": {
      "kms:EncryptionContext:aws:cloudtrail:arn": "false"
    }
  }
}
```

**CloudTrailReadRole** 신뢰 개체 정책 구문:

------
#### [ JSON ]

****  

```
{
 "Version":"2012-10-17",		 	 	 
 "Statement": [
   {
     "Sid": "Allow CloudTrail access",
     "Effect": "Allow",
     "Principal": {
       "AWS": "arn:aws:iam::222222222222:root"
     },
     "Action": "sts:AssumeRole"
    }
  ]
 }
```

------

CloudTrail에서 사용할 KMS 키 정책 편집에 대한 내용은AWS Key Management Service 개발자 안내서**의 [키 정책 편집](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)을 참조하세요.

## 이벤트 데이터 스토어에 대한 복호화 권한 부여
<a name="create-kms-key-policy-for-cloudtrail-decrypt-eds"></a>

CloudTrail Lake 이벤트 데이터 스토어에 사용되는 KMS 키의 복호화 정책은 다음과 비슷합니다. `Principal`의 값으로 지정된 사용자 또는 역할 ARN에는 이벤트 데이터 스토어를 생성 또는 업데이트하거나, 쿼리를 실행하거나, 쿼리 결과를 가져오기 위한 복호화 권한이 필요합니다.

```
{
      "Sid": "EnableUserKeyPermissionsEds"
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::account-id:user/username"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "*"
  }
```

다음은 CloudTrail 서비스 위탁자가 이벤트 데이터 스토어를 복호화하도록 허용하는 데 필요한 정책의 예입니다.

```
{
      "Sid": "AllowCloudTrailDecryptEds",
      "Effect": "Allow",
      "Principal": {
          "Service": "cloudtrail.amazonaws.com"
        },
      "Action": "kms:Decrypt",
      "Resource": "*"
}
```

## KMS 키 속성을 설명하도록 CloudTrail 사용 설정
<a name="create-kms-key-policy-for-cloudtrail-describe"></a>

CloudTrail에는 KMS 키 속성을 설명할 수 있는 기능이 필요합니다. 이 기능을 사용하려면 KMS 키 정책에 다음 필수 문을 있는 그대로 추가합니다. 이 문은 지정한 다른 권한을 넘어서는 어떠한 권한도 CloudTrail에 부여하지 않습니다.

보안 모범 사례로 `aws:SourceArn` 조건 키를 KMS 키 정책에 추가합니다. IAM 전역 조건 키 `aws:SourceArn`는 CloudTrail이 특정 추적(들)에 대해서만 KMS 키를 사용하도록 합니다.

```
{
  "Sid": "AllowCloudTrailAccess",
  "Effect": "Allow",
  "Principal": {
    "Service": "cloudtrail.amazonaws.com"
  },
  "Action": "kms:DescribeKey",
  "Resource": "arn:aws:kms:region:account-id:key/key-id",
  "Condition": {
    "StringEquals": {
        "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name"
    }
  }
}
```

KMS 키 정책 편집에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 정책 편집](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)을 참조하세요.

# CloudTrail 콘솔에서 생성된 기본 KMS 키 정책
<a name="default-kms-key-policy"></a>

CloudTrail 콘솔 AWS KMS key 에서를 생성하면 다음 정책이 자동으로 생성됩니다. 이 정책은 다음 권한을 허용합니다.
+ KMS 키에 대한 권한을 허용 AWS 계정 (루트)합니다.
+ CloudTrail이 KMS 키로 로그 파일 및 다이제스트 파일을 암호화하고 KMS 키를 설명하도록 허용합니다.
+ 지정된 계정의 모든 사용자가 로그 파일 및 다이제스트 파일을 복호화하도록 허용합니다.
+ 지정된 계정의 모든 사용자가 KMS 키에 대한 KMS 별칭을 생성하도록 허용합니다.
+ 추적을 생성한 계정의 계정 ID에 대한 교차 계정 로그 암호화 해제를 활성화합니다.

**Topics**
+ [추적의 기본 KMS 키 정책](#default-kms-key-policy-trail)
+ [CloudTrail Lake 이벤트 데이터 스토어의 기본 KMS 키 정책](#default-kms-key-policy-eds)

## 추적의 기본 KMS 키 정책
<a name="default-kms-key-policy-trail"></a>

다음은 추적과 함께 AWS KMS key 사용하는에 대해 생성된 기본 정책입니다.

**참고**  
정책은 교차 계정이 KMS 키를 사용하여 로그 파일 및 다이제스트 파일을 복호화할 수 있도록 허용하는 문을 포함합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Key policy created by CloudTrail",
    "Statement": [
        {
            "Sid": "Enable IAM user permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111111111111:root",
                    "arn:aws:iam::111111111111:user/username"
                ]
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow CloudTrail to encrypt logs",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
             },
            "Action": "kms:GenerateDataKey*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:us-east-1:111111111111:trail/trail-name"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:111111111111:trail/*"
                }
            }
        },
        {
            "Sid": "Allow CloudTrail to describe key",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
             },
            "Action": "kms:DescribeKey",
            "Resource": "*"
        },
        {
            "Sid": "Allow principals in the account to decrypt log files",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
             },
            "Action": [
                "kms:Decrypt",
                "kms:ReEncryptFrom"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "111111111111"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:111111111111:trail/*"
                }
            }
        },
        {
            "Sid": "Enable cross account log decryption",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "kms:Decrypt",
                "kms:ReEncryptFrom"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "111111111111"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:111111111111:trail/*"
                }
            }
        }
    ]
}
```

------

## CloudTrail Lake 이벤트 데이터 스토어의 기본 KMS 키 정책
<a name="default-kms-key-policy-eds"></a>

다음은 CloudTrail Lake의 이벤트 데이터 스토어와 함께 AWS KMS key 사용하는에 대해 생성된 기본 정책입니다.

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Id": "Key policy created by CloudTrail",
      "Statement": [
        {
          "Sid": "The key created by CloudTrail to encrypt event data stores. Created ${new Date().toUTCString()}",
          "Effect": "Allow",
          "Principal": {
            "Service": "cloudtrail.amazonaws.com"
          },
          "Action": [
            "kms:GenerateDataKey",
            "kms:Decrypt"
          ],
          "Resource": "*"
        },
        {
          "Sid": "Enable IAM user permissions",
          "Effect": "Allow",
          "Principal": {
                "AWS": "arn:aws:iam::111111111111:root"
          },
          "Action": "kms:*",
          "Resource": "*"
        },
        {
          "Sid": "Enable user to have permissions",
          "Effect": "Allow",
          "Principal": {
               "AWS" : "arn:aws:sts::111111111111:assumed-role/example-role-name"
        },
          "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
           ],
          "Resource": "*"
        }
      ]
    }
```

------

# 콘솔을 사용하여 KMS 키를 사용하도록 리소스 업데이트
<a name="create-kms-key-policy-for-cloudtrail-update-trail"></a>

CloudTrail 콘솔에서 KMS 키를 사용하도록 추적 또는 이벤트 데이터 스토어를 업데이트합니다. 자체 KMS 키를 사용하면 암호화 및 복호화 AWS KMS 비용이 발생합니다. 자세한 내용은 [AWS Key Management Service 요금](https://aws.amazon.com/kms/pricing/)을 참조하세요.

**Topics**
+ [KMS 키를 사용하도록 추적 업데이트](#kms-key-policy-update-trail)
+ [KMS 키를 사용하도록 이벤트 데이터 스토어 업데이트](#kms-key-policy-update-eds)

## KMS 키를 사용하도록 추적 업데이트
<a name="kms-key-policy-update-trail"></a>

CloudTrail에 대해 수정 AWS KMS key 한를 사용하도록 추적을 업데이트하려면 CloudTrail 콘솔에서 다음 단계를 완료합니다.

**참고**  
[S3 버킷 키](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)와 함께 기존 S3 버킷을 사용하는 경우 키 정책에서 AWS KMS 작업인 `GenerateDataKey` 및 `DescribeKey`를 사용할 수 있는 권한이 CloudTrail에 허용되어야 합니다. 키 정책에서 이러한 권한이 `cloudtrail.amazonaws.com`에 부여되지 않은 경우 추적을 생성하거나 업데이트할 수 없습니다.

를 사용하여 추적을 업데이트하려면 섹션을 AWS CLI참조하세요[를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어에 대한 암호화 활성화 및 비활성화 AWS CLI](cloudtrail-log-file-encryption-cli.md).

**KMS 키를 사용하도록 추적을 업데이트하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/) CloudTrail 콘솔을 엽니다.

1. [**추적(Trails)**]을 선택한 다음, 추적 이름을 선택합니다.

1. [**일반 세부 정보(General details)**]에서 [**편집(Edit)**]을 선택합니다.

1. SSE-S3 암호화 대신 SSE-KMS 암호화를 사용하여 로그 파일 및 다이제스트 파일을 암호화하려면 **로그 파일 SSE-KMS 암호화**에서 **사용**을 선택합니다. 기본값은 [**사용(Enabled)**]입니다. SSE-KMS 암호화를 활성화하지 않으면 로그 파일 및 다이제스트 파일은 SSE-S3 암호화를 사용하여 암호화합니다. SSE-KMS 암호화에 대한 자세한 내용은 [AWS Key Management Service (SSE-KMS)를 사용한 서버 측 암호화 사용을](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) 참조하세요. SSE-S3 암호화에 대한 자세한 내용은 [Amazon S3 관리형 암호화 키(SSE-S3)로 서버 측 암호화 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)을 참조하세요.

   [**기존(Existing)**]을 선택하여 AWS KMS key를 사용한 추적을 업데이트합니다. 로그 파일을 수신하는 S3 버킷과 동일한 리전에 있는 KMS 키를 선택합니다. S3 버킷에 대한 리전을 검증하려면, S3 콘솔의 속성을 확인하세요.
**참고**  
다른 계정에 있는 키의 ARN을 입력할 수도 있습니다. 자세한 내용은 [콘솔을 사용하여 KMS 키를 사용하도록 리소스 업데이트](#create-kms-key-policy-for-cloudtrail-update-trail) 단원을 참조하십시오. 키 정책은 CloudTrail이 키를 사용하여 로그 파일 및 다이제스트 파일을 암호화하고 지정한 사용자가 암호화되지 않은 형태로 로그 파일 또는 다이제스트 파일을 읽을 수 있도록 허용해야 합니다. 키 정책의 수동 편집에 대한 자세한 내용은 [CloudTrail에 대한 AWS KMS 키 정책 구성](create-kms-key-policy-for-cloudtrail.md)을 참조하세요.

   **AWS KMS Alias**(별칭)에서 CloudTrail에서 사용하기 위해 변경한 정책의 별칭을 `alias/`*MyAliasName* 형식으로 지정합니다. 자세한 내용은 [콘솔을 사용하여 KMS 키를 사용하도록 리소스 업데이트](#create-kms-key-policy-for-cloudtrail-update-trail)을 참조하세요.

   별칭 이름, ARN 또는 전역적으로 고유한 키 ID를 입력할 수 있습니다. KMS 키가 다른 계정에 속한 경우 해당 키를 사용할 수 있는 권한이 키 정책에 있는지 확인합니다. 값은 다음 형식 중 하나일 수 있습니다.
   + **별칭 이름**: `alias/MyAliasName`
   + **별칭 ARN**: `arn:aws:kms:region:123456789012:alias/MyAliasName` 
   + **키 ARN**: `arn:aws:kms:region:123456789012:key/12345678-1234-1234-1234-123456789012` 
   + **전역적으로 고유한 키 ID**: `12345678-1234-1234-1234-123456789012` 

1. [**추적 업데이트(Update trail)**]를 선택합니다.
**참고**  
선택한 KMS 키가 사용 중지되었거나 삭제 대기 중인 경우 해당 KMS 키를 사용한 추적을 저장할 수 없습니다. KMS 키를 사용 설정하거나 다른 KMS 키를 선택할 수 있습니다. 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 상태: KMS 키에 미치는 영향](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)을 참조하세요.

## KMS 키를 사용하도록 이벤트 데이터 스토어 업데이트
<a name="kms-key-policy-update-eds"></a>

CloudTrail에 대해 AWS KMS key 수정한를 사용하도록 이벤트 데이터 스토어를 업데이트하려면 CloudTrail 콘솔에서 다음 단계를 완료합니다.

를 사용하여 이벤트 데이터 스토어를 업데이트하려면 섹션을 AWS CLI참조하세요[를 사용하여 이벤트 데이터 스토어 업데이트 AWS CLI](lake-cli-update-eds.md).

**중요**  
KMS 키를 사용 중지 또는 삭제하거나 키에 대한 CloudTrail 권한을 제거하면 CloudTrail이 이벤트 데이터 스토어로 이벤트를 수집할 수 없으며 사용자가 키로 암호화된 이벤트 데이터 스토어의 데이터를 쿼리할 수 없습니다. KMS 키와 이벤트 데이터 스토어를 연결한 후에는 KMS 키를 제거하거나 변경할 수 없습니다. 이벤트 데이터 스토어에 사용 중인 KMS 키를 사용하지 않거나 삭제하기 전에 이벤트 데이터 스토어를 삭제하거나 백업합니다.

**KMS 키를 사용하도록 이벤트 데이터 스토어를 업데이트하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/) CloudTrail 콘솔을 엽니다.

1. 탐색 창에서 **Lake**의 **Event data stores**(이벤트 데이터 스토어)를 선택합니다. 업데이트할 이벤트 데이터 스토어를 선택합니다.

1. [**일반 세부 정보(General details)**]에서 [**편집(Edit)**]을 선택합니다.

1. **암호화**에서 아직 사용하지 않은 경우 **자체 AWS KMS key사용**을 선택하여 자체 KMS 키로 이벤트 데이터 스토어를 암호화합니다.

   **Existing**(기존)을 선택하여 KMS 키로 이벤트 데이터 스토어를 업데이트합니다. 이벤트 데이터 스토어와 동일한 리전에 있는 KMS 키를 선택합니다. 다른 계정의 키는 지원하지 않습니다.

   ** AWS KMS 별칭 입력**에서 CloudTrail에서 사용할 정책을 변경한 별칭을 `alias/`*MyAliasName* 형식으로 지정합니다. 자세한 내용은 [콘솔을 사용하여 KMS 키를 사용하도록 리소스 업데이트](#create-kms-key-policy-for-cloudtrail-update-trail) 단원을 참조하십시오.

   별칭을 선택하거나 전역적 고유 키 ID를 사용할 수 있습니다. 값은 다음 형식 중 하나일 수 있습니다.
   + **별칭 이름**: `alias/MyAliasName`
   + **별칭 ARN**: `arn:aws:kms:region:123456789012:alias/MyAliasName` 
   + **키 ARN**: `arn:aws:kms:region:123456789012:key/12345678-1234-1234-1234-123456789012` 
   + **전역적으로 고유한 키 ID**: `12345678-1234-1234-1234-123456789012` 

1. **변경 사항 저장**을 선택합니다.
**참고**  
선택한 KMS 키를 사용 중지되었거나 삭제 대기 중인 경우 해당 KMS 키를 사용한 이벤트 데이터 스토어 구성을 저장할 수 없습니다. KMS 키를 사용하거나 다른 키를 선택할 수 있습니다. 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 상태: KMS 키에 미치는 영향](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)을 참조하세요.

# 를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어에 대한 암호화 활성화 및 비활성화 AWS CLI
<a name="cloudtrail-log-file-encryption-cli"></a>

이 주제에서는 AWS CLI를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어에 대한 SSE-KMS 암호화를 활성화 및 비활성화하는 방법을 설명합니다. 배경 정보는 [AWS KMS 키를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어 암호화(SSE-KMS)](encrypting-cloudtrail-log-files-with-aws-kms.md)를 참조하세요.

**Topics**
+ [를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어에 대한 암호화 활성화 AWS CLI](#cloudtrail-log-file-encryption-cli-enable)
+ [를 사용하여 로그 파일 및 다이제스트 파일에 대한 암호화 비활성화 AWS CLI](#cloudtrail-log-file-encryption-cli-disable)

## 를 사용하여 CloudTrail 로그 파일, 다이제스트 파일 및 이벤트 데이터 스토어에 대한 암호화 활성화 AWS CLI
<a name="cloudtrail-log-file-encryption-cli-enable"></a>
+ [추적에 대한 로그 파일 및 다이제스트 파일 암호화 활성화](#log-encryption-trail)
+ [이벤트 데이터 스토어에 대한 암호화 활성화](#log-encryption-eds)<a name="log-encryption-trail"></a>

**추적에 대한 로그 파일 및 다이제스트 파일 암호화 활성화**

1.  AWS CLI를 사용하여 키를 생성합니다. 생성하는 키는 CloudTrail 로그 파일을 수신하는 S3 버킷과 동일한 리전에 있어야 합니다. 이 단계에서는 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 명령을 사용합니다.

1. CloudTrail에 사용하기 위해 수정할 수 있도록 기존 키 정책을 가져옵니다. 명령을 사용하여 키 정책을 검색할 수 있습니다 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html).

1. CloudTrail이 로그 파일과 다이제스트 파일을 암호화하고 사용자가 이를 복호화할 수 있도록 키 정책에 필요한 섹션을 추가합니다. 로그 파일을 읽는 모든 사용자에게는 복호화 권한을 부여해야 합니다. 정책의 기존 섹션을 수정하지 않습니다. 포함할 정책 섹션에 대한 자세한 내용은 [CloudTrail에 대한 AWS KMS 키 정책 구성](create-kms-key-policy-for-cloudtrail.md)을 참조하세요.

1. 명령을 사용하여 수정된 JSON 정책 파일을 키에 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) 연결합니다.

1. `--kms-key-id` 파라미터와 함께 CloudTrail `create-trail` 또는 `update-trail` 명령을 실행합니다. 이 명령은 로그 파일 및 다이제스트 파일의 암호화를 활성화합니다.

   ```
   aws cloudtrail update-trail --name Default --kms-key-id alias/MyKmsKey
   ```

   `--kms-key-id` 파라미터는 CloudTrail용으로 수정한 정책의 키를 지정합니다. 이는 다음 형식 중 하나일 수 있습니다.
   + **별칭 이름**. 예시: `alias/MyAliasName`
   + **별칭 ARN**. 예: `arn:aws:kms:us-east-2:123456789012:alias/MyAliasName` 
   + **키 ARN**. 예시: `arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012` 
   + **전역적으로 고유한 키 ID.** 예시: `12345678-1234-1234-1234-123456789012` 

   다음은 응답의 예입니다.

   ```
   {
       "IncludeGlobalServiceEvents": true, 
       "Name": "Default", 
       "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Default", 
       "LogFileValidationEnabled": false,
       "KmsKeyId": "arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012", 
       "S3BucketName": "amzn-s3-demo-bucket"
   }
   ```

   `KmsKeyId` 요소가 있으면 로그 파일 암호화가 활성화되었음을 나타냅니다. 로그 파일 검증이 활성화된 경우(참으로 설정된 `LogFileValidationEnabled` 요소로 표시됨) 다이제스트 파일에 암호화도 활성화되었음을 나타냅니다. 암호화된 로그 파일과 다이제스트 파일은 약 5분 이내에 추적에 대해 구성된 S3 버킷에 나타나야 합니다.<a name="log-encryption-eds"></a>

**이벤트 데이터 스토어에 대한 암호화 활성화**

1.  AWS CLI를 사용하여 키를 생성합니다. 생성하는 키는 이벤트 데이터 스토어와 동일한 리전에 있어야 합니다. 이 단계에서는 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 명령을 실행합니다.

1. CloudTrail에 사용하기 위해 편집할 기존 키 정책을 가져옵니다. 명령을 실행하여 키 정책을 가져올 수 있습니다 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html).

1. CloudTrail이 이벤트 데이터 스토어를 암호화하고 사용자가 이를 복호화할 수 있도록 키 정책에 필요한 섹션을 추가합니다. 이벤트 데이터 스토어를 읽는 모든 사용자에게 복호화 권한이 부여되었는지 확인하십시오. 정책의 기존 섹션을 수정하지 않습니다. 포함할 정책 섹션에 대한 자세한 내용은 [CloudTrail에 대한 AWS KMS 키 정책 구성](create-kms-key-policy-for-cloudtrail.md)을 참조하세요.

1.  AWS KMS [put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) 명령을 실행하여 편집된 JSON 정책 파일을 키에 연결합니다.

1. CloudTrail `create-event-data-store` 또는 `update-event-data-store` 명령을 실행한 다음 `--kms-key-id` 파라미터를 추가합니다. 이 명령은 이벤트 데이터 스토어의 암호화를 활성화합니다.

   ```
   aws cloudtrail update-event-data-store --name my-event-data-store --kms-key-id alias/MyKmsKey
   ```

   `--kms-key-id` 파라미터는 CloudTrail용으로 수정한 정책의 키를 지정합니다. 이는 다음의 4개 형식 중 하나일 수 있습니다.
   + **별칭 이름**. 예시: `alias/MyAliasName`
   + **별칭 ARN**. 예: `arn:aws:kms:us-east-2:123456789012:alias/MyAliasName` 
   + **키 ARN**. 예시: `arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012` 
   + **전역적으로 고유한 키 ID.** 예시: `12345678-1234-1234-1234-123456789012` 

   다음은 응답의 예입니다.

   ```
   {
       "Name": "my-event-data-store",
       "ARN": "arn:aws:cloudtrail:us-east-1:12345678910:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE",
       "RetentionPeriod": "90",
       "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
       "MultiRegionEnabled": false,
       "OrganizationEnabled": false,
       "TerminationProtectionEnabled": true,
       "AdvancedEventSelectors": [{
           "Name": "Select all external events",
           "FieldSelectors": [{
               "Field": "eventCategory",
               "Equals": [
                   "ActivityAuditLog"
               ]
           }]
       }]
   }
   ```

   `KmsKeyId` 요소가 있으면 이벤트 데이터 스토어에 대한 암호화가 활성화되었음을 나타냅니다.

## 를 사용하여 로그 파일 및 다이제스트 파일에 대한 암호화 비활성화 AWS CLI
<a name="cloudtrail-log-file-encryption-cli-disable"></a>

추적에 대한 로그 파일 및 다이제스트 파일 암호화를 중지하려면 `update-trail`을 실행하고 `kms-key-id` 파라미터에 빈 문자열을 전달합니다.

```
aws cloudtrail update-trail --name my-test-trail --kms-key-id ""
```

다음은 응답의 예입니다.

```
{
    "IncludeGlobalServiceEvents": true, 
    "Name": "Default", 
    "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Default", 
    "LogFileValidationEnabled": false, 
    "S3BucketName": "amzn-s3-demo-bucket"
}
```

`KmsKeyId` 값이 없으면 로그 파일 및 다이제스트 파일에 대한 암호화가 더 이상 활성화되지 않음을 나타냅니다.

**중요**  
이벤트 데이터 스토어에 대한 암호화는 중지할 수 없습니다.

# 에서를 AWS CloudTrail 사용하는 방법 AWS KMS
<a name="how-kms-works-with-cloudtrail"></a>

이 섹션에서는 SSE-KMS 키 AWS KMS 로 암호화된 CloudTrail 추적에서가 작동하는 방법을 설명합니다.

**중요**  
AWS CloudTrail 및 Amazon S3는 [대칭 AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks)만 지원합니다. [비대칭 KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 사용하여 CloudTrail 로그를 암호화할 수 없습니다. KMS 키가 대칭인지 비대칭인지 확인하는 데 도움이 필요한 경우 *AWS Key Management Service 개발자 안내서*의 [다양한 키 유형 식별](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html)을 참조하세요.

CloudTrail이 SSE-KMS 키로 암호화된 로그 파일을 읽거나 쓸 때 키 사용 요금을 지불하지 않습니다. 그러나 SSE-KMS 키로 암호화된 CloudTrail 로그 파일에 액세스할 때 키 사용 요금을 지불합니다. AWS KMS 요금에 대한 자세한 내용은 [AWS Key Management Service 요금을](https://aws.amazon.com/kms/pricing/) 참조하세요. CloudTrail 요금에 대한 자세한 내용은 [AWS CloudTrail 요금](https://aws.amazon.com/cloudtrail/pricing/)을 참조하세요.

## 추적에 KMS 키가 사용되는 시점 이해
<a name="cloudtrail-details"></a>

 AWS KMS key (SSE-KMS)를 사용한 서버 측 암호화라는 Amazon S3 기능을 기반으로 AWS KMS CloudTrail 로그 파일을 암호화합니다. SSE-KMS에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) 사용을 참조하세요.

SSE-KMS를 사용하여 로그 파일을 암호화 AWS CloudTrail 하도록를 구성하면 CloudTrail과 Amazon S3는 해당 서비스로 특정 작업을 수행할 AWS KMS keys 때를 사용합니다. 다음 섹션에서는 이러한 서비스가 언제 어떻게 KMS 키를 사용할 수 있는지 설명하고, 이 설명을 재확인할 수 있는 추가 정보를 제공합니다.

**Contents**
+ [를 사용하여 로그 파일을 암호화하도록 CloudTrail을 구성합니다. AWS KMS key](#cloudtrail-details-update-configuration)
+ [CloudTrail이 S3 버킷에 로그 파일 저장](#cloudtrail-details-put-log-file)
+ [S3 버킷에서 암호화된 로그 파일 가져오기](#cloudtrail-details-get-log-file)

### 를 사용하여 로그 파일을 암호화하도록 CloudTrail을 구성합니다. AWS KMS key
<a name="cloudtrail-details-update-configuration"></a>

[KMS 키를 사용하도록 CloudTrail 구성을 업데이트](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail-update-trail.html)하면 CloudTrail은 AWS KMS 에 [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 요청을 보내 KMS 키가 존재하고 CloudTrail에 암호화에 사용할 권한이 있는지 확인합니다. CloudTrail은 결과 데이터 키를 사용하지 않습니다.

`GenerateDataKey` 요청에는 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)에 대한 다음 정보가 포함됩니다.
+ CloudTrail 추적의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
+ S3 버킷의 ARN 및 CloudTrail 로그 파일이 전달되는 경로

`GenerateDataKey` 요청의 결과, CloudTrail 로그에 다음 예와 비슷한 항목이 생성됩니다. 이와 같은 로그 항목이 표시되면 CloudTrail이 특정 추적에 AWS KMS `GenerateDataKey` 대한 작업을 호출했음을 확인할 수 있습니다.는 특정 KMS 키 아래에 데이터 키를 AWS KMS 생성했습니다.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "cloudtrail.amazonaws.com"
    },
    "eventTime": "2024-12-06T20:14:46Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "cloudtrail.amazonaws.com",
    "userAgent": "cloudtrail.amazonaws.com",
    "requestParameters": {
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770",
        "encryptionContext": {
            "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/management-events",
            "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket-123456789012-9af1fb49/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2010Z_TO50OLMG1hIQ1png.json.gz"
        }
    },
    "responseElements": null,
    "requestID": "a0555e85-7e8a-4765-bd8f-2222295558e1",
    "eventID": "e4f3557e-7dbd-4e37-a00a-d86c137d1111",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770"
         }],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "sharedEventID": "ce71d6be-0846-498e-851f-111a1af9078f",
    "eventCategory": "Management"
}
```

### CloudTrail이 S3 버킷에 로그 파일 저장
<a name="cloudtrail-details-put-log-file"></a>

CloudTrail이 로그 파일을 S3 버킷에 넣을 때마다 Amazon S3는 CloudTrail AWS KMS 을 대신하여에 [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 요청을 보냅니다. 이 요청에 대한 응답으로는 고유한 데이터 키를 AWS KMS 생성한 다음 데이터 키의 두 복사본을 Amazon S3에 전송합니다. 하나는 일반 텍스트이고 다른 하나는 지정된 KMS 키로 암호화됩니다. Amazon S3는 일반 텍스트 데이터 키를 사용해 CloudTrail 로그 파일을 암호화하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다. Amazon S3는 암호화된 데이터 키를 암호화된 CloudTrail 로그 파일과 함께 메타데이터로 저장합니다.

`GenerateDataKey` 요청에는 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)에 대한 다음 정보가 포함됩니다.
+ CloudTrail 추적의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
+ S3 객체의 ARN(CloudTrail 로그 파일)

각 `GenerateDataKey` 요청의 결과, CloudTrail 로그에 다음 예와 비슷한 항목이 생성됩니다. 이와 같은 로그 항목이 표시되면 CloudTrail이 특정 로그 파일을 보호하기 위해 특정 추적에 대한 작업을 호출 AWS KMS `GenerateDataKey`했음을 확인할 수 있습니다.는 동일한 로그 항목에 두 번 표시된 지정된 KMS 키로 데이터 키를 AWS KMS 생성했습니다.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "cloudtrail.amazonaws.com"
    },
    "eventTime": "2024-12-06T21:49:28Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "cloudtrail.amazonaws.com",
    "userAgent": "cloudtrail.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1::trail/insights-trail",
            "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2150Z_hVXmrJzjZk2wAM2V.json.gz"
        },
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a"
    },
    "responseElements": null,
    "requestID": "11117d14-9232-414a-b3d1-01bab4dc9f99",
    "eventID": "999e9a50-512c-4e2a-84a3-111a5f511111",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "sharedEventID": "5e663acc-b7fd-4cdd-8328-0eff862952fa",
    "eventCategory": "Management"
}
```

### S3 버킷에서 암호화된 로그 파일 가져오기
<a name="cloudtrail-details-get-log-file"></a>

S3 버킷에서 암호화된 CloudTrail 로그 파일을 가져올 때마다 Amazon S3는 사용자를 대신하여 AWS KMS 에 로그 파일의 암호화된 데이터 키를 해독하라는 [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 요청을 보냅니다. 이 요청에 대한 응답으로는 KMS 키를 AWS KMS 사용하여 데이터 키를 해독한 다음 일반 텍스트 데이터 키를 Amazon S3로 보냅니다. Amazon S3는 일반 텍스트 데이터 키를 사용해 CloudTrail 로그 파일을 복호화하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

`Decrypt` 요청에는 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)에 대한 다음 정보가 포함됩니다.
+ CloudTrail 추적의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
+ S3 객체의 ARN(CloudTrail 로그 파일)

각 `Decrypt` 요청의 결과, CloudTrail 로그에 다음 예와 비슷한 항목이 생성됩니다. 이와 같은 로그 항목이 표시되면 수임된 역할이 특정 추적 및 특정 로그 파일에 대한 작업을 호출 AWS KMS `Decrypt`했음을 확인할 수 있습니다. AWS KMS 는 특정 KMS 키 아래의 데이터 키를 복호화했습니다.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:sts::123456789012:assumed-role/Admin",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::123456789012:role/Admin",
                "accountId": "123456789012",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2024-12-06T22:04:04Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2024-12-06T22:26:34Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "encryptionContext": {
            "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/insights-trail",
            "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T0000Z_aAAsHbGBdye3jp2R.json.gz"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "1ab2d2d2-111a-2222-a59b-11a2b3832b53",
    "eventID": "af4d4074-2849-4b3d-1a11-a1aaa111a111",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management",
    "sessionCredentialFromConsole": "true"
}
```