

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

# 의 보안 암호 암호화 및 복호화 AWS Secrets Manager
<a name="security-encryption"></a>

Secrets Manager는 AWS KMS [키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) 및 [데이터 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)로 봉투 암호화를 사용하여 각 보안 암호 값을 보호합니다. 보안 암호의 보안 암호 값이 변경될 때마다 Secrets Manager는 AWS KMS 에서 새 데이터 키를 요청하여 보안 암호 값을 보호합니다. KMS 키 아래에 암호화된 데이터 키는 보안 암호의 메타데이터에 저장합니다. 보안 암호를 해독하기 위해 Secrets Manager는 먼저 KMS 키를 사용하여 암호화된 데이터 키를 해독합니다 AWS KMS.

Secrets Manager에서는 KMS를 사용하여 보안 암호 값을 직접 암호화하지 않습니다. 대신 KMS 키를 사용하여 256비트 고급 암호화 표준(AES) 대칭 [데이터 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)를 생성하고 암호화하며 데이터 키를 사용하여 보안 암호 값을 암호화합니다. Secrets Manager는 일반 텍스트 데이터 키를 사용하여 외부의 보안 암호 값을 암호화 AWS KMS한 다음 메모리에서 제거합니다. 데이터 키의 암호화된 사본을 암호의 메타데이터에 저장합니다.

**Topics**
+ [AWS KMS 키 선택](#security-encryption-choose-key)
+ [무엇을 암호화하나요?](#secret-value-encrypted)
+ [암호화 및 복호화 프로세스](#security-encryption-encrypt)
+ [KMS 키에 대한 권한](#security-encryption-authz)
+ [Secrets Manager에서 KMS 키를 사용하는 방법](#security-encryption-using-cmk)
+ [AWS 관리형 키 (`aws/secretsmanager`)의 키 정책](#security-encryption-policies)
+ [Secrets Manager 보안 암호 컨텍스트](#security-encryption-encryption-context)
+ [와의 Secrets Manager 상호 작용 모니터링 AWS KMS](#security-encryption-logs)

## AWS KMS 키 선택
<a name="security-encryption-choose-key"></a>

보안 암호를 생성할 때 AWS 계정 및 리전에서 대칭 암호화 고객 관리형 키를 선택하거나 Secrets Manager() AWS 관리형 키 용를 사용할 수 있습니다`aws/secretsmanager`. 를 AWS 관리형 키 선택하고 아직 존재하지 `aws/secretsmanager` 않는 경우 Secrets Manager는 이를 생성하고 보안 암호와 연결합니다. 계정의 각 보안 암호에 대해 동일한 KMS 또는 다른 KMS 키를 사용할 수 있습니다. 암호 그룹의 키에 대한 사용자 지정 권한을 설정하거나 해당 키에 대한 특정 작업을 감사하려는 경우 다른 KMS 키를 사용할 수 있습니다. Secrets Manager는 [대칭 암호화 KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)만 지원합니다. [외부 키 스토어](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)에서 KMS 키를 사용하는 경우 요청이 AWS외부로 이동해야 하므로 KMS 키에 대한 암호화 작업이 더 오래 걸리고 신뢰성과 내구성이 떨어질 수 있습니다.

보안 암호의 암호화 키를 변경하는 방법에 대한 자세한 내용은 [AWS Secrets Manager 보안 암호의 암호화 키 변경](manage_update-encryption-key.md)을(를) 참조하세요.

암호화 키를 변경하면 Secrets Manager가 새 키로 `AWSCURRENT`, `AWSPENDING`, `AWSPREVIOUS` 버전을 다시 암호화합니다. 보안 암호가 잠기는 것을 방지하기 위해 Secrets Manager는 모든 기존 버전을 이전 키로 암호화합니다. 즉, 이전 키 또는 새 키를 사용하여 `AWSCURRENT`, `AWSPENDING`, `AWSPREVIOUS` 버전을 복호화할 수 있습니다. 이전 키에 대한 `kms:Decrypt` 권한이 없는 경우, 암호화 키를 변경하면 Secrets Manager는 보안 암호 버전을 복호화하여 이를 다시 암호화할 수 없습니다. 이 경우 기존 버전은 다시 암호화되지 않습니다.

`AWSCURRENT`가 새 암호화 키로만 복호화할 수 있도록 하려면 새 키로 새 버전의 보안 암호를 생성합니다. 그런 다음, `AWSCURRENT` 보안 암호 버전을 복호화하려면 새 키에 대한 권한이 있어야 합니다.

에 AWS 관리형 키 `aws/secretsmanager` 대한 권한을 거부하고 고객 관리형 키로 보안 암호를 암호화하도록 요구할 수 있습니다. 자세한 내용은 [예: 보안 암호를 암호화하기 위한 특정 AWS KMS 키 거부](auth-and-access_iam-policies.md#auth-and-access_examples_kmskey) 단원을 참조하십시오.

보안 암호와 연결된 KMS 키를 찾으려면 콘솔에서 보안 암호를 확인하거나 [ListSecrets](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ListSecrets.html) 또는 [DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html)에서 호출합니다. 보안 암호가 AWS 관리형 키 Secrets Manager(`aws/secretsmanager`)용와 연결된 경우 이러한 작업은 KMS 키 식별자를 반환하지 않습니다.

## 무엇을 암호화하나요?
<a name="secret-value-encrypted"></a>

Secrets Manager는 암호 값을 암호화하지만 다음 항목은 암호화하지 않습니다.
+ 보안 암호 이름 및 설명
+ 교체 설정
+ 보안 암호와 연결된 KMS 키의 ARN
+ 연결된 모든 AWS 태그 

## 암호화 및 복호화 프로세스
<a name="security-encryption-encrypt"></a>

Secrets Manager는 다음 프로세스에 따라 보안 암호의 보안 암호 값을 암호화합니다.

1. Secrets Manager는 보안 암호에 대한 KMS 키의 ID와 256비트 AES 대칭 키에 대한 요청을 사용하여 AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 작업을 호출합니다.는 KMS 키로 암호화된 일반 텍스트 데이터 키와 해당 데이터 키의 사본을 AWS KMS 반환합니다.

1. Secrets Manager는 일반 텍스트 데이터 키와 고급 암호화 표준(AES) 알고리즘을 사용하여 외부에서 보안 암호 값을 암호화합니다 AWS KMS. 사용한 후에는 가능한 빨리 메모리에서 일반 텍스트 키를 제거합니다.

1. Secrets Manager는 보안 암호 값을 복호화할 수 있도록 보안 암호의 메타데이터에 암호화된 데이터 키를 저장합니다. 하지만 Secrets Manager API 중에서 어떤 것도 암호화된 보안 암호나 암호화된 데이터 키를 반환하지 않습니다.

암호화된 암호 값을 해독하려면:

1.  Secrets Manager는 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출하고 암호화된 데이터 키를 전달합니다.

1. AWS KMS 는 보안 암호에 KMS 키를 사용하여 데이터 키를 복호화합니다. 그런 다음 일반 텍스트 데이터 키를 반환합니다.

1. Secrets Manager는 일반 텍스트 데이터 키를 사용하여 보안 암호 값을 복호화합니다. 그런 다음 가능한 빨리 메모리에서 데이터 키를 제거합니다.

## KMS 키에 대한 권한
<a name="security-encryption-authz"></a>

Secrets Manager가 암호화 작업에서 KMS 키를 사용하는 경우 보안 암호 값에 액세스하거나 업데이트하는 사용자를 대신하여 KMS 키가 작동합니다. IAM 정책 또는 키 정책에서 권한을 부여할 수 있습니다. 다음 Secrets Manager 작업에는 AWS KMS 권한이 필요합니다.
+ [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)
+ [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html)
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html)
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html)

Secrets Manager의 권한 정책에서 생성된 요청에 대해서만 KMS 키를 사용할 수 있도록 하려면 [kms:ViaService 조건 키](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)를 `secretsmanager.<Region>.amazonaws.com` 값과 함께 사용합니다.

암호화 작업에 대한 KMS 키 사용 조건으로서 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html#asm-encryption-context)에서 키나 값을 사용할 수도 있습니다. 예를 들면 IAM 또는 키 정책 문서에서 [문자열 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)를 사용하거나 권한 부여에서 [권한 부여 제약](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)을 사용할 수 있습니다. KMS 키 부여 전파에는 최대 5분이 걸릴 수 있습니다. 자세한 내용은 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)를 참조하세요.

## Secrets Manager에서 KMS 키를 사용하는 방법
<a name="security-encryption-using-cmk"></a>

Secrets Manager는 KMS 키를 사용하여 다음 AWS KMS 작업을 호출합니다.

**GenerateDataKey**  
Secrets Manager는 다음 Secrets Manager 작업에 대한 응답으로 AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 작업을 호출합니다.  
+ [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) - 새 보안 암호가 보안 암호 값을 포함하는 경우 Secrets Manager는 보안 암호 값을 암호화하기 위해 새 데이터 키를 요청합니다.
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) – Secrets Manager는 지정된 보안 암호 값을 암호화하기 위해 새 데이터 키를 요청합니다.
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html) - Secrets Manager는 복제된 보안 암호를 암호화하기 위해 복제본 리전의 KMS 키에 대한 데이터 키를 요청합니다.
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) - 보안 암호 값 또는 KMS 키가 변경되는 경우 Secrets Manager는 새 보안 암호 값을 암호화하기 위해 새 데이터 키를 요청합니다.
[RotateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_RotateSecret.html) 작업은 암호 값을 변경하지 않으므로 `GenerateDataKey`를 호출하지 않습니다. 하지만 `RotateSecret`에서 호출하는 Lambda 함수가 보안 암호 값을 변경하는 경우 `PutSecretValue` 작업에 대한 호출로 `GenerateDataKey` 요청이 트리거됩니다.

**Decrypt**  
Secrets Manager는 다음 Secrets Manager 작업에 대한 응답으로 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출합니다.  
+ [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) 및 [BatchGetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_BatchGetSecretValue.html) – Secrets Manager는 보안 암호 값을 발신자에게 반환하기 전에 보안 암호 값을 복호화합니다. 암호화된 보안 암호 값을 해독하기 위해 Secrets Manager는 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출하여 보안 암호의 암호화된 데이터 키를 해독합니다. 그런 다음, 일반 텍스트 데이터 키를 사용하여 암호화된 암호 값을 해독합니다. 배치 명령의 경우 Secrets Manager는 해독된 키를 재사용할 수 있으므로 일부 호출에서만 `Decrypt` 요청이 발생합니다.
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) 및 [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) - 대부분의 `PutSecretValue` 및 `UpdateSecret` 요청은 `Decrypt` 작업을 트리거하지 않습니다. 하지만 `PutSecretValue` 또는 `UpdateSecret` 요청이 보안 암호의 기존 버전에서 보안 암호 값을 변경하려 할 경우 Secrets Manager는 기존 보안 암호 값을 복호화하고 요청의 보안 암호 값과 비교하여 동일한지 확인합니다. 이 작업을 통해 Secrets Manager 작업의 idempotent가 유지됩니다. 암호화된 보안 암호 값을 해독하기 위해 Secrets Manager는 AWS KMS [암호 해독](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출하여 보안 암호의 암호화된 데이터 키를 해독합니다. 그런 다음, 일반 텍스트 데이터 키를 사용하여 암호화된 암호 값을 해독합니다.
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html) – Secrets Manager는 복제본 리전의 KMS 키를 사용하여 다시 암호화하기 전에 먼저 보안 암호 값을 해독합니다.

**암호화**  
Secrets Manager는 다음 Secrets Manager 작업에 대한 응답으로 [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 작업을 호출합니다.  
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) - KMS 키를 변경하면 Secrets Manager는 새 키로 `AWSCURRENT`, `AWSPREVIOUS` 및 `AWSPENDING` 보안 암호 버전을 보호하는 데이터 키를 다시 암호화합니다.

**DescribeKey**  
Secrets Manager는 Secrets Manager 콘솔에서 암호를 생성하거나 편집할 때 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 작업을 호출하여 KMS 키를 나열할지 여부를 결정합니다.

**KMS 키에 대한 액세스 검증**  
보안 암호와 연결된 KMS 키를 설정하거나 변경할 때 Secrets Manager는 지정된 KMS 키를 사용하여 `GenerateDataKey` 및 `Decrypt` 작업을 호출합니다. 이러한 호출은 발신자가 해당 작업에 대해 KMS 키를 사용할 수 있는 권한이 있는지 확인합니다. Secrets Manager는 이러한 작업의 결과를 무시하며, 암호화된 작업에서 사용하지 않습니다.  
이러한 요청에서는 `SecretVersionId` 키 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html#asm-encryption-context) 값이 `RequestToValidateKeyAccess`이므로 이와 같은 검증 호출을 식별할 수 있습니다.  
예전에는 Secrets Manager 검증 호출에 암호화 컨텍스트가 포함되지 않았습니다. 이전 AWS CloudTrail 로그에서 암호화 컨텍스트가 없는 호출을 찾을 수 있습니다.

## AWS 관리형 키 (`aws/secretsmanager`)의 키 정책
<a name="security-encryption-policies"></a>

Secrets Manager(`aws/secretsmanager`) AWS 관리형 키 용에 대한 키 정책은 Secrets Manager가 사용자를 대신하여 요청할 때만 지정된 작업에 KMS 키를 사용할 수 있는 권한을 사용자에게 부여합니다. 키 정책에서는 사용자가 KMS 키를 직접 사용하도록 허용하지 않습니다.

이 키 정책은 모든 [AWS 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)의 정책처럼 서비스에 의해 설정됩니다. 키 정책은 변경할 수 없지만 언제든지 볼 수 있습니다. 자세한 내용은 [키 정책 보기](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html)를 참조하세요.

키 정책의 정책 설명문은 다음 효과를 갖습니다.
+ 계정 내 사용자가 Secrets Manager를 통해 대신 요청할 때만 암호화 작업에 대해 KMS 키를 사용할 수 있도록 합니다. `kms:ViaService` 조건 키는 이 제한을 강제 적용합니다.
+  AWS 계정이 KMS 키 속성을 보고 권한 부여를 취소할 수 있도록 허용하는 IAM 정책을 생성하도록 허용합니다.
+ Secrets Manager는 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 사용하여 KMS 키에 대한 액세스 권한을 얻지는 않지만 정책은 Secrets Manager로 하여금 사용자를 대신하여 KMS 키에 대한 권한 부여를 생성하도록 하고 계정으로 하여금 Secrets Manager가 KMS 키를 사용하도록 허용하는 [모든 권한 부여를 취소](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)하도록 합니다. 다음은에 대한 정책 문서의 표준 요소입니다 AWS 관리형 키.

다음은 AWS 관리형 키 Secrets Manager 예제의 키 정책입니다.

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

****  

```
{
  "Id": "auto-secretsmanager-2",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:CreateGrant",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "111122223333",
          "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": "kms:GenerateDataKey*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "111122223333"
        },
        "StringLike": {
          "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Allow direct access to key metadata to the account",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:root"
        ]
      },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Secrets Manager 보안 암호 컨텍스트
<a name="security-encryption-encryption-context"></a>

[암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하면 암호화 컨텍스트가 암호화된 데이터에 AWS KMS 암호화 방식으로 바인딩됩니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

에 대한 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 및 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 요청에서 AWS KMS Secrets Manager는 다음 예제와 같이 보안 암호와 해당 버전을 식별하는 두 개의 이름-값 페어가 있는 암호화 컨텍스트를 사용합니다. 이름은 달라지지 않지만, 결합된 암호화 컨텍스트 값은 각 암호 값마다 다릅니다.

```
"encryptionContext": {
    "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
    "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
}
```

암호화 컨텍스트를 사용하여 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 및 Amazon CloudWatch Logs 같은 감사 레코드 및 로그에서 정책 및 권한 부여의 승인 조건으로서 이러한 암호화 작업을 식별할 수 있습니다.

Secrets Manager 암호화 컨텍스트는 이름-값 페어 두 개로 구성됩니다.
+ **SecretARN** - 첫 번째 이름-값 페어는 보안 암호를 식별합니다. 키는 `SecretARN`입니다. 이 값은 암호의 Amazon 리소스 이름(ARN)입니다.

  ```
  "SecretARN": "ARN of an Secrets Manager secret"
  ```

  예를 들어, 보안 암호 ARN이 `arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3`이면 암호화 컨텍스트는 다음 페어를 포함합니다.

  ```
  "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3"
  ```
+ **SecretVersionId** - 두 번째 이름-값 페어는 보안 암호의 버전을 식별합니다. 키는 `SecretVersionId`입니다. 이 값은 버전 ID입니다.

  ```
  "SecretVersionId": "<version-id>"
  ```

  예를 들어, 보안 암호의 버전 ID가 `EXAMPLE1-90ab-cdef-fedc-ba987SECRET1`이면 암호화 컨텍스트에는 다음 페어가 포함됩니다.

  ```
  "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
  ```

보안 암호에 대한 KMS 키를 설정하거나 변경하면 Secrets Manager는 호출자가 이러한 작업에 KMS 키를 사용할 권한이 있는지 확인하기 AWS KMS 위해 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 및 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 요청을에 보냅니다. 응답을 무시하므로 암호 값에 응답을 사용하지 않습니다.

이러한 검증 요청에서 `SecretARN`의 값은 암호의 실제 ARN이지만, `SecretVersionId` 값은 다음 예시 암호화 컨텍스트에서 나와 있는 것처럼 `RequestToValidateKeyAccess`입니다. 이 특수 값은 로그 및 감사 내역에서 검증 요청을 식별하는 데 도움이 됩니다.

```
"encryptionContext": {
    "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
    "SecretVersionId": "RequestToValidateKeyAccess"
}
```

**참고**  
예전에는 Secrets Manager 검증 호출에 암호화 컨텍스트가 포함되지 않았습니다. 이전 AWS CloudTrail 로그에서 암호화 컨텍스트가 없는 호출을 찾을 수 있습니다.

## 와의 Secrets Manager 상호 작용 모니터링 AWS KMS
<a name="security-encryption-logs"></a>

 AWS CloudTrail 및 Amazon CloudWatch Logs를 사용하여 Secrets Manager가 사용자를 대신하여에 보내는 요청을 추적할 수 AWS KMS 있습니다. 보안 암호 사용 모니터링에 대한 자세한 내용은 [AWS Secrets Manager 보안 암호 모니터링](monitoring.md) 섹션을 참조하세요.

**GenerateDataKey**  
보안 암호에서 보안 암호 값을 생성하거나 변경하면 Secrets Manager는 보안 암호에 대한 KMS 키를 AWS KMS 지정하는 *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)* 요청을에 보냅니다.  
`GenerateDataKey` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 이 요청은 `secretsmanager.amazonaws.com`에 의해 호출됩니다. 파라미터로는 보안 암호용 KMS 키의 Amazon 리소스 이름(ARN), 256비트 키를 요구하는 키 지정자, 그리고 보안 암호와 버전을 식별하는 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)가 있습니다.  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-05-31T23:23:41Z"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2018-05-31T23:23:41Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "keySpec": "AES_256",
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
            "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
        }
    },
    "responseElements": null,
    "requestID": "a7d4dd6f-6529-11e8-9881-67744a270888",
    "eventID": "af7476b6-62d7-42c2-bc02-5ce86c21ed36",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

**Decrypt**  
보안 암호의 보안 암호 값을 가져오거나 변경하면 Secrets Manager는 AWS KMS 에 [복호](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)화 요청을 보내 암호화된 데이터 키를 복호화합니다. 배치 명령의 경우 Secrets Manager는 해독된 키를 재사용할 수 있으므로 일부 호출에서만 `Decrypt` 요청이 발생합니다.  
`Decrypt` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 테이블에 액세스하는 AWS 계정의 보안 주체입니다. 파라미터에는 암호화된 테이블 키(암호 텍스트 BLOB)와 테이블과 AWS 계정을 식별하는 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)가 포함됩니다.는 사이퍼텍스트에서 KMS 키의 ID를 AWS KMS 도출합니다.  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-05-31T23:36:09Z"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2018-05-31T23:36:09Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
            "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
        }
    },
    "responseElements": null,
    "requestID": "658c6a08-652b-11e8-a6d4-ffee2046048a",
    "eventID": "f333ec5c-7fc1-46b1-b985-cbda13719611",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

**암호화**  
보안 암호와 연결된 KMS 키를 변경하면 Secrets Manager는에 [암호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 요청을 보내 새 키로 `AWSCURRENT`, `AWSPREVIOUS`및 `AWSPENDING` 보안 암호 버전을 AWS KMS 다시 암호화합니다. 보안 암호를 다른 리전에 복제하는 경우에도 Secrets Manager가 AWS KMS로 [암호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 요청을 보냅니다.  
`Encrypt` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 테이블에 액세스하는 AWS 계정의 보안 주체입니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "creationDate": "2023-06-09T18:11:34Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2023-06-09T18:11:34Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Encrypt",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:ChangeKeyTest-5yKnKS",
            "SecretVersionId": "EXAMPLE1-5c55-4d7c-9277-1b79a5e8bc50"
        }
    },
    "responseElements": null,
    "requestID": "129bd54c-1975-4c00-9b03-f79f90e61d60",
    "eventID": "f7d9ff39-15ab-47d8-b94c-56586de4ab68",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```