Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / / / /

Queryable Encryption 지원 애플리케이션 만들기

이 페이지의 내용

  • 개요
  • 시작하기 전
  • 절차
  • 다음 단계

이 가이드 에서는 Queryable Encryption 을 구현하여 문서 필드를 자동으로 암호화하고 해독하는 애플리케이션 을 빌드 하는 방법을 설명합니다.

이 가이드 의 단계를 완료하면 고객 마스터 키 암호화됨 필드가 있는 문서를 삽입할 준비가 된 클라이언트 애플리케이션 이 작동할 것입니다.

애플리케이션을 만들기 전에 다음 전제 조건 작업을 완료했는지 확인하세요.

  1. Queryable Encryption 호환 드라이버 및 종속성 설치

  2. Queryable Encryption 라이브러리 설치 및 구성

  3. 고객 마스터 키 생성

샘플 애플리케이션 의 전체 코드를 보려면 언어 선택기에서 프로그래밍 언어 를 선택하세요.

mongosh 애플리케이션 완성

각 샘플 애플리케이션 리포지토리 에는 환경을 설정하다 하고 애플리케이션 을 실행 하는 방법을 학습 데 사용할 수 있는 README.md 파일 이 포함되어 있습니다.

아래에서 키 제공자의 탭을 선택합니다.

1

이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 Queryable Encryption 워크플로를 수행합니다.

  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. keyVaultDatabaseName"encryption" 로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. keyVaultCollectionName"__keyVault" 로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB의 네임스페이스입니다. keyVaultDatabaseNamekeyVaultCollectionName 변수의 값이 마침표로 구분된 이름을 가진 새 CollectionNamespace 객체로 keyVaultNamespace 를 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. encryptedDatabaseName"medicalRecords" 로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. encryptedCollectionName"patients" 로 설정합니다.

  • uri - MongoDB 배포 연결 URI입니다. appsettings.json 파일에서 연결 URI를 설정하거나 값을 직접 바꿉니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 key_vault_database_namekey_vault_collection_name 변수의 값으로 설정합니다.

  • encryption_database_name - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

중요

키 볼트 컬렉션 네임스페이스 권한

키 볼트 컬렉션은 encryption.__keyVault 네임스페이스에 있습니다. 애플리케이션이 MongoDB에 연결하는 데 사용하는 데이터베이스 사용자에게 이 네임스페이스에 대한 읽기/쓰기 권한이 있는지 확인합니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

2

다음 구조로 KMS 자격 증명이 포함된 변수를 생성합니다. IAM 사용자를 생성 Amazon Web Services 할 때 단계에서 사용한 액세스 키 ID 및 비밀 액세스 키를 사용합니다.2.2

kmsProviderCredentials = {
aws: {
accessKeyId: process.env["AWS_ACCESS_KEY_ID"], // Your AWS access key ID
secretAccessKey: process.env["AWS_SECRET_ACCESS_KEY"], // Your AWS secret access key
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "accessKeyId", _appSettings["Aws:AccessKeyId"] }, // Your AWS access key ID
{ "secretAccessKey", _appSettings["Aws:SecretAccessKey"] } // Your AWS secret access key
};
kmsProviderCredentials.Add("aws", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"aws": {
"accessKeyId": os.Getenv("AWS_ACCESS_KEY_ID"), // AWS access key ID
"secretAccessKey": os.Getenv("AWS_SECRET_ACCESS_KEY"), // AWS secret access key
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("accessKeyId", getEnv("AWS_ACCESS_KEY_ID")); // Your AWS access key ID
kmsProviderDetails.put("secretAccessKey", getEnv("AWS_SECRET_ACCESS_KEY")); // Your AWS secret access key
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("aws", kmsProviderDetails);
kmsProviders = {
aws: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID, // Your AWS access key ID
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, // Your AWS secret access key
},
};
kms_provider_credentials = {
"aws": {
"accessKeyId": os.environ['AWS_ACCESS_KEY_ID'], # Your AWS access key ID
"secretAccessKey": os.environ['AWS_SECRET_ACCESS_KEY'] # Your AWS secret access key
}
}

중요

알림: 프로덕션에서 IAM 역할로 인증하기

IAM 사용자 대신 IAM 역할 을 사용하여 애플리케이션 을 인증하려면 KMS 제공자 객체 에서 자격 증명 에 대한 빈 객체 를 지정합니다. 이는 운전자 가 환경에서 자격 증명 을 자동으로 조회 하도록 지시합니다.

kmsProviders = {
aws: { }
};
kmsProviderCredentials.Add("aws", new Dictionary<string, object>);
kmsProviderCredentials := map[string]map[string]interface{}{
"aws": { },
}
kmsProviderCredentials.put("aws", new HashMap<>());
kmsProviders = {
aws: { }
};
kms_provider_credentials = {
"aws": { }
}
3

다음 구조로 고객 마스터 키 자격 증명 이 포함된 변수를 생성합니다. CMK 를 생성 할단계에서 기록한 ARN 및 리전을 사용합니다.1.3

customerMasterKeyCredentials = {
key: process.env["AWS_KEY_ARN"], // Your AWS Key ARN
region: process.env["AWS_KEY_REGION"], // Your AWS Key Region
};
var customerMasterKeyCredentials = new BsonDocument
{
{ "key", _appSettings["Aws:KeyArn"] }, // Your AWS Key ARN
{ "region", _appSettings["Aws:KeyRegion"] } // Your AWS Key Region
};
customerMasterKeyCredentials := map[string]string{
"key": os.Getenv("AWS_KEY_ARN"), // Your AWS Key ARN
"region": os.Getenv("AWS_KEY_REGION"), // Your AWS Key Region
}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials.put("provider", new BsonString(kmsProviderName));
customerMasterKeyCredentials.put("key", new BsonString(getEnv("AWS_KEY_ARN"))); // Your AWS Key ARN
customerMasterKeyCredentials.put("region", new BsonString(getEnv("AWS_KEY_REGION"))); // Your AWS Key Region
customerMasterKeyCredentials = {
key: process.env.AWS_KEY_ARN, // Your AWS Key ARN
region: process.env.AWS_KEY_REGION, // Your AWS Key Region
};
customer_master_key_credentials = {
"key": os.environ['AWS_KEY_ARN'], # Your AWS Key ARN
"region": os.environ['AWS_KEY_REGION'] # Your AWS Key Region
}
4

참고

자동 암호화 옵션

자동 암호화 옵션은 자동 암호화 공유 라이브러리에 구성 정보를 제공하여 암호화된 필드에 액세스할 때 애플리케이션의 동작을 수정합니다.

자동 암호화 공유 라이브러리에 학습 보려면 자동 암호화 공유 라이브러리 페이지를 참조하세요.

다음 옵션을 사용하여 autoEncryptionOptions 객체 를 만듭니다.

  • 키 볼트 컬렉션의 네임스페이스

  • AWS KMS 자격 증명이 포함된 kmsProviderCredentials 객체

const autoEncryptionOptions = {
keyVaultNamespace: keyVaultNamespace,
kmsProviders: kmsProviderCredentials,
};

다음 옵션을 사용하여 AutoEncryptionOptions 객체 를 만듭니다.

  • 키 볼트 컬렉션의 네임스페이스

  • AWS KMS 자격 증명이 포함된 kmsProviderCredentials 객체

  • 자동 암호화 공유 라이브러리의 경로가 포함된 extraOptions 객체

var extraOptions = new Dictionary<string, object>
{
{ "cryptSharedLibPath", _appSettings["CryptSharedLibPath"] } // Path to your Automatic Encryption Shared Library
};
var autoEncryptionOptions = new AutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials,
extraOptions: extraOptions);

다음 옵션을 사용하여 AutoEncryption 객체 를 만듭니다.

  • 키 볼트 컬렉션의 네임스페이스

  • AWS KMS 자격 증명이 포함된 kmsProviderCredentials 객체

  • 자동 암호화 공유 라이브러리의 경로가 포함된 cryptSharedLibraryPath 객체

cryptSharedLibraryPath := map[string]interface{}{
"cryptSharedLibPath": os.Getenv("SHARED_LIB_PATH"), // Path to your Automatic Encryption Shared Library
}
autoEncryptionOptions := options.AutoEncryption().
SetKeyVaultNamespace(keyVaultNamespace).
SetKmsProviders(kmsProviderCredentials).
SetExtraOptions(cryptSharedLibraryPath)

다음 옵션을 사용하여 AutoEncryptionSettings 객체 를 만듭니다.

  • 키 볼트 컬렉션의 네임스페이스

  • AWS KMS 자격 증명이 포함된 kmsProviderCredentials 객체

  • 자동 암호화 공유 라이브러리의 경로가 포함된 extraOptions 객체

Map<String, Object> extraOptions = new HashMap<String, Object>();
extraOptions.put("cryptSharedLibPath", getEnv("SHARED_LIB_PATH")); // Path to your Automatic Encryption Shared Library
AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder()
.keyVaultNamespace(keyVaultNamespace)
.kmsProviders(kmsProviderCredentials)
.extraOptions(extraOptions)
.build();

다음 옵션을 사용하여 autoEncryptionOptions 객체 를 만듭니다.

  • 키 볼트 컬렉션의 네임스페이스

  • AWS KMS 자격 증명이 포함된 kmsProviders 객체

  • 자동 암호화 공유 라이브러리의 경로가 포함된 sharedLibraryPathOptions 객체

const extraOptions = {
cryptSharedLibPath: process.env.SHARED_LIB_PATH, // Path to your Automatic Encryption Shared Library
};
const autoEncryptionOptions = {
keyVaultNamespace,
kmsProviders,
extraOptions,
};

다음 옵션을 사용하여 AutoEncryptionOpts 객체 를 만듭니다.

  • AWS KMS 자격 증명이 포함된 kms_provider_credentials 객체

  • 키 볼트 컬렉션의 네임스페이스

  • 자동 암호화 공유 라이브러리의 경로

auto_encryption_options = AutoEncryptionOpts(
kms_provider_credentials,
key_vault_namespace,
crypt_shared_lib_path=os.environ['SHARED_LIB_PATH'] # Path to your Automatic Encryption Shared Library>
)
5

컬렉션의 데이터를 암호화 및 암호 해독하는 데 사용되는 클라이언트를 만들려면 연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient를 인스턴스화합니다.

const encryptedClient = Mongo(uri, autoEncryptionOptions);

참고: .NET / C# 드라이버 버전 이상을사용하는 경우 새 .NETC# 3.0 을 인스턴스화하기 전에 애플리케이션 에 다음 코드를 추가해야 MongoClient 합니다.

MongoClientSettings.Extensions.AddAutoEncryption(); // .NET/C# Driver v3.0 or later only

연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)
1

이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 Queryable Encryption 워크플로를 수행합니다.

  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. keyVaultDatabaseName"encryption" 로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. keyVaultCollectionName"__keyVault" 로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB의 네임스페이스입니다. keyVaultDatabaseNamekeyVaultCollectionName 변수의 값이 마침표로 구분된 이름을 가진 새 CollectionNamespace 객체로 keyVaultNamespace 를 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. encryptedDatabaseName"medicalRecords" 로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. encryptedCollectionName"patients" 로 설정합니다.

  • uri - MongoDB 배포 연결 URI입니다. appsettings.json 파일에서 연결 URI를 설정하거나 값을 직접 바꿉니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 key_vault_database_namekey_vault_collection_name 변수의 값으로 설정합니다.

  • encryption_database_name - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

중요

키 볼트 컬렉션 네임스페이스 권한

키 볼트 컬렉션은 encryption.__keyVault 네임스페이스에 있습니다. 애플리케이션이 MongoDB에 연결하는 데 사용하는 데이터베이스 사용자에게 이 네임스페이스에 대한 읽기/쓰기 권한이 있는지 확인합니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

2

다음 구조로 KMS 자격 증명 이 포함된 변수를 생성합니다. Azure에 애플리케이션 을 등록 Azure때 에 기록한 Azure Key Vault 자격 증명 을 사용합니다.

kmsProviderCredentials = {
azure: {
tenantId: process.env["AZURE_TENANT_ID"], // Your Azure tenant ID
clientId: process.env["AZURE_CLIENT_ID"], // Your Azure client ID
clientSecret: process.env["AZURE_CLIENT_SECRET"], // Your Azure client secret
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "tenantId", _appSettings["Azure:TenantId"] }, // Your Azure tenant ID
{ "clientId", _appSettings["Azure:ClientId"] }, // Your Azure client ID
{ "clientSecret", _appSettings["Azure:ClientSecret"] } // Your Azure client secret
};
kmsProviderCredentials.Add("azure", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"azure": {
"tenantId": os.Getenv("AZURE_TENANT_ID"), // Azure tenant ID
"clientId": os.Getenv("AZURE_CLIENT_ID"), // Azure client ID
"clientSecret": os.Getenv("AZURE_CLIENT_SECRET"), // Azure client secret
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("tenantId", getEnv("AZURE_TENANT_ID")); // Your Azure tenant ID
kmsProviderDetails.put("clientId", getEnv("AZURE_CLIENT_ID")); // Your Azure client ID
kmsProviderDetails.put("clientSecret", getEnv("AZURE_CLIENT_SECRET")); // Your Azure client secret
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("azure", kmsProviderDetails);
kmsProviders = {
azure: {
tenantId: process.env.AZURE_TENANT_ID, // Your Azure tenant ID
clientId: process.env.AZURE_CLIENT_ID, // Your Azure client ID
clientSecret: process.env.AZURE_CLIENT_SECRET, // Your Azure client secret
},
};
kms_provider_credentials = {
"azure": {
"tenantId": os.environ['AZURE_TENANT_ID'], # Your Azure tenant ID
"clientId": os.environ['AZURE_CLIENT_ID'], # Your Azure client ID
"clientSecret": os.environ['AZURE_CLIENT_SECRET'] # Your Azure client secret
}
}
3

다음 구조로 고객 마스터 키 자격 증명 이 포함된 변수를 생성합니다. CMK를 CMK할 때 기록한 CMK 세부 정보를 사용합니다.

customerMasterKeyCredentials = {
keyVaultEndpoint: process.env["AZURE_KEY_VAULT_ENDPOINT"], // Your Azure Key Vault Endpoint
keyName: process.env["AZURE_KEY_NAME"], // Your Azure Key Name
};
var customerMasterKeyCredentials = new BsonDocument
{
{ "keyVaultEndpoint", _appSettings["Azure:KeyVaultEndpoint"] }, // Your Azure Key Vault Endpoint
{ "keyName", _appSettings["Azure:KeyName"] } // Your Azure Key Name
};
customerMasterKeyCredentials := map[string]string{
"keyVaultEndpoint": os.Getenv("AZURE_KEY_VAULT_ENDPOINT"), // Your Azure Key Vault Endpoint
"keyName": os.Getenv("AZURE_KEY_NAME"), // Your Azure Key Name
}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials.put("provider", new BsonString(kmsProviderName));
customerMasterKeyCredentials.put("keyName", new BsonString(getEnv("AZURE_KEY_NAME"))); // Your Azure Key Vault Endpoint
customerMasterKeyCredentials.put("keyVaultEndpoint", new BsonString(getEnv("AZURE_KEY_VAULT_ENDPOINT"))); // Your Azure Key Name
customerMasterKeyCredentials = {
keyVaultEndpoint: process.env.AZURE_KEY_VAULT_ENDPOINT, // Your Azure Key Vault Endpoint
keyName: process.env.AZURE_KEY_NAME, // Your Azure Key Name
};
customer_master_key_credentials = {
"keyName": os.environ['AZURE_KEY_NAME'], # Your Azure key name
"keyVaultEndpoint": os.environ['AZURE_KEY_VAULT_ENDPOINT'] # Your Azure key vault endpoint
}
4

암호화된 컬렉션의 데이터를 암호화됨 및 해독하기 위한 클라이언트 를 만들려면 연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

const encryptedClient = Mongo(uri, autoEncryptionOptions);

참고: .NET / C# 드라이버 버전 이상을사용하는 경우 새 .NETC# 3.0 을 인스턴스화하기 전에 애플리케이션 에 다음 코드를 추가해야 MongoClient 합니다.

MongoClientSettings.Extensions.AddAutoEncryption(); // .NET/C# Driver v3.0 or later only

연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)
1

이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 Queryable Encryption 워크플로를 수행합니다.

  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. keyVaultDatabaseName"encryption" 로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. keyVaultCollectionName"__keyVault" 로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB의 네임스페이스입니다. keyVaultDatabaseNamekeyVaultCollectionName 변수의 값이 마침표로 구분된 이름을 가진 새 CollectionNamespace 객체로 keyVaultNamespace 를 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. encryptedDatabaseName"medicalRecords" 로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. encryptedCollectionName"patients" 로 설정합니다.

  • uri - MongoDB 배포 연결 URI입니다. appsettings.json 파일에서 연결 URI를 설정하거나 값을 직접 바꿉니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 key_vault_database_namekey_vault_collection_name 변수의 값으로 설정합니다.

  • encryption_database_name - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

중요

키 볼트 컬렉션 네임스페이스 권한

키 볼트 컬렉션은 encryption.__keyVault 네임스페이스에 있습니다. 애플리케이션이 MongoDB에 연결하는 데 사용하는 데이터베이스 사용자에게 이 네임스페이스에 대한 읽기/쓰기 권한이 있는지 확인합니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

2

다음 구조로 KMS 자격 증명 이 포함된 변수를 생성합니다.

kmsProviderCredentials = {
gcp: {
email: process.env["GCP_EMAIL"], // Your GCP email
privateKey: process.env["GCP_PRIVATE_KEY"], // Your GCP private key
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "email", _appSettings["Gcp:Email"] }, // Your GCP email
{ "privateKey", _appSettings["Gcp:PrivateKey"] } // Your GCP private key
};
kmsProviderCredentials.Add("gcp", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"gcp": {
"email": os.Getenv("GCP_EMAIL"), // GCP email
"privateKey": os.Getenv("GCP_PRIVATE_KEY"), // GCP private key
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("email", getEnv("GCP_EMAIL")); // Your GCP email
kmsProviderDetails.put("privateKey", getEnv("GCP_PRIVATE_KEY")); // Your GCP private key
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("gcp", kmsProviderDetails);
kmsProviders = {
gcp: {
email: process.env.GCP_EMAIL, // Your GCP email
privateKey: process.env.GCP_PRIVATE_KEY, // Your GCP private key
},
};
kms_provider_credentials = {
"gcp": {
"email": os.environ['GCP_EMAIL'], # Your GCP email
"privateKey": os.environ['GCP_PRIVATE_KEY'] # Your GCP private key
}
}
3

다음 구조로 고객 마스터 키 자격 증명 이 포함된 변수를 생성합니다. CMK 를 생성할 때 기록한 자격 증명 을 사용합니다.

customerMasterKeyCredentials = {
projectId: process.env["GCP_PROJECT_ID"], // Your GCP Project ID
location: process.env["GCP_LOCATION"], // Your GCP Key Location
keyRing: process.env["GCP_KEY_RING"], // Your GCP Key Ring
keyName: process.env["GCP_KEY_NAME"], // Your GCP Key Name
};
var customerMasterKeyCredentials = new BsonDocument
{
{ "projectId", _appSettings["Gcp:ProjectId"] }, // Your GCP Project ID
{ "location", _appSettings["Gcp:Location"] }, // Your GCP Key Location
{ "keyRing", _appSettings["Gcp:KeyRing"] }, // Your GCP Key Ring
{ "keyName", _appSettings["Gcp:KeyName"] } // Your GCP Key Name
};
customerMasterKeyCredentials := map[string]string{
"projectId": os.Getenv("GCP_PROJECT_ID"), // Your GCP Project ID
"location": os.Getenv("GCP_LOCATION"), // Your GCP Key Location
"keyRing": os.Getenv("GCP_KEY_RING"), // Your GCP Key Ring
"keyName": os.Getenv("GCP_KEY_NAME"), // Your GCP Key Name
}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials.put("provider", new BsonString(kmsProviderName));
customerMasterKeyCredentials.put("projectId", new BsonString(getEnv("GCP_PROJECT_ID"))); // Your GCP Project ID
customerMasterKeyCredentials.put("location", new BsonString(getEnv("GCP_LOCATION"))); // Your GCP Key Location
customerMasterKeyCredentials.put("keyRing", new BsonString(getEnv("GCP_KEY_RING"))); // Your GCP Key Ring
customerMasterKeyCredentials.put("keyName", new BsonString(getEnv("GCP_KEY_NAME"))); // Your GCP Key Name
customerMasterKeyCredentials = {
projectId: process.env.GCP_PROJECT_ID, // Your GCP Project ID
location: process.env.GCP_LOCATION, // Your GCP Key Location
keyRing: process.env.GCP_KEY_RING, // Your GCP Key Ring
keyName: process.env.GCP_KEY_NAME, // Your GCP Key Name
};
customer_master_key_credentials = {
"projectId": os.environ['GCP_PROJECT_ID'], # Your GCP email
"location": os.environ['GCP_LOCATION'], # Your GCP private key
"keyRing": os.environ['GCP_KEY_RING'], # Your GCP private key
"keyName": os.environ['GCP_KEY_NAME'] # Your GCP private key
}
4

암호화된 컬렉션의 데이터를 암호화됨 및 해독하기 위한 클라이언트 를 만들려면 연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

const encryptedClient = Mongo(uri, autoEncryptionOptions);

참고: .NET / C# 드라이버 버전 이상을사용하는 경우 새 .NETC# 3.0 을 인스턴스화하기 전에 애플리케이션 에 다음 코드를 추가해야 MongoClient 합니다.

MongoClientSettings.Extensions.AddAutoEncryption(); // .NET/C# Driver v3.0 or later only

연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)
1

이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 Queryable Encryption 워크플로를 수행합니다.

  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. keyVaultDatabaseName"encryption" 로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. keyVaultCollectionName"__keyVault" 로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB의 네임스페이스입니다. keyVaultDatabaseNamekeyVaultCollectionName 변수의 값이 마침표로 구분된 이름을 가진 새 CollectionNamespace 객체로 keyVaultNamespace 를 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. encryptedDatabaseName"medicalRecords" 로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. encryptedCollectionName"patients" 로 설정합니다.

  • uri - MongoDB 배포 연결 URI입니다. appsettings.json 파일에서 연결 URI를 설정하거나 값을 직접 바꿉니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 keyVaultDatabaseNamekeyVaultCollectionName 변수의 값으로 설정합니다.

  • encryptionDatabaseName - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryptionCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이를 키 제공자 로 설정합니다: "aws", "azure", "gcp" 또는 "kmip".

  • uri - MongoDB deployment 연결 URI입니다. MONGODB_URI 환경 변수에 연결 URI를 설정하거나 값을 직접 바꿉니다.

  • key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB database 입니다. 이를 "encryption" 으로 설정합니다.

  • key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이를 "__keyVault" 으로 설정합니다.

  • key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 값을 마침표로 구분된 key_vault_database_namekey_vault_collection_name 변수의 값으로 설정합니다.

  • encryption_database_name - 암호화됨 데이터가 저장될 MongoDB database 입니다. 이를 "medicalRecords" 으로 설정합니다.

  • encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이를 "patients" 으로 설정합니다.

다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

중요

키 볼트 컬렉션 네임스페이스 권한

키 볼트 컬렉션은 encryption.__keyVault 네임스페이스에 있습니다. 애플리케이션이 MongoDB에 연결하는 데 사용하는 데이터베이스 사용자에게 이 네임스페이스에 대한 읽기/쓰기 권한이 있는지 확인합니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

환경 변수

이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.

이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.

2

다음 구조로 KMIP 호환 키 제공자의 엔드포인트를 포함하는 변수를 생성합니다.

kmsProviderCredentials = {
kmip: {
endpoint: process.env["KMIP_KMS_ENDPOINT"], // Your KMIP KMS endpoint
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "endpoint", _appSettings["Kmip:KmsEndpoint"] } // Your KMIP KMS endpoint
};
kmsProviderCredentials.Add("kmip", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"kmip": {
"endpoint": os.Getenv("KMIP_KMS_ENDPOINT"), // KMIP KMS endpoint
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("endpoint", getEnv("KMIP_KMS_ENDPOINT")); // Your KMIP KMS endpoint
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("kmip", kmsProviderDetails);
kmsProviders = {
kmip: {
endpoint: process.env.KMIP_KMS_ENDPOINT, // Your KMIP KMS endpoint
},
};
kms_provider_credentials = {
"kmip": {
"endpoint": os.environ['KMIP_KMS_ENDPOINT'] # Your KMIP KMS endpoint
}
}
3

다음 코드 예제에 표시된 대로 빈 객체를 만듭니다. 이렇게 하면 KMIP호환 키 제공자가 새 고객 마스터 키를 생성하라는 메시지가 표시됩니다.

customerMasterKeyCredentials = {};
var customerMasterKeyCredentials = new BsonDocument();
cmkCredentials := map[string]string{}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials = {};
customer_master_key_credentials = {}
4

암호화된 컬렉션의 데이터를 암호화됨 및 해독하기 위한 클라이언트 를 만들려면 연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

const encryptedClient = Mongo(uri, autoEncryptionOptions);

참고: .NET / C# 드라이버 버전 이상을사용하는 경우 새 .NETC# 3.0 을 인스턴스화하기 전에 애플리케이션 에 다음 코드를 추가해야 MongoClient 합니다.

MongoClientSettings.Extensions.AddAutoEncryption(); // .NET/C# Driver v3.0 or later only

연결 URI 및 자동 암호화 옵션을 사용하여 새 MongoClient 를 인스턴스화합니다.

var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)

드라이버 및 종속성을 설치하고, 고객 마스터 키를 생성하고, 애플리케이션을 만든 후 개요: Queryable Encryption 을 사용하여 데이터 암호화 및 쿼리를 참조하세요.

돌아가기

고객 마스터 키 생성