개요
이 가이드 에서는 Queryable Encryption 을 구현하여 문서 필드를 자동으로 암호화하고 해독하는 애플리케이션 을 빌드 하는 방법을 설명합니다.
이 가이드 의 단계를 완료하면 고객 마스터 키 암호화됨 필드가 있는 문서를 삽입할 준비가 된 클라이언트 애플리케이션 이 작동할 것입니다.
시작하기 전
애플리케이션을 만들기 전에 다음 전제 조건 작업을 완료했는지 확인하세요.
전체 애플리케이션 코드
샘플 애플리케이션 의 전체 코드를 보려면 언어 선택기에서 프로그래밍 언어 를 선택하세요.
각 샘플 애플리케이션 리포지토리 에는 환경을 설정하다 하고 애플리케이션 을 실행 하는 방법을 학습 데 사용할 수 있는 README.md
파일 이 포함되어 있습니다.
절차
아래에서 키 제공자의 탭을 선택합니다.
애플리케이션 변수 할당
이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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의 네임스페이스입니다.
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값이 마침표로 구분된 이름을 가진 새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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 .
KMS_PROVIDER
환경 변수를 키'aws'
제공자(,,'azure'
'gcp'
또는)로'kmip'
설정합니다.$uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.$keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 . 의 값을
$keyVaultDatabaseName
로'encryption'
설정합니다.$keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를 로 설정하면
'__keyVault'
사용자 컬렉션 으로 오해하는 것을 방지할 수 있습니다.$keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를 마침표로
$keyVaultDatabaseName
$keyVaultCollectionName
구분된 및 변수의 값으로 설정합니다.$encryptedDatabaseName - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를(으)로
'medicalRecords'
설정합니다.$encryptedCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를(으)로
'patients'
설정합니다.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
$kmsProviderName = getenv('KMS_PROVIDER'); $uri = getenv('MONGODB_URI'); // Your connection URI $keyVaultDatabaseName = 'encryption'; $keyVaultCollectionName = '__keyVault'; $keyVaultNamespace = $keyVaultDatabaseName . '.' . $keyVaultCollectionName; $encryptedDatabaseName = 'medicalRecords'; $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_name
및key_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"
kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이 튜토리얼에서는 이 변수를
"local"
로 설정합니다.uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"encryption"
으로 설정합니다.key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를
"__keyVault"
로 설정하면 사용자 컬렉션 으로 오인하는 것을 방지할 수 있습니다.key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를
Namespace
구조체로 설정하고key_vault_database_name
및key_vault_collection_name
변수의 값을 전달합니다.encryption_database_name - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"medicalRecords"
으로 설정합니다.encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. Set this variable to
"patients"
.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
let kms_provider_name = "<KMS provider name>"; let uri = env::var("MONGODB_URI").expect("Set MONGODB_URI environment variable to your connection string"); let key_vault_database_name = "encryption"; let key_vault_collection_name = "__keyVault"; let key_vault_namespace = Namespace::new(key_vault_database_name, key_vault_collection_name); let encrypted_database_name = "medicalRecords"; let 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의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
KMS 자격 증명 추가
다음 구조로 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 }, };
$kmsProviders = [ 'aws' => [ 'accessKeyId' => getenv('AWS_ACCESS_KEY_ID'), // Your AWS access key ID 'secretAccessKey' => getenv('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 } }
kms_providers = vec![( KmsProvider::aws(), doc! { "accessKeyId": env::var("AWS_ACCESS_KEY_ID").expect("Set AWS_ACCESS_KEY_ID environment variable"), "secretAccessKey": env::var("AWS_SECRET_ACCESS_KEY").expect("Set AWS_SECRET_ACCESS_KEY environment variable"), }, None, )];
중요
알림: 프로덕션에서 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: { } };
$kmsProviders = [ 'aws' => [], ];
kms_provider_credentials = { "aws": { } }
kms_providers = vec![( KmsProvider::aws(), doc! {}, None, )];
명명된 KMS 제공자 사용하는 경우 자격 증명 자동으로 조회 할 수 없습니다.
CMK 자격 증명 추가
다음 구조로 고객 마스터 키 자격 증명 이 포함된 변수를 생성합니다. 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 };
$customerMasterKeyCredentials = [ 'key' => getenv('AWS_KEY_ARN'), // Your AWS key ARN 'region' => getenv('AWS_REGION'), // Your AWS 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 }
let aws_master_key = AwsMasterKey::builder() .key(env::var("AWS_KEY_ARN").expect("Set the AWS_KEY_ARN environment variable")) .region(env::var("AWS_KEY_REGION").expect("Set the AWS_KEY_REGION environment variable")) .build();
자동 암호화 옵션 설정
참고
자동 암호화 옵션
자동 암호화 옵션은 자동 암호화 공유 라이브러리에 구성 정보를 제공하여 암호화된 필드에 액세스할 때 애플리케이션의 동작을 수정합니다.
자동 암호화 공유 라이브러리에 학습 보려면 자동 암호화 공유 라이브러리 페이지를 참조하세요.
다음 옵션을 사용하여 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, };
다음 옵션을 포함하는 $autoEncryptionOptions
객체 를 만듭니다.
키 볼트 컬렉션의 네임스페이스
이전 단계에서 정의된
$kmsProviders
객체
$autoEncryptionOptions = [ 'keyVaultNamespace' => $keyVaultNamespace, 'kmsProviders' => $kmsProviders, ];
다음 옵션을 사용하여 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> )
다음 옵션을 포함하는 EncryptedClientBuilder
객체 를 만듭니다.
ClientOptions
객체키 볼트 컬렉션의 네임스페이스
AWS KMS 자격 증명이 포함된
kms_providers
객체
let client_options = ClientOptions::builder().build(); let builder = Client::encrypted_builder( client_options, key_vault_namespace.clone(), kms_providers.clone() ).expect("");
클라이언트를 만들어 암호화된 컬렉션 설정하기
컬렉션의 데이터를 암호화 및 암호 해독하는 데 사용되는 클라이언트를 만들려면 연결 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, });
$encryptedClient = new \MongoDB\Client($uri, [], [ 'autoEncryption' => $autoEncryptionOptions, ]);
encrypted_client = MongoClient( uri, auto_encryption_opts=auto_encryption_options)
let encrypted_client = encrypted_client_builder .extra_options(Some(doc!{ "cryptSharedLibPath": env::var("SHARED_LIB_PATH").expect("Set SHARED_LIB_PATH environment variable to path to crypt_shared library") })) .key_vault_client(Client::with_uri_str(uri).await.unwrap()) .build() .await .unwrap();
애플리케이션 변수 할당
이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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의 네임스페이스입니다.
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값이 마침표로 구분된 이름을 가진 새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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 .
KMS_PROVIDER
환경 변수를 키'aws'
제공자(,,'azure'
'gcp'
또는)로'kmip'
설정합니다.$uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.$keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 . 의 값을
$keyVaultDatabaseName
로'encryption'
설정합니다.$keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를 로 설정하면
'__keyVault'
사용자 컬렉션 으로 오해하는 것을 방지할 수 있습니다.$keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를 마침표로
$keyVaultDatabaseName
$keyVaultCollectionName
구분된 및 변수의 값으로 설정합니다.$encryptedDatabaseName - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를(으)로
'medicalRecords'
설정합니다.$encryptedCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를(으)로
'patients'
설정합니다.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
$kmsProviderName = getenv('KMS_PROVIDER'); $uri = getenv('MONGODB_URI'); // Your connection URI $keyVaultDatabaseName = 'encryption'; $keyVaultCollectionName = '__keyVault'; $keyVaultNamespace = $keyVaultDatabaseName . '.' . $keyVaultCollectionName; $encryptedDatabaseName = 'medicalRecords'; $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_name
및key_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"
kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이 튜토리얼에서는 이 변수를
"local"
로 설정합니다.uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"encryption"
으로 설정합니다.key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를
"__keyVault"
로 설정하면 사용자 컬렉션 으로 오인하는 것을 방지할 수 있습니다.key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를
Namespace
구조체로 설정하고key_vault_database_name
및key_vault_collection_name
변수의 값을 전달합니다.encryption_database_name - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"medicalRecords"
으로 설정합니다.encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. Set this variable to
"patients"
.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
let kms_provider_name = "<KMS provider name>"; let uri = env::var("MONGODB_URI").expect("Set MONGODB_URI environment variable to your connection string"); let key_vault_database_name = "encryption"; let key_vault_collection_name = "__keyVault"; let key_vault_namespace = Namespace::new(key_vault_database_name, key_vault_collection_name); let encrypted_database_name = "medicalRecords"; let 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의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
KMS 자격 증명 추가
다음 구조로 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 }, };
$kmsProviders = [ 'azure' => [ 'tenantId' => getenv('AZURE_TENANT_ID'), // Your Azure tenant ID 'clientId' => getenv('AZURE_CLIENT_ID'), // Your Azure client ID 'clientSecret' => getenv('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 } }
kms_providers = vec![( KmsProvider::azure(), doc! { "tenantId": env::var("AZURE_TENANT_ID").expect("Set AZURE_TENANT_ID environment variable"), "clientId": env::var("AZURE_CLIENT_ID").expect("Set AZURE_CLIENT_ID environment variable"), "clientSecret": env::var("AZURE_CLIENT_SECRET").expect("AZURE_CLIENT_SECRET environment variable"), }, None, )];
CMK 자격 증명 추가
다음 구조로 고객 마스터 키 자격 증명 이 포함된 변수를 생성합니다. 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 };
$customerMasterKeyCredentials = [ 'keyVaultEndpoint' => getenv('AZURE_KEY_VAULT_ENDPOINT'), // Your Azure Key Vault Endpoint 'keyName' => getenv('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 }
let azure_master_key = AzureMasterKey::builder() .key_vault_endpoint(env::var("AZURE_KEY_VAULT_ENDPOINT").expect("Set the AZURE_KEY_VAULT_ENDPOINT environment variable")) .key_name(env::var("AZURE_KEY_NAME").expect("Set the AZURE_KEY_NAME environment variable")) .build();
암호화 클라이언트 만들기
암호화된 컬렉션의 데이터를 암호화됨 및 해독하기 위한 클라이언트 를 만들려면 연결 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, });
$encryptedClient = new \MongoDB\Client($uri, [], [ 'autoEncryption' => $autoEncryptionOptions, ]);
encrypted_client = MongoClient( uri, auto_encryption_opts=auto_encryption_options)
let encrypted_client = encrypted_client_builder .extra_options(Some(doc!{ "cryptSharedLibPath": env::var("SHARED_LIB_PATH").expect("Set SHARED_LIB_PATH environment variable to path to crypt_shared library") })) .key_vault_client(Client::with_uri_str(uri).await.unwrap()) .build() .await .unwrap();
애플리케이션 변수 할당
이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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의 네임스페이스입니다.
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값이 마침표로 구분된 이름을 가진 새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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 .
KMS_PROVIDER
환경 변수를 키'aws'
제공자(,,'azure'
'gcp'
또는)로'kmip'
설정합니다.$uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.$keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 . 의 값을
$keyVaultDatabaseName
로'encryption'
설정합니다.$keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를 로 설정하면
'__keyVault'
사용자 컬렉션 으로 오해하는 것을 방지할 수 있습니다.$keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를 마침표로
$keyVaultDatabaseName
$keyVaultCollectionName
구분된 및 변수의 값으로 설정합니다.$encryptedDatabaseName - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를(으)로
'medicalRecords'
설정합니다.$encryptedCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를(으)로
'patients'
설정합니다.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
$kmsProviderName = getenv('KMS_PROVIDER'); $uri = getenv('MONGODB_URI'); // Your connection URI $keyVaultDatabaseName = 'encryption'; $keyVaultCollectionName = '__keyVault'; $keyVaultNamespace = $keyVaultDatabaseName . '.' . $keyVaultCollectionName; $encryptedDatabaseName = 'medicalRecords'; $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_name
및key_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"
kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이 튜토리얼에서는 이 변수를
"local"
로 설정합니다.uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"encryption"
으로 설정합니다.key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를
"__keyVault"
로 설정하면 사용자 컬렉션 으로 오인하는 것을 방지할 수 있습니다.key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를
Namespace
구조체로 설정하고key_vault_database_name
및key_vault_collection_name
변수의 값을 전달합니다.encryption_database_name - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"medicalRecords"
으로 설정합니다.encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. Set this variable to
"patients"
.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
let kms_provider_name = "<KMS provider name>"; let uri = env::var("MONGODB_URI").expect("Set MONGODB_URI environment variable to your connection string"); let key_vault_database_name = "encryption"; let key_vault_collection_name = "__keyVault"; let key_vault_namespace = Namespace::new(key_vault_database_name, key_vault_collection_name); let encrypted_database_name = "medicalRecords"; let 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의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
KMS 자격 증명 추가
다음 구조로 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 }, };
$kmsProviders = [ 'gcp' => [ 'email' => getenv('GCP_EMAIL'), // Your GCP email 'privateKey' => getenv('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 } }
kms_providers = vec![( KmsProvider::gcp(), doc! { "email": env::var("GCP_EMAIL").expect("Set GCP_EMAIL environment variable"), "privateKey": env::var("GCP_PRIVATE_KEY").expect("Set GCP_PRIVATE_KEY environment variable"), }, None, )];
CMK 자격 증명 추가
다음 구조로 고객 마스터 키 자격 증명 이 포함된 변수를 생성합니다. 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 };
$customerMasterKeyCredentials = [ 'projectId' => getenv('GCP_PROJECT_ID'), // Your GCP Project ID 'location' => getenv('GCP_LOCATION'), // Your GCP Key Location 'keyRing' => getenv('GCP_KEY_RING'), // Your GCP Key Ring 'keyName' => getenv('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 }
let gcp_master_key = GcpMasterKey::builder() .project_id(env::var("GCP_PROJECT_ID").expect("Set the GCP_PROJECT_ID environment variable")) .location(env::var("GCP_LOCATION").expect("Set the GCP_LOCATION environment variable")) .key_ring(env::var("GCP_KEY_RING").expect("Set the GCP_KEY_RING environment variable")) .key_name(env::var("GCP_KEY_NAME").expect("Set the GCP_KEY_NAME environment variable")) .build();
암호화 클라이언트 만들기
암호화된 컬렉션의 데이터를 암호화됨 및 해독하기 위한 클라이언트 를 만들려면 연결 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, });
$encryptedClient = new \MongoDB\Client($uri, [], [ 'autoEncryption' => $autoEncryptionOptions, ]);
encrypted_client = MongoClient( uri, auto_encryption_opts=auto_encryption_options)
let encrypted_client = encrypted_client_builder .extra_options(Some(doc!{ "cryptSharedLibPath": env::var("SHARED_LIB_PATH").expect("Set SHARED_LIB_PATH environment variable to path to crypt_shared library") })) .key_vault_client(Client::with_uri_str(uri).await.unwrap()) .build() .await .unwrap();
애플리케이션 변수 할당
이 튜토리얼의 코드 샘플에서는 다음 변수를 사용하여 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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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의 네임스페이스입니다.
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값이 마침표로 구분된 이름을 가진 새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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 의 네임스페이스 입니다. 이 값을 마침표로 구분된
keyVaultDatabaseName
및keyVaultCollectionName
변수의 값으로 설정합니다.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 .
KMS_PROVIDER
환경 변수를 키'aws'
제공자(,,'azure'
'gcp'
또는)로'kmip'
설정합니다.$uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.$keyVaultDatabaseName - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 . 의 값을
$keyVaultDatabaseName
로'encryption'
설정합니다.$keyVaultCollectionName - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를 로 설정하면
'__keyVault'
사용자 컬렉션 으로 오해하는 것을 방지할 수 있습니다.$keyVaultNamespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를 마침표로
$keyVaultDatabaseName
$keyVaultCollectionName
구분된 및 변수의 값으로 설정합니다.$encryptedDatabaseName - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를(으)로
'medicalRecords'
설정합니다.$encryptedCollectionName - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를(으)로
'patients'
설정합니다.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
$kmsProviderName = getenv('KMS_PROVIDER'); $uri = getenv('MONGODB_URI'); // Your connection URI $keyVaultDatabaseName = 'encryption'; $keyVaultCollectionName = '__keyVault'; $keyVaultNamespace = $keyVaultDatabaseName . '.' . $keyVaultCollectionName; $encryptedDatabaseName = 'medicalRecords'; $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_name
및key_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"
kms_provider_name - 고객 마스터 키 를 저장 하는 데 사용하는 KMS 입니다. 이 튜토리얼에서는 이 변수를
"local"
로 설정합니다.uri - MongoDB deployment 연결 URI입니다.
MONGODB_URI
환경 변수에서 연결 URI를 설정합니다.key_vault_database_name - 데이터 암호화 키(DEK)가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"encryption"
으로 설정합니다.key_vault_collection_name - DEK가 저장될 MongoDB 의 컬렉션 입니다. 이 변수를
"__keyVault"
로 설정하면 사용자 컬렉션 으로 오인하는 것을 방지할 수 있습니다.key_vault_namespace - DEK가 저장될 MongoDB 의 네임스페이스 입니다. 이 변수를
Namespace
구조체로 설정하고key_vault_database_name
및key_vault_collection_name
변수의 값을 전달합니다.encryption_database_name - 암호화됨 데이터가 저장될 MongoDB 의 데이터베이스 입니다. 이 변수를
"medicalRecords"
으로 설정합니다.encryption_collection_name - 암호화됨 데이터가 저장될 MongoDB 의 컬렉션 입니다. Set this variable to
"patients"
.
다음 코드를 사용하여 이러한 변수를 선언할 수 있습니다.
let kms_provider_name = "<KMS provider name>"; let uri = env::var("MONGODB_URI").expect("Set MONGODB_URI environment variable to your connection string"); let key_vault_database_name = "encryption"; let key_vault_collection_name = "__keyVault"; let key_vault_namespace = Namespace::new(key_vault_database_name, key_vault_collection_name); let encrypted_database_name = "medicalRecords"; let 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의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
팁
환경 변수
이 튜토리얼의 샘플 코드는 설정해야 하는 환경 변수를 참조합니다. 또는 코드에서 직접 값을 바꿀 수도 있습니다.
이러한 환경 변수를 설정하는 방법을 알아보려면 README.md 를 참조하세요. 파일은 GitHub의 샘플 애플리케이션에 포함되어 있습니다.
KMS 자격 증명 추가
다음 구조로 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 }, };
$kmsProviders = [ 'kmip' => [ 'endpoint' => getenv('KMIP_ENDPOINT'), // Your KMIP endpoint ], ];
kms_provider_credentials = { "kmip": { "endpoint": os.environ['KMIP_KMS_ENDPOINT'] # Your KMIP KMS endpoint } }
kms_providers = vec![( KmsProvider::kmip(), doc! { "endpoint": env::var("KMIP_KMS_ENDPOINT").expect("Set KMIP_KMS_ENDPOINT environment variable") }, Some(get_kmip_tls_options()), )];
CMK 자격 증명 추가
다음 코드 예제에 표시된 대로 빈 객체를 만듭니다. 이렇게 하면 KMIP호환 키 제공자가 새 고객 마스터 키를 생성하라는 메시지가 표시됩니다.
customerMasterKeyCredentials = {};
var customerMasterKeyCredentials = new BsonDocument();
cmkCredentials := map[string]string{}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials = {};
$customerMasterKeyCredentials = [];
customer_master_key_credentials = {}
let kmip_master_key = KmipMasterKey::builder().build();
암호화 클라이언트 만들기
암호화된 컬렉션의 데이터를 암호화됨 및 해독하기 위한 클라이언트 를 만들려면 연결 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, });
$encryptedClient = new \MongoDB\Client($uri, [], [ 'autoEncryption' => $autoEncryptionOptions, ]);
encrypted_client = MongoClient( uri, auto_encryption_opts=auto_encryption_options)
let encrypted_client = encrypted_client_builder .extra_options(Some(doc!{ "cryptSharedLibPath": env::var("SHARED_LIB_PATH").expect("Set SHARED_LIB_PATH environment variable to path to crypt_shared library") })) .key_vault_client(Client::with_uri_str(uri).await.unwrap()) .build() .await .unwrap();
다음 단계
드라이버 및 종속성을 설치하고, 고객 마스터 키를 생성하고, 애플리케이션을 만든 후 개요: Queryable Encryption 을 사용하여 데이터 암호화 및 쿼리를 참조하세요.