

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

# 를 사용하여 이상 탐지기 및 그 결과 암호화 AWS KMS
<a name="LogsAnomalyDetection-KMS"></a>

이상 탐지기 데이터는 항상 CloudWatch Logs에서 암호화됩니다. 기본적으로 CloudWatch Logs는 저장 데이터에 서버 측 암호화를 사용합니다. 또는이 암호화 AWS Key Management Service 에를 사용할 수 있습니다. 이렇게 하면 AWS KMS 키를 사용하여 암호화가 완료됩니다. AWS KMS 를 사용한 암호화는 KMS 키를 이상 탐지기와 연결하여 이상 탐지기 수준에서 활성화됩니다.

**중요**  
CloudWatch Logs는 대칭 KMS 키만 지원합니다. 비대칭 키를 사용하여 로그 그룹의 데이터를 암호화하지 마세요. 자세한 내용은 [대칭 및 비대칭 키 사용](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)을 참조하세요.

## 제한 사항
<a name="encryption-limits-anomaly"></a>
+ 다음 단계를 수행하려면 `kms:CreateKey`, `kms:GetKeyPolicy` 및 `kms:PutKeyPolicy` 권한이 있어야 합니다.
+ 로그 그룹에 키 연결 작업 또는 로그 그룹에서 키 연결 해제 작업이 적용되려면 최대 5분이 소요될 수 있습니다.
+ 연결된 키에 대한 CloudWatch Logs 액세스 권한을 취소하거나 연결된 KMS 키를 삭제한 경우에는 CloudWatch Logs에서 암호화된 데이터를 더 이상 검색할 수 없습니다.

### 1단계: AWS KMS 키 생성
<a name="create-cmk-anomaly"></a>

다음 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 명령을 사용하여 KMS 키 생성:

```
aws kms create-key
```

이 명령의 출력 화면에는 키의 키 ID와 Amazon Resource Name(ARN)이 포함됩니다. 다음은 예제 출력입니다.

```
{
    "KeyMetadata": {
        "Origin": "AWS_KMS",
        "KeyId": "key-default-1",
        "Description": "",
        "KeyManager": "CUSTOMER",
        "Enabled": true,
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "CreationDate": 1478910250.94,
        "Arn": "arn:aws:kms:us-west-2:123456789012:key/key-default-1",
        "AWSAccountId": "123456789012",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ]
    }
}
```

### 2단계: KMS 키에 대한 권한 설정
<a name="cmk-permissions-ad"></a>

기본적으로 모든 AWS KMS 키는 프라이빗입니다. 리소스 소유자만 이를 사용하여 데이터를 암호화 및 해독할 수 있습니다. 그러나 리소스 소유자가 원한다면 다른 사용자 및 리소스에 KMS 키에 대한 액세스 권한을 부여할 수 있습니다. 이 단계에서는 키를 사용할 보안 주체 권한을 CloudWatch Logs 서비스에 제공합니다. 이 서비스 보안 주체는 KMS 키가 저장된 리전과 동일한 AWS 리전에 있어야 합니다.

가장 좋은 방법은 KMS 키 사용을 지정한 AWS 계정 또는 이상 탐지기로만 제한하는 것입니다.

먼저 다음 [get-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html) 명령을 사용하는 `policy.json`로 KMS 키에 대한 기본 정책을 저장합니다.

```
aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json
```

텍스트 편집기에서 `policy.json` 파일을 열고 다음 명령문 중 하나에서 굵은 글꼴로 표시된 섹션을 추가합니다. 기존 명령문과 새 명령문을 쉼표로 구분합니다. 이러한 문은 `Condition` 섹션을 사용하여 AWS KMS 키의 보안을 강화합니다. 자세한 내용은 [AWS KMS 키 및 암호화 컨텍스트](encrypt-log-data-kms.md#encrypt-log-data-kms-policy) 단원을 참조하십시오.

이 예제의 `Condition` 섹션에서는 AWS KMS 키 사용을 지정된 계정으로 제한하지만 모든 이상 탐지기에서 사용할 수 있습니다.

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

****  

```
    {
    "Version":"2012-10-17",		 	 	 
    "Id": "key-default-1",
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowCloudWatchLogsEncryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                }
            }
        },
        {
            "Sid": "AllowCloudWatchLogsDescribeKey",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "AllowCloudWatchLogsReEncryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:logs:arn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                }
            }
        },
        {
            "Sid": "AllowCloudWatchLogsDescribeKeyForReEncryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

마지막으로 아래 [put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) 명령을 사용하여 업데이트된 정책을 추가합니다.

```
aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json
```

### 3단계: KMS 키를 이상 탐지기와 연결
<a name="associate-cmk"></a>

콘솔에서 또는 AWS CLI 또는 APIs.

#### 4단계: 이상 탐지기에서 키 연결 해제
<a name="disassociate-cmk"></a>

키가 이상 탐지기와 연결된 후에는 키를 업데이트할 수 없습니다. 키를 제거하는 유일한 방법은 이상 탐지기를 삭제한 다음 다시 생성하는 것입니다.