View a markdown version of this page

데이터 보존 서비스를 위한 사용자 지정 KMS 키 설정 - AWS Wickr

이 가이드는 2025년 3월 13일에 릴리스된 새로운 AWS Wickr 관리 콘솔을 문서화합니다. AWS Wickr 관리 콘솔의 클래식 버전에 대한 설명서는 Classic 관리 안내서를 참조하세요.

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

데이터 보존 서비스를 위한 사용자 지정 KMS 키 설정

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

보존 키
  • 키 유형: 대칭(SYMMETRIC_DEFAULT)

  • 키 사용: 암호화 및 복호화

  • 키 교체: 활성화 권장

암호 복구 키
  • 키 유형: 비대칭(ECC_NIST_P384)

  • 키 사용: 키 계약

  • 키 교체: 비대칭 키에는 지원되지 않음

사용자 지정 KMS 키 정책 설정

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

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

  3. Service Catalog에서 데이터 보존 제품을 시작하고 KmsKeyIdPasswordRecoveryKeyId 필드에 키 IDs 입력합니다.

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

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

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

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

  8. 편집을 선택합니다.

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

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

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

보존 키 - 추가할 문

{ "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 키를 사용하도록 권한 구성 저장 시 암호화 섹션에서 확인할 수 있습니다.

암호 복구 키 - 추가할 문

{ "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 - 검증을 위해 키 메타데이터(키 사양, 사용량, 상태)를 검색할 수 있습니다.

예 - 보존 키

이전:

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