암호화 키 회전 및 다시 래핑
이 가이드에서는 애플리케이션에서 키 관리 시스템(KMS)을 사용하여 암호화 키를 managed 방법을 배울 수 있습니다.
개요
이 절차에서는 mongosh
를 사용하여 Queryable Encryption 에 대한 암호화 키를 순환하는 방법을 보여줍니다. DEK 순환은 새 고객 마스터 키 다시 래핑하는 것으로 구성되므로 '회전'과 '재래핑'이라는 용어는 때때로 같은 의미로 사용됩니다.
이 가이드를 완료한 후에는 키 관리 시스템에서 고객 마스터 키(고객 마스터 키)를 로테이션할 수 있으며, 키 볼트 컬렉션의 기존 DEK를 새 고객 마스터 키 로 다시 래핑할 수 있습니다.
경고
키를 순환할 때 키나 데이터를 암호화하는 데 사용되지 않은지 확인한 후 삭제합니다. DEK 를 삭제하면 해당 DEK 로 암호화된 모든 필드를 영구적으로 읽을 수 없게 됩니다. CMK 를 삭제하면 해당 CMK 를 사용하여 DEK 로 암호화된 모든 필드를 영구적으로 읽을 수 없게 됩니다.
관련 정보
이 절차에 포함된 개념에 대한 자세한 설명은 아래 항목을 참조하세요.
키 및 Key Vault에 대해 자세히 알아보려면 Keys and Key Vaults 를 참조하세요. 지원되는 KMS 제공자 목록을 보려면 KMS 제공자 페이지를 참조하세요.
지원되는 각 KMS 제공자에서 Queryable Encryption 지원 애플리케이션을 설정하는 방법을 자세히 설명하는 튜토리얼은 다음 페이지를 참조하세요.
절차
키 관리 시스템에서 고객 마스터 키 로테이션
고객 마스터 키 로테이션 프로세스는 KMS 제공자에 따라 다릅니다. 자세한 내용은 키 제공자의 설명서를 참조하세요.
Amazon Web Services: Amazon Web Services KMS 키 순환
GCP: 키 순환
CMK 를 순환시키면 MongoDB는 이를 사용하여 모든 새 DEK를 래핑합니다. 기존 DEK를 다시 래핑하려면 다음 단계를 계속 진행합니다.
다음을 사용하여 데이터 암호화 키를 순환하세요. KeyVault.rewrapManyDataKey()
KeyVault.rewrapManyDataKey()
메서드는 여러 데이터 암호화 키를 자동으로 해독하고 지정된 CMK 를 사용하여 다시 암호화합니다. 그런 다음 키 볼트 컬렉션의 키를 업데이트합니다.
이 메서드에는 다음과 같은 구문이 있습니다.
let keyVault = db.getMongo().getKeyVault() keyVault.rewrapManyDataKey( { "<Query filter document>" }, { provider: "<KMS provider>", masterKey: { "<dataKeyOpts Key>" : "<dataKeyOpts Value>" } } )
쿼리 필터 문서를 지정하여 회전할 키를 선택하거나 인수를 생략하여 키 볼트 컬렉션의 모든 키를 회전합니다.
쿼리 필터 문서 를 지정했지만 일치하는 키가 없으면 키가 순환되지 않습니다.
KMS 제공자 지정
새 CMK 를 사용하여
masterKey
를 지정하거나 기존 CMK를 사용하여 키를 회전하려면 인수를 생략합니다.
새 고객 마스터 키 로 다시 래핑한 후에도 DEK 자체는 변경되지 않습니다. 키 로테이션 프로세스는 원활하게 진행되며 애플리케이션을 중단하지 않습니다.