암호화 키 회전
이 페이지의 내용
대부분의 규제 요건에서는 민감한 데이터의 암호를 해독하는 데 사용되는 관리 키를 1년에 한 번씩 로테이션하고 새 키로 교체해야 합니다.
MongoDB는 키 로테이션을 위한 두 가지 옵션을 제공합니다. 새 키를 사용하는 새 인스턴스로 바이너리를 로테이션할 수 있습니다. 또는 키 관리를 위해 KMIP 서버를 사용하는 경우 마스터 키를 로테이션할 수 있습니다.
복제본 세트 멤버 로테이션
참고
쓰기 쿼럼 변경을 방지하려면 한 번에 두 개 이상의 복제본 세트 멤버를 교체하지 마세요.
복제본 세트의 경우 멤버를 로테이션하려면 다음과 같이 하세요:
새 키를 사용하도록 구성된 새
mongod
인스턴스를 시작합니다. 복제본 세트의 이름과 함께--replSet
옵션을 포함하고,--dbpath
및--bind_ip
와 같이 구성에 특정한 다른 옵션을 포함합니다.mongod --replSet myReplSet --enableEncryption \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem mongosh
를 복제본 세트의 프라이머리 에 연결합니다.인스턴스를 복제본 세트에 추가합니다:
rs.add( { host: <host:port> } ) 경고
MongoDB 5.0 이전에는 데이터가 일관될 때까지 새로 추가된 보조 서버가 읽기 작업을 수행하거나 기본 서버가 될 수 없더라도 여전히 투표 멤버로 간주됩니다. 5.0 이전 버전의 MongoDB를 실행 중이고
votes
및priority
설정이 0보다 큰 보조를 추가하는 경우, 투표 회원의 과반수가 온라인 상태이지만 기본 회원을 선출할 수 없는 경우가 발생할 수 있습니다. 이러한 상황을 방지하려면priority :0
및votes :0
로 새 보조를 처음에 추가하는 것이 좋습니다. 그런 다음rs.status()
를 실행하여 멤버가SECONDARY
상태로 전환되었는지 확인합니다. 마지막으로rs.reconfig()
를 사용하여 우선 순위와 투표를 업데이트하세요.초기 동기화 프로세스 중에 완전히 새로운 데이터베이스 키 세트와 새 시스템 키를 사용하여 데이터를 다시 암호화합니다.
복제본 세트 에서 이전 노드 를 제거하고 모든 데이터를 삭제 합니다. 자세한 내용 은 자체 관리형 복제본 세트에서 구성원 제거를 참조하세요.
KMIP 마스터키 순환
키 관리를 위해 KMIP 서버를 사용하는 경우 유일한 외부 관리 키인 마스터 키를 로테이션할 수 있습니다. 새 마스터 키를 사용하면 내부 키 저장소가 다시 암호화되지만 데이터베이스 키는 변경되지 않습니다. 이렇게 하면 전체 데이터 세트를 다시 암호화할 필요가 없습니다.
복제본 세트의 세컨더리 멤버에 대한 마스터 키를 한 번에 하나씩 로테이션합니다.
--kmipRotateMasterKey
옵션을 포함하여 세컨더리를 다시 시작합니다. 구성과 관련된 기타 옵션(예:--bind_ip
)을 포함하세요. 멤버에--kmipKeyIdentifier
옵션이 이미 포함되어 있는 경우--kmipKeyIdentifier
옵션을 새 키로 업데이트하여 사용하거나 생략하여 KMIP 서버에 새 키를 요청합니다:mongod --enableEncryption --kmipRotateMasterKey \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 구성 파일을 사용하는 경우
security.kmip.rotateMasterKey
를 포함합니다.마스터 키 로테이션과 데이터베이스 키 저장소의 재암호화가 성공적으로 완료되면
mongod
가 종료됩니다.--kmipRotateMasterKey
매개 변수 없이 보조 서버를 다시 시작합니다. 구성과 관련된 다른 옵션(예:--bind_ip
)을 포함합니다.mongod --enableEncryption --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 구성 파일을 사용하는 경우
security.kmip.rotateMasterKey
설정을 제거합니다.
복제본 세트 기본값을 내려놓습니다.
프라이머리에
mongosh
를 연결하고rs.stepDown()
을 사용하여 기존 프라이머리를 우선 순위에서 내려오게 하고 강제로 새 프라이머리에 대한 투표를 진행합니다.rs.stepDown() rs.status()
가 프라이머리가 물러나고 다른 멤버가PRIMARY
상태를 취했음을 표시하면 물러난 멤버에 대한 마스터 키를 로테이션합니다.--kmipRotateMasterKey
옵션을 포함하여 물러난 멤버를 다시 시작합니다. 구성과 관련된 다른 옵션(예:--bind_ip
)을 포함합니다. 멤버에--kmipKeyIdentifier
옵션이 이미 포함되어 있는 경우--kmipKeyIdentifier
옵션을 새 키로 업데이트하여 사용하거나 생략합니다.mongod --enableEncryption --kmipRotateMasterKey \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 구성 파일을 사용하는 경우
security.kmip.rotateMasterKey
를 포함합니다.마스터 키 로테이션과 데이터베이스 키 저장소의 재암호화가 성공적으로 완료되면
mongod
가 종료됩니다.--kmipRotateMasterKey
옵션 없이 물러난 멤버를 다시 시작합니다. 구성과 관련된 다른 옵션(예:--bind_ip
)을 포함합니다.mongod --enableEncryption --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 구성 파일을 사용하는 경우
security.kmip.rotateMasterKey
설정을 제거합니다.