

이 가이드는 2025년 3월 13일에 릴리스된 새로운 AWS Wickr 관리 콘솔을 문서화합니다. AWS Wickr 관리 콘솔의 클래식 버전에 대한 설명서는 [Classic 관리 안내서](https://docs.aws.amazon.com/wickr/latest/adminguide-classic/what-is-wickr.html)를 참조하세요.

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

# 데이터 보존 서비스를 위한 사용자 지정 KMS 키 설정
<a name="custom-kms-key"></a>

데이터 보존 서비스와 함께 자체 KMS 키를 사용하려면 제품을 시작하기 전에 다음 구성으로 키를 생성합니다.

보존 키  
+ 키 유형: 대칭(`SYMMETRIC_DEFAULT`)
+ 키 사용: 암호화 및 복호화
+ 키 교체: 활성화 권장

암호 복구 키  
+ 키 유형: 비대칭(`ECC_NIST_P384`)
+ 키 사용: 키 계약
+ 키 교체: 비대칭 키에는 지원되지 않음

## 사용자 지정 KMS 키 정책 설정
<a name="custom-kms-key-policy-setup"></a>

1. 위의 필수 구성으로 KMS 키를 생성합니다.

1. KMS 콘솔에서 각 키의 **키 ID**를 복사합니다.

1. Service Catalog에서 데이터 보존 제품을 시작하고 `KmsKeyId` 및 `PasswordRecoveryKeyId` 필드에 키 IDs 입력합니다.

1. 스택이 완료되면 **출력** 탭으로 이동합니다.

1. `DRSCustomerCrossAccountRoleArn` 및의 값을 복사합니다`DecryptionLambdaRoleArn`.

1. KMS 콘솔을 열고 사용자 지정 보존 키를 선택합니다.

1. **키 정책(Key policy)** 섹션에서 **정책 보기로 전환(Switch to policy view)**을 선택합니다.

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

1. 다음 문을 키 정책의 `"Statement"` 배열에 추가하여 자리 표시자 ARNs을 5단계의 값으로 바꿉니다.

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

1. 아래 암호 복구 문을 사용하여 암호 복구 키에 대해 6\~10단계를 반복합니다.

### 보존 키 - 추가할 문
<a name="custom-kms-key-retention-statements"></a>

```
{
  "Sid": "EnclaveGenerateDataKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "{DRSCustomerCrossAccountRoleArn}"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:RecipientAttestation:PCR0": "*",
      "kms:RecipientAttestation:PCR1": "*",
      "kms:RecipientAttestation:PCR2": "*"
    },
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": [
        "aws:wickr:network:id",
        "aws:wickr:app:id"
      ]
    }
  }
},
{
  "Sid": "EnclaveDescribeKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "{DRSCustomerCrossAccountRoleArn}"
  },
  "Action": "kms:DescribeKey",
  "Resource": "*"
},
{
  "Sid": "EnclaveDecryptWithAttestation",
  "Effect": "Allow",
  "Principal": {
    "AWS": "{DRSCustomerCrossAccountRoleArn}"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:RecipientAttestation:PCR0": "*",
      "kms:RecipientAttestation:PCR1": "*",
      "kms:RecipientAttestation:PCR2": "*"
    },
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "aws:wickr:app:id"
    }
  }
},
{
  "Sid": "DecryptLambdaDecrypt",
  "Effect": "Allow",
  "Principal": {
    "AWS": "{DecryptionLambdaRoleArn}"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "aws:wickr:network:id"
    }
  }
}
```

각 문의 목적은의 **고객 관리형 KMS 키를 사용하도록 권한 구성** [저장 시 암호화](encryption-rest.md) 섹션에서 확인할 수 있습니다.

### 암호 복구 키 - 추가할 문
<a name="custom-kms-key-password-recovery-statements"></a>

```
{
  "Sid": "EnclaveDeriveSharedSecret",
  "Effect": "Allow",
  "Principal": {
    "AWS": "{DRSCustomerCrossAccountRoleArn}"
  },
  "Action": "kms:DeriveSharedSecret",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:RecipientAttestation:PCR0": "*",
      "kms:RecipientAttestation:PCR1": "*",
      "kms:RecipientAttestation:PCR2": "*"
    }
  }
},
{
  "Sid": "CustomerGetPublicKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "{DRSCustomerCrossAccountRoleArn}"
  },
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey"
  ],
  "Resource": "*"
}
```

각 문의 용도:

**EnclaveDeriveSharedSecret**
+ kms:DeriveSharedSecret - Nitro Enclave에서 암호 복구 키의 프라이빗 키를 사용하여 ECDH 키 계약을 수행하도록 호출합니다. 이렇게 하면 마이그레이션 워크플로 중에 암호를 해독하는 데 사용되는 공유 보안 암호가 파생됩니다. 엔클레이브가 유효한 Nitro Enclave 증명 문서(PCR0/1/2 조건)를 제공하는 경우에만 허용되며, 엔클레이브 외부에서 키 계약이 발생하지 않도록 합니다.

**CustomerGetPublicKey**
+ kms:GetPublicKey - 암호 복구 키의 ECC P-384 퍼블릭 키를 검색할 수 있습니다. 이는 고객의 시스템에서 실행되는 암호 컬렉션 스크립트에서 암호의 로컬 ECDH 암호화를 수행하는 데 사용됩니다.
+ kms:DescribeKey - 검증을 위해 키 메타데이터(키 사양, 사용량, 상태)를 검색할 수 있습니다.

### 예 - 보존 키
<a name="custom-kms-key-example"></a>

이전:

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "YourExistingStatements",
      "Effect": "...",
      "...": "..."
    }
  ]
}
```

이후:

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "YourExistingStatements",
      "Effect": "...",
      "...": "..."
     },
    {
      "Sid": "EnclaveGenerateDataKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:RecipientAttestation:PCR0": "*",
          "kms:RecipientAttestation:PCR1": "*",
          "kms:RecipientAttestation:PCR2": "*"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": [
            "aws:wickr:network:id",
            "aws:wickr:app:id"
          ]
        }
      }
    },
    {
      "Sid": "EnclaveDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*"
    },
    {
      "Sid": "EnclaveDecryptWithAttestation",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}"
      },
      "Action": "kms:Decrypt",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:RecipientAttestation:PCR0": "*",
          "kms:RecipientAttestation:PCR1": "*",
          "kms:RecipientAttestation:PCR2": "*"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:wickr:app:id"
        }
      }
    },
    {
      "Sid": "DecryptLambdaDecrypt",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{account-id}:role/{DecryptionLambdaRoleName}"
      },
      "Action": "kms:Decrypt",
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:wickr:network:id"
        }
      }
    }
  ]
}
```