

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

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