데이터 암호화 키 관리
버전 4.2에 추가되었습니다.
클라이언트 사이드 필드 수준 암호화 는 암호화 및 암호 해독에 데이터 암호화 키를 사용합니다. mongosh
헬퍼 메서드 getKeyVault()
는 데이터 암호화 키를 생성, 수정 및 삭제하기 위한 Key Vault 객체 를 반환합니다.
이 페이지에서는 mongosh
을 사용한 클라이언트 사이드 필드 레벨 암호화 에 대해 설명하며, 공식 MongoDB 4.2+ 호환 운전자 에 대해서는 언급하지 않습니다 . 드라이버별 데이터 암호화 키 관리 방법 및 구문은 관련 설명서 를 참조하세요.
데이터 암호화 키 생성
다음 절차에서는 mongosh
를 사용하여 클라이언트 사이드 필드 수준 암호화 및 암호 해독에 사용할 데이터 암호화 키를 만듭니다. 4.2+ 호환 드라이버를 사용한 데이터 암호화 키 관리에 대한 지침은 드라이버 설명서 를 대신 참조하세요.
아래 탭을 사용하여 배포에 적합한 KMS 를 선택합니다.
을(를) 실행합니다.mongosh
AWS KMS에 대한 클라이언트 사이드 필드 레벨 암호화를 구성하려면 AWS 액세스 키 ID와 관련 시크릿 액세스 키가 필요합니다. AWS 액세스 키는 KMS 서비스에 대한 모든 목록 및 읽기 권한이 있는 IAM 사용자와 일치해야 합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID' var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 mongosh
의 AWS_ACCESS_KEY_ID
및 AWS_SECRET_ACCESS_KEY
변수를 해당 환경 변수의 값으로 설정합니다. 지정된 변수는 에서도 Amazon Web Services CLI 지원됩니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키를 생성합니다.
keyVault
객체에서 KeyVault.createKey()
메서드를 사용하여 키 볼트에 새 데이터 암호화 키를 생성합니다.
keyVault.createKey( "aws", "arn:aws:kms:region:account:key/keystring", [ "keyAlternateName" ] )
구제척으로:
구성된 Amazon Web Services KMS를 지정하려면 첫 번째 파라미터가 반드시
"aws"
이어야 합니다.두 번째 매개변수는 전체 Amazon 리소스 이름(ARN) 이어야 합니다. 고객 마스터 키(CMK). MongoDB는 지정된 CMK를 사용하여 데이터 암호화 키를 암호화합니다.
세 번째 매개변수는 데이터 암호화 키 에 대한 하나 이상의
keyAltNames
배열 일 수 있습니다. 각 키 대체 이름은 고유 해야 합니다.getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 필드 가 아직 없는 경우 고유성을 시행하다 합니다. 키 대체 이름을 사용하면 데이터 암호화 키 를 쉽게 찾을 수 있습니다.
성공적인 하면 createKey()
는 새 데이터 암호화 키 의 UUID 를 반환합니다. UUID
는 데이터 암호화 키 를 고유하게 식별하는 하위 유형 4
를 가진 BSON Binary (BinData)
객체 입니다. UUID
string 은 기본 바이너리 데이터를 16진수로 표현한 것입니다.
자동 MongoDB 클라이언트 사이드 필드 수준 암호화 를 구성하기 위해 공식 드라이버에 데이터 암호화 키를 제공하는 base64
경우 의 표현을 사용해야 UUID
string 합니다.
mongosh
에서 다음 작업을 실행하여 UUID
16진수 string 을 base64
표현으로 변환할 수 있습니다.
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
자체 데이터 암호화 키 의 UUID
를 위의 createKey()
에서 반환되거나 기존 데이터 암호화 키 에 설명된 대로 이 명령에 제공합니다.
을(를) 실행합니다.mongosh
Azure Key Vault에 대한 클라이언트 사이드 필드 수준 암호화를 구성하려면 유효한 테넌트 ID, 클라이언트 ID 및 클라이언트 비밀이 필요합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var AZURE_TENANT_ID = '$AZURE_TENANT_ID' var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID' var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 { mongosh
} 의 AZURE_TENANT_ID
, AZURE_CLIENT_ID
및 AZURE_CLIENT_SECRET
변수를 해당 환경 변수의 값으로 설정합니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키를 생성합니다.
keyVault
객체에서 KeyVault.createKey()
메서드를 사용하여 키 볼트에 새 데이터 암호화 키를 생성합니다.
keyVault.createKey( "azure", { keyName: "keyvaultname", keyVaultEndpoint: "endpointname" }, [ "keyAlternateName" ] )
구제척으로:
구성된 Azure Key Vault 를 지정하려면 첫 번째 매개변수가
"azure"
이어야 합니다 .두 번째 매개변수는 다음을 포함하는 문서 여야 합니다 .
사용할 Azure Key Vault의 DNS 이름(예:
my-key-vault.vault.azure.net
)
세 번째 매개변수는 데이터 암호화 키 에 대한 하나 이상의
keyAltNames
배열 일 수 있습니다. 각 키 대체 이름은 고유 해야 합니다.getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 필드 가 아직 없는 경우 고유성을 시행하다 합니다. 키 대체 이름을 사용하면 데이터 암호화 키 를 쉽게 찾을 수 있습니다.
성공적인 하면 createKey()
는 새 데이터 암호화 키 의 UUID 를 반환합니다. UUID
는 데이터 암호화 키 를 고유하게 식별하는 하위 유형 4
를 가진 BSON Binary (BinData)
객체 입니다. UUID
string 은 기본 바이너리 데이터를 16진수로 표현한 것입니다.
자동 MongoDB 클라이언트 사이드 필드 수준 암호화 를 구성하기 위해 공식 드라이버에 데이터 암호화 키를 제공하는 base64
경우 의 표현을 사용해야 UUID
string 합니다.
mongosh
에서 다음 작업을 실행하여 UUID
16진수 string 을 base64
표현으로 변환할 수 있습니다.
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
자체 데이터 암호화 키 의 UUID
를 위의 createKey()
에서 반환되거나 기존 데이터 암호화 키 에 설명된 대로 이 명령에 제공합니다.
을(를) 실행합니다.mongosh
GCP KMS 에 대한 클라이언트 사이드 필드 수준 암호화 를 구성하려면 GCP 이메일 및 관련 비공개 키가 필요합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
GCP_EMAIL
GCP_PRIVATEKEY
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var GCP_EMAIL = '$GCP_EMAIL' var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 mongosh
의 GCP_EMAIL
및 GCP_PRIVATEKEY
변수를 해당 환경 변수의 값으로 설정합니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키를 생성합니다.
keyVault
객체에서 KeyVault.createKey()
메서드를 사용하여 키 볼트에 새 데이터 암호화 키를 생성합니다.
keyVault.createKey( "gcp", { projectId: "projectid", location: "locationname", keyRing: "keyringname", keyName: "keyname" }, [ "keyAlternateName" ] )
구제척으로:
"gcp"
구성된 Google Cloud Platform KMS 를 지정하려면 첫 번째 매개변수가 이어야 합니다 .두 번째 매개변수는 반드시 다음을 포함하는 문서여야 합니다.
projectid
다음과 같은 GCP 프로젝트 의 이름입니다.my-project
locationname
다음과 같은 KMS 키링의 위치 입니다.global
keyringname
다음과 같은 KMS 키링의 이름입니다.my-keyring
keyname
키의 이름입니다.
세 번째 매개변수는 데이터 암호화 키 에 대한 하나 이상의
keyAltNames
배열 일 수 있습니다. 각 키 대체 이름은 고유 해야 합니다.getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 필드 가 아직 없는 경우 고유성을 시행하다 합니다. 키 대체 이름을 사용하면 데이터 암호화 키 를 쉽게 찾을 수 있습니다.
성공적인 하면 createKey()
는 새 데이터 암호화 키 의 UUID 를 반환합니다. UUID
는 데이터 암호화 키 를 고유하게 식별하는 하위 유형 4
를 가진 BSON Binary (BinData)
객체 입니다. UUID
string 은 기본 바이너리 데이터를 16진수로 표현한 것입니다.
자동 MongoDB 클라이언트 사이드 필드 수준 암호화 를 구성하기 위해 공식 드라이버에 데이터 암호화 키를 제공하는 base64
경우 의 표현을 사용해야 UUID
string 합니다.
mongosh
에서 다음 작업을 실행하여 UUID
16진수 string 을 base64
표현으로 변환할 수 있습니다.
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
자체 데이터 암호화 키 의 UUID
를 위의 createKey()
에서 반환되거나 기존 데이터 암호화 키 에 설명된 대로 이 명령에 제공합니다.
암호화 키를 생성합니다.
로컬로 관리되는 키에 대해 클라이언트 사이드 필드 수준 암호화 를 구성하려면 줄 바꿈 없이 기본64인코딩된 96바이트 string 을 지정해야 합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
다음 작업은 명시된 요구 사항을 충족하는 키를 생성하고 사용자의 ~/.profile
에 추가합니다. DEV_LOCAL_KEY
키가 이미 존재하는 경우 이 작업을 건너뜁니다.
echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile
로드된 환경 변수를 새로 고치려면 호스팅하다 운영 체제에서 로그아웃했다가 다시 로그인해야 할 수 있습니다. 또는 source ~/.profile
명령을 사용하여 shell 을 수동으로 새로 고칠 수 있습니다.
참고
특정 호스팅하다 운영 체제 또는 shell 에는 영구 환경 변수를 설정하는 절차가 다를 수 있습니다. 더 구체적인 절차는 호스팅하다 OS 또는 shell 의 설명서를 참조하세요.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키를 생성합니다.
keyVault
객체에서 KeyVault.createKey()
메서드를 사용하여 키 볼트에 새 데이터 암호화 키를 생성합니다.
keyVault.createKey( "local", [ "keyAlternateName" ] )
구제척으로:
구성된 로컬 관리형 키를 지정하려면 첫 번째 매개변수가 반드시
local
여야 합니다.두 번째 매개변수는 데이터 암호화 키 에 대한 하나 이상의
keyAltNames
배열 일 수 있습니다. 각 키 대체 이름은 고유 해야 합니다.getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 필드 가 아직 존재하지 않는 경우 고유성을 시행하다 합니다. 키 대체 이름을 사용하면 데이터 암호화 키 를 쉽게 찾을 수 있습니다.
성공적인 하면 createKey()
는 새 데이터 암호화 키 의 UUID 를 반환합니다. UUID
는 데이터 암호화 키 를 고유하게 식별하는 하위 유형 4
를 가진 BSON Binary (BinData)
객체 입니다. UUID
string 은 기본 바이너리 데이터를 16진수로 표현한 것입니다.
자동 MongoDB 클라이언트 사이드 필드 수준 암호화 를 구성하기 위해 공식 드라이버에 데이터 암호화 키를 제공하는 base64
경우 의 표현을 사용해야 UUID
string 합니다.
mongosh
에서 다음 작업을 실행하여 UUID
16진수 string 을 base64
표현으로 변환할 수 있습니다.
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
자체 데이터 암호화 키 의 UUID
를 위의 createKey()
에서 반환되거나 기존 데이터 암호화 키 에 설명된 대로 이 명령에 제공합니다.
데이터 암호화 키의 대체 이름 관리
다음 절차에서는 mongosh
를 사용하여 데이터 암호화 키의 대체 이름을 관리합니다. 4.2+ 호환 드라이버를 사용한 데이터 암호화 키 관리에 대한 지침은 드라이버 설명서 를 대신 참조하세요.
아직 위 의 데이터 암호화 키 생성 단계에서 구성된 mongosh
세션 내에 있는 경우 단계로 바로 건너뛸 5 수 있습니다.
아래 탭을 사용하여 배포에 적합한 KMS 를 선택하세요.
을(를) 실행합니다.mongosh
AWS KMS에 대한 클라이언트 사이드 필드 레벨 암호화를 구성하려면 AWS 액세스 키 ID와 관련 시크릿 액세스 키가 필요합니다. AWS 액세스 키는 KMS 서비스에 대한 모든 목록 및 읽기 권한이 있는 IAM 사용자와 일치해야 합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID' var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 mongosh
의 AWS_ACCESS_KEY_ID
및 AWS_SECRET_ACCESS_KEY
변수를 해당 환경 변수의 값으로 설정합니다. 지정된 변수는 에서도 Amazon Web Services CLI 지원됩니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키의 대체 이름을 관리합니다.
아래 단계에 따라 기존 키 대체 이름을 추가하거나 제거 할 수 있습니다.
- 키 대체 이름 추가
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. 새 키 대체 이름을 추가 하기 전에
keyAltNames
에 고유 인덱스 가 있는지 확인합니다. 고유 인덱스 가 삭제된 경우 키 대체 이름을 추가하기 전에 다시 생성 해야 합니다.KeyVault.addKeyAlternateName()
를 사용하여 데이터 암호화 키 에 새 대체 이름을 추가합니다.keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string고유한 이어야 합니다.
getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 키 대체 이름의 고유성을 시행하다 합니다.
KeyVault.addKeyAlternateName()
는 수정 전의 데이터 암호화 키 문서 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.- 키 대체 이름 제거
데이터 암호화 키에서 키 대체 이름을 제거하려면
KeyVault.removeKeyAlternateName()
를 사용합니다.keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string 키 대체 이름 이어야 합니다 .
KeyVault.removeKeyAlternateName()
는 수정 전의 데이터 암호화 키 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.
을(를) 실행합니다.mongosh
Azure Key Vault에 대한 클라이언트 사이드 필드 수준 암호화를 구성하려면 유효한 테넌트 ID, 클라이언트 ID 및 클라이언트 비밀이 필요합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var AZURE_TENANT_ID = '$AZURE_TENANT_ID' var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID' var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 { mongosh
} 의 AZURE_TENANT_ID
, AZURE_CLIENT_ID
및 AZURE_CLIENT_SECRET
변수를 해당 환경 변수의 값으로 설정합니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키의 대체 이름을 관리합니다.
아래 단계에 따라 기존 키 대체 이름을 추가하거나 제거 할 수 있습니다.
- 키 대체 이름 추가
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. 새 키 대체 이름을 추가 하기 전에
keyAltNames
에 고유 인덱스 가 있는지 확인합니다. 고유 인덱스 가 삭제된 경우 키 대체 이름을 추가하기 전에 다시 생성 해야 합니다.KeyVault.addKeyAlternateName()
를 사용하여 데이터 암호화 키 에 새 대체 이름을 추가합니다.keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string고유한 이어야 합니다.
getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 키 대체 이름의 고유성을 시행하다 합니다.
KeyVault.addKeyAlternateName()
는 수정 전의 데이터 암호화 키 문서 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.- 키 대체 이름 제거
데이터 암호화 키에서 키 대체 이름을 제거하려면
KeyVault.removeKeyAlternateName()
를 사용합니다.keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string 키 대체 이름 이어야 합니다 .
KeyVault.removeKeyAlternateName()
는 수정 전의 데이터 암호화 키 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.
을(를) 실행합니다.mongosh
GCP KMS 에 대한 클라이언트 사이드 필드 수준 암호화 를 구성하려면 GCP 이메일 및 관련 비공개 키가 필요합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
GCP_EMAIL
GCP_PRIVATEKEY
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var GCP_EMAIL = '$GCP_EMAIL' var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 mongosh
의 GCP_EMAIL
및 GCP_PRIVATEKEY
변수를 해당 환경 변수의 값으로 설정합니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키의 대체 이름을 관리합니다.
아래 단계에 따라 기존 키 대체 이름을 추가하거나 제거 할 수 있습니다.
- 키 대체 이름 추가
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. 새 키 대체 이름을 추가 하기 전에
keyAltNames
에 고유 인덱스 가 있는지 확인합니다. 고유 인덱스 가 삭제된 경우 키 대체 이름을 추가하기 전에 다시 생성 해야 합니다.KeyVault.addKeyAlternateName()
를 사용하여 데이터 암호화 키 에 새 대체 이름을 추가합니다.keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string고유한 이어야 합니다.
getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 키 대체 이름의 고유성을 시행하다 합니다.
KeyVault.addKeyAlternateName()
는 수정 전의 데이터 암호화 키 문서 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.- 키 대체 이름 제거
데이터 암호화 키에서 키 대체 이름을 제거하려면
KeyVault.removeKeyAlternateName()
를 사용합니다.keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string 키 대체 이름 이어야 합니다 .
KeyVault.removeKeyAlternateName()
는 수정 전의 데이터 암호화 키 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.
암호화 키를 생성합니다.
로컬로 관리되는 키에 대해 클라이언트 사이드 필드 수준 암호화 를 구성하려면 줄 바꿈 없이 기본64인코딩된 96바이트 string 을 지정해야 합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
다음 작업은 명시된 요구 사항을 충족하는 키를 생성하고 사용자의 ~/.profile
에 추가합니다. DEV_LOCAL_KEY
키가 이미 존재하는 경우 이 작업을 건너뜁니다.
echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile
로드된 환경 변수를 새로 고치려면 호스팅하다 운영 체제에서 로그아웃했다가 다시 로그인해야 할 수 있습니다. 또는 source ~/.profile
명령을 사용하여 shell 을 수동으로 새로 고칠 수 있습니다.
참고
특정 호스팅하다 운영 체제 또는 shell 에는 영구 환경 변수를 설정하는 절차가 다를 수 있습니다. 더 구체적인 절차는 호스팅하다 OS 또는 shell 의 설명서를 참조하세요.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
데이터 암호화 키의 대체 이름을 관리합니다.
아래 단계에 따라 기존 키 대체 이름을 추가하거나 제거 할 수 있습니다.
- 키 대체 이름 추가
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. 새 키 대체 이름을 추가 하기 전에
keyAltNames
에 고유 인덱스 가 있는지 확인합니다. 고유 인덱스 가 삭제된 경우 키 대체 이름을 추가하기 전에 다시 생성 해야 합니다.KeyVault.addKeyAlternateName()
를 사용하여 데이터 암호화 키 에 새 대체 이름을 추가합니다.keyVault.addKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string고유한 이어야 합니다.
getKeyVault()
는keyAltNames
에 고유 인덱스 를 생성하여 키 대체 이름의 고유성을 시행하다 합니다.
KeyVault.addKeyAlternateName()
는 수정 전의 데이터 암호화 키 문서 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.- 키 대체 이름 제거
데이터 암호화 키에서 키 대체 이름을 제거하려면
KeyVault.removeKeyAlternateName()
를 사용합니다.keyVault.removeKeyAlternateName( UUID("<Replace Me With The UUID Of The Key To Modify"), "NewKeyAltNameForMyFirstCSFLEDataKey" ) 구제척으로:
첫 번째 매개변수는 수정할 데이터 암호화 키 의 UUID 여야 합니다 .
두 번째 매개변수는 string 키 대체 이름 이어야 합니다 .
KeyVault.removeKeyAlternateName()
는 수정 전의 데이터 암호화 키 를 반환합니다.KeyVault.getKey()
를 사용하여 수정된 데이터 암호화 키 를 조회 합니다.
데이터 암호화 키 제거
경고
데이터 암호화 키를 삭제하면 해당 키를 사용하여 암호화된 모든 필드를 영구적으로 읽을 수 없는 상태로 만듭니다.
다음 절차에서는 mongosh
를 사용하여 키 볼트에서 데이터 암호화 키 를 제거 합니다. 4.2+ 호환 운전자 를 사용한 데이터 암호화 키 관리 에 대한 지침 은 대신 운전자 설명서 를 참조하세요.
아직 위 의 데이터 암호화 키 생성 단계에서 구성된 mongosh
세션 내에 있는 경우 단계로 바로 건너뛸 5 수 있습니다.
아래 탭을 사용하여 배포에 적합한 KMS 를 선택하세요.
을(를) 실행합니다.mongosh
AWS KMS에 대한 클라이언트 사이드 필드 레벨 암호화를 구성하려면 AWS 액세스 키 ID와 관련 시크릿 액세스 키가 필요합니다. AWS 액세스 키는 KMS 서비스에 대한 모든 목록 및 읽기 권한이 있는 IAM 사용자와 일치해야 합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID' var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 mongosh
의 AWS_ACCESS_KEY_ID
및 AWS_SECRET_ACCESS_KEY
변수를 해당 환경 변수의 값으로 설정합니다. 지정된 변수는 에서도 Amazon Web Services CLI 지원됩니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
을(를) 사용하여 데이터 암호화 UUID
키 를 삭제합니다.
키 볼트에서 데이터 키를 삭제하려면 keyVault
객체에서 KeyVault.deleteKey()
메서드를 사용합니다.
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
을(를) 실행합니다.mongosh
Azure Key Vault에 대한 클라이언트 사이드 필드 수준 암호화를 구성하려면 유효한 테넌트 ID, 클라이언트 ID 및 클라이언트 비밀이 필요합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var AZURE_TENANT_ID = '$AZURE_TENANT_ID' var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID' var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 { mongosh
} 의 AZURE_TENANT_ID
, AZURE_CLIENT_ID
및 AZURE_CLIENT_SECRET
변수를 해당 환경 변수의 값으로 설정합니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
을(를) 사용하여 데이터 암호화 UUID
키 를 삭제합니다.
키 볼트에서 데이터 키를 삭제하려면 keyVault
객체에서 KeyVault.deleteKey()
메서드를 사용합니다.
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
을(를) 실행합니다.mongosh
GCP KMS 에 대한 클라이언트 사이드 필드 수준 암호화 를 구성하려면 GCP 이메일 및 관련 비공개 키가 필요합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
먼저 플랫폼 설명서에 따라 다음 환경 변수를 구성했는지 확인합니다.
GCP_EMAIL
GCP_PRIVATEKEY
다음으로 ,mongosh
--shell
및 --eval
--nodb
옵션을 사용하여 세션을 생성합니다.
mongosh --eval " var GCP_EMAIL = '$GCP_EMAIL' var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY' " \ --shell --nodb
이 예시 에서는 MongoDB database 에 연결하지 않고 mongosh
을(를) 엽니다. --eval
옵션은 mongosh
의 GCP_EMAIL
및 GCP_PRIVATEKEY
변수를 해당 환경 변수의 값으로 설정합니다.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
을(를) 사용하여 데이터 암호화 UUID
키 를 삭제합니다.
키 볼트에서 데이터 키를 삭제하려면 keyVault
객체에서 KeyVault.deleteKey()
메서드를 사용합니다.
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
암호화 키를 생성합니다.
로컬로 관리되는 키에 대해 클라이언트 사이드 필드 수준 암호화 를 구성하려면 줄 바꿈 없이 기본64인코딩된 96바이트 string 을 지정해야 합니다.
이러한 자격 증명 이 로그로 유출될 위험을 줄이기 위해 다음 절차에서는 환경 변수를 사용하여 mongosh
에 값을 전달합니다.
다음 작업은 명시된 요구 사항을 충족하는 키를 생성하고 사용자의 ~/.profile
에 추가합니다. DEV_LOCAL_KEY
키가 이미 존재하는 경우 이 작업을 건너뜁니다.
echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile
로드된 환경 변수를 새로 고치려면 호스팅하다 운영 체제에서 로그아웃했다가 다시 로그인해야 할 수 있습니다. 또는 source ~/.profile
명령을 사용하여 shell 을 수동으로 새로 고칠 수 있습니다.
참고
특정 호스팅하다 운영 체제 또는 shell 에는 영구 환경 변수를 설정하는 절차가 다를 수 있습니다. 더 구체적인 절차는 호스팅하다 OS 또는 shell 의 설명서를 참조하세요.
암호화 구성을 생성합니다.
mongosh
에서 클라이언트 사이드 필드 수준 암호화 구성 문서를 저장하기 위한 새 ClientSideFieldLevelEncryptionOptions
변수를 만듭니다.
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
암호화 지원팀에 연결하세요.
mongosh
에서 Mongo()
생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다. ClientSideFieldLevelEncryptionOptions
문서 를 Mongo()
생성자의 두 번째 매개 변수로 지정하여 클라이언트 사이드 필드 수준 암호화 를 위한 연결을 구성합니다.
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net
URI 를 대상 클러스터 의 연결 string 로 바꿉니다.
csfleDatabaseConnection
객체 를 사용하여 클라이언트 사이드 필드 수준 암호화 shell 메서드에 액세스 합니다.
클라이언트 사이드 필드 수준 암호화 를 위해 구성된 데이터베이스 연결 설정에 대한 전체 문서는 Mongo()
생성자 참조를 참조하세요.
키 볼트 객체를 만듭니다.
csfleDatabaseConnection
데이터베이스 연결 객체 에서 getKeyVault()
메서드를 사용하여 keyVault
객체 를 생성합니다.
keyVault = csfleDatabaseConnection.getKeyVault();
중요
클라이언트 사이드 필드 수준 암호화 는 서버에서 적용하는 키 대체 이름의 고유성에 따라 달라집니다. getKeyVault()
는 keyAltNames
에 고유 인덱스 가 없는 경우 해당 인덱스를 생성합니다. 에 의해 생성된 고유 인덱스 getKeyVault()
를삭제하지 마세요 .
을(를) 사용하여 데이터 암호화 UUID
키 를 삭제합니다.
키 볼트에서 데이터 키를 삭제하려면 keyVault
객체에서 KeyVault.deleteKey()
메서드를 사용합니다.
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
기존 데이터 암호화 키
키 볼트에서 기존 데이터 암호화 키 문서를 검색하려면 다음 중 하나를 수행합니다.
getKey()
를 사용하여 UUID 로 생성된 키를 조회하거나,지정된 경우 대체 이름으로 키를 검색하려면
getKeyByAltName()
를 사용합니다. 대체 이름 작업에 대한 자세한 내용 은 데이터 암호화 키의 대체 이름 관리를 참조하세요.
자동 클라이언트 사이드 필드 수준 암호화 를 구성하기 위해 공식 4.2+ 호환 드라이버에 데이터 암호화 키를 제공하는 경우 UUID string 의 base64
표현을 사용해야 합니다.
mongosh
에서 다음 작업을 실행하여 UUID
16진수 string 을 base64
표현으로 변환할 수 있습니다.
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
이 명령에 자체 데이터 암호화 키의 UUID
를 제공합니다.