AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

필드 레벨 암호화

MongoDB 엔터프라이즈 또는 MongoDB Atlas cluster 로 작업할 때 를 사용하여 mongosh Queryable Encryption 또는 클라이언트 측 필드 레벨 암호화 구성하고 암호화 지원 에 연결할 수 있습니다. Queryable Encryption 과 CSFLE는 모두 필드 값의 암호화 및 복호화를 지원하기 위해 데이터 암호화 키를 사용하고, 이 암호화 키 자료를 키 관리 서비스(KMS )에 저장 .

mongosh Queryable Encryption 및 CSFLE와 함께 사용할 수 있도록 다음과 같은 KMS 제공자를 지원합니다.

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud Platform KMS

  • 로컬로 관리되는 키 파일

다음 절차에서는 mongosh 를 사용하여 필드 수준 암호화 위한 데이터 암호화 키 만듭니다.

아래 탭을 사용하여 배포에 적합한 KMS 를 선택하세요.

1

--nodb 옵션을 사용하여 실행 중인 데이터베이스에 연결하지 않고 mongosh 세션을 생성합니다.

mongosh --nodb
2

AWS KMS에 대한 클라이언트 사이드 필드 레벨 암호화를 구성하려면 AWS 액세스 키 ID와 관련 시크릿 액세스 키가 필요합니다. AWS 액세스 키는 KMS 서비스에 대한 모든 목록 및 읽기 권한이 있는 IAM 사용자와 일치해야 합니다.

mongosh에서 다음 자격 증명이 포함된 클라이언트 사이드 필드 레벨 암호화 구성을 저장하기 위한 새 AutoEncryptionOpts 변수를 생성합니다.

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : "YOUR_AWS_ACCESS_KEY_ID",
"secretAccessKey" : "YOUR_AWS_SECRET_ACCESS_KEY"
}
}
}

YOUR_AWS_ACCESS_KEY_ID 및 YOUR_AWS_SECRET_ACCESS_KEY의 값을 적절하게 입력합니다.

3

에서 mongosh Mongo() 생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다.AutoEncryptionOpts 문서 생성자의 두 번째 매개 변수로 Mongo() 지정하여 클라이언트 사이드 필드 수준 암호화 에 대한 연결을 구성합니다.

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)

replaceMe.example.net URI을 대상 클러스터의 연결 문자열로 바꿉니다.

4

셸 메서드를 getKeyVault() 사용하여 객체 만듭니다.keyVault

keyVault = csfleDatabaseConnection.getKeyVault();
5

셸 메서드를 createKey() 사용하여 데이터 암호화 키 생성합니다.

keyVault.createKey(
"aws",
{ region: "regionname", key: "awsarn" },
[ "keyAlternateName" ]
)

구제척으로:

  • 구성된 Amazon Web Services KMS를 지정하려면 첫 번째 파라미터가 반드시 "aws"이어야 합니다.

  • 두 번째 매개변수는 반드시 다음을 포함하는 문서여야 합니다.

    • 연결하려는 Amazon Web Services 리전 us-west-2

    • Amazon 리소스 이름(ARN) 을 Amazon Web Services 고객 마스터 키(CMK)에 추가합니다.

  • 세 번째 매개변수는 keyAltNames 데이터 암호화 키 에 대한 하나 이상의 배열 일 수 있습니다. 각 키 대체 이름은 고유해야 getKeyVault() 합니다. 는 에 keyAltNames 고유 인덱스 생성하여 필드 아직 존재하지 않는 경우 고유성을 시행하다 합니다. 키 대체 이름을 사용하면 데이터 암호화 키 쉽게 찾을 수 있습니다.

성공적인 하면createKey()는 새 데이터 암호화 키 의 UUID를 반환합니다. 키 볼트에서 새 데이터 암호화 키 문서 조회 하려면 다음 중 하나를 수행합니다.

  • getKey()를 사용하여 UUID로 생성된 키를 조회 하거나

  • getKeyByAltName() 지정된 경우 대체 이름으로 키를 조회 하려면 를 사용합니다.

1

--nodb 옵션을 사용하여 실행 중인 데이터베이스에 연결하지 않고 mongosh 세션을 생성합니다.

mongosh --nodb
2

Azure Key Vault에 대한 클라이언트 사이드 필드 수준 암호화를 구성하려면 유효한 테넌트 ID, 클라이언트 ID 및 클라이언트 비밀이 필요합니다.

mongosh에서 다음 자격 증명이 포함된 클라이언트 사이드 필드 레벨 암호화 구성을 저장하기 위한 새 AutoEncryptionOpts 변수를 생성합니다.

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : "YOUR_TENANT_ID",
"clientId" : "YOUR_CLIENT_ID",
"clientSecret" : "YOUR_CLIENT_SECRET"
}
}
}

YOUR_TENANT_ID, YOUR_CLIENT_ID 및 YOUR_CLIENT_SECRET 의 값을 적절히 입력합니다.

3

에서 mongosh Mongo() 생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다.AutoEncryptionOpts 문서 생성자의 두 번째 매개 변수로 Mongo() 지정하여 클라이언트 사이드 필드 수준 암호화 에 대한 연결을 구성합니다.

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)

replaceMe.example.net URI을 대상 클러스터의 연결 문자열로 바꿉니다.

4

셸 메서드를 getKeyVault() 사용하여 객체 만듭니다.keyVault

keyVault = csfleDatabaseConnection.getKeyVault();
5

셸 메서드를 createKey() 사용하여 데이터 암호화 키 생성합니다.

keyVault.createKey(
"azure",
{ keyName: "keyvaultname", keyVaultEndpoint: "endpointname" },
[ "keyAlternateName" ]
)

구제척으로:

  • 구성된 Azure Key Vault 를 지정하려면 첫 번째 매개변수가 "azure" 이어야 합니다 .

  • 두 번째 매개변수는 다음을 포함하는 문서 여야 합니다 .

  • 세 번째 매개변수는 keyAltNames 데이터 암호화 키 에 대한 하나 이상의 배열 일 수 있습니다. 각 키 대체 이름은 고유해야 getKeyVault() 합니다. 는 에 keyAltNames 고유 인덱스 생성하여 필드 아직 존재하지 않는 경우 고유성을 시행하다 합니다. 키 대체 이름을 사용하면 데이터 암호화 키 쉽게 찾을 수 있습니다.

성공적인 하면createKey()는 새 데이터 암호화 키 의 UUID를 반환합니다. 키 볼트에서 새 데이터 암호화 키 문서 조회 하려면 다음 중 하나를 수행합니다.

  • getKey()를 사용하여 UUID로 생성된 키를 조회 하거나

  • getKeyByAltName() 지정된 경우 대체 이름으로 키를 조회 하려면 를 사용합니다.

1

--nodb 옵션을 사용하여 실행 중인 데이터베이스에 연결하지 않고 mongosh 세션을 생성합니다.

mongosh --nodb
2

GCP KMS 에 대한 클라이언트 사이드 필드 수준 암호화 를 구성하려면 GCP 이메일 및 관련 비공개 키가 필요합니다.

mongosh에서 다음 자격 증명이 포함된 클라이언트 사이드 필드 레벨 암호화 구성을 저장하기 위한 새 AutoEncryptionOpts 변수를 생성합니다.

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : "YOUR_GCP_EMAIL",
"privateKey" : "YOUR_GCP_PRIVATEKEY"
}
}
}

YOUR_GCP_EMAIL 및 YOUR_GCP_PRIVATEKEY의 값을 적절하게 입력합니다.

3

에서 mongosh Mongo() 생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다.AutoEncryptionOpts 문서 생성자의 두 번째 매개 변수로 Mongo() 지정하여 클라이언트 사이드 필드 수준 암호화 에 대한 연결을 구성합니다.

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)

replaceMe.example.net URI을 대상 클러스터의 연결 문자열로 바꿉니다.

4

셸 메서드를 getKeyVault() 사용하여 객체 만듭니다.keyVault

keyVault = csfleDatabaseConnection.getKeyVault();
5

셸 메서드를 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를 반환합니다. 키 볼트에서 새 데이터 암호화 키 문서 조회 하려면 다음 중 하나를 수행합니다.

  • getKey()를 사용하여 UUID로 생성된 키를 조회 하거나

  • getKeyByAltName() 지정된 경우 대체 이름으로 키를 조회 하려면 를 사용합니다.

1

--nodb 옵션을 사용하여 실행 중인 데이터베이스에 연결하지 않고 mongosh 세션을 생성합니다.

mongosh --nodb
2

로컬 관리형 키에 대해 클라이언트 사이드 필드 수준 암호화를 구성하려면 줄 바꿈이 없는 기본64 인코딩 96바이트 문자열을 지정해야 합니다. 이러한 요구 사항과 일치하는 키를 생성하려면 mongosh에서 다음 명령을 실행하세요.

crypto.randomBytes(96).toString('base64')

다음 단계에서 이 키가 필요합니다.

3

에서 mongosh 클라이언트 사이드 필드 수준 암호화 구성을 저장하기 위한 새 AutoEncryptionOpts 변수를 만들고, 을 MY_LOCAL_KEY 단계에서 생성된 키로 1 바꿉니다.

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, "MY_LOCAL_KEY")
}
}
}
4

에서 mongosh Mongo() 생성자를 사용하여 대상 클러스터 에 대한 데이터베이스 연결을 설정합니다.AutoEncryptionOpts 문서 생성자의 두 번째 매개 변수로 Mongo() 지정하여 클라이언트 사이드 필드 수준 암호화 에 대한 연결을 구성합니다.

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)
5

셸 메서드를 getKeyVault() 사용하여 객체 만듭니다.keyVault

keyVault = csfleDatabaseConnection.getKeyVault();
6

셸 메서드를 createKey() 사용하여 데이터 암호화 키 생성합니다.

keyVault.createKey(
"local",
[ "keyAlternateName" ]
)

구제척으로:

  • 구성된 로컬 관리형 키를 지정하려면 첫 번째 매개변수가 반드시 local여야 합니다.

  • 두 번째 매개변수는 데이터 암호화 키 에 대한 하나 이상의 keyAltNames 배열 일 수 있습니다. 각 키 대체 이름은 고유해야 합니다. getKeyVault()는 keyAltNames에 고유 인덱스 생성하여 필드 아직 존재하지 않는 경우 고유성을 시행하다 합니다. 키 대체 이름을 사용하면 데이터 암호화 키 쉽게 찾을 수 있습니다.

성공적인 하면createKey()는 새 데이터 암호화 키 의 UUID를 반환합니다. 키 볼트에서 새 데이터 암호화 키 문서 조회 하려면 다음 중 하나를 수행합니다.

  • getKey()를 사용하여 UUID로 생성된 키를 조회 하거나

  • getKeyByAltName() 지정된 경우 대체 이름으로 키를 조회 하려면 를 사용합니다.

이 페이지 평가하기

이 페이지의 내용