Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
データベース マニュアル
/ / / / / /

Queryable Encryption が有効なアプリケーションを作成する

このガイドでは、 Queryable Encryption を実装してドキュメント フィールドを自動的に暗号化および復号化するアプリケーションを構築する方法について説明します。

このガイドの手順を完了すると、動作するクライアントアプリケーションが作成され、カスタマーマスターキーで暗号化されたフィールドを持つドキュメントを挿入できるようになります。

アプリケーションを作成する前に、次の前提条件タスクが完了していることを確認してください。

  1. Queryable Encryption と互換性のあるドライバーと依存関係のインストール

  2. Queryable Encryption ライブラリのインストールと構成

  3. CMK の作成

サンプルアプリケーションの完全なコードを表示するには、言語セレクターでプログラミング言語を選択します。

完全な mongosh アプリケーション

各サンプルアプリケーションリポジトリには README.mdファイルが含まれており、環境を設定し、アプリケーションを実行する方法を学習できます。

以下で、キープロバイダーのタブを選択します。

1

このチュートリアルのコード サンプルでは、次の変数を使用して Queryable Encryption ワークフローを実行します。

  • kmsProviderName - カスタマー マスター キーを保存するために使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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データベース 。 keyVaultDatabaseName"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存されるMongoDBのコレクション。 keyVaultCollectionName"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 新しいkeyVaultNamespace CollectionNamespaceオブジェクトにkeyVaultDatabaseName keyVaultCollectionNameを設定します。このオブジェクトは、 変数と 変数の値をピリオドで区切った値です。

  • encryptionDatabaseName -暗号化されたデータが保存されるMongoDBデータベース 。 encryptedDatabaseName"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 - CMK の保存に使用している KMS。KMS_PROVIDER 環境変数をキー'aws' プロバイダーに設定します。 、'azure''gcp' 、または'kmip'

  • $uri - MongoDBデプロイ接続 URI。 環境変数で接続 URIMONGODB_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 - CMK の保存に使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • key_vault_database_name - データ暗号化キー(DEK)が保存されるMongoDBデータベース 。 これを"encryption"に設定します。

  • key_vault_collection_name - DEK が保存されるMongoDBのコレクション。 これを"__keyVault"に設定します。

  • key_vault_namespace - DEK が保存されるMongoDBの名前空間。 これを、 key_vault_database_namekey_vault_collection_name変数の値をピリオドで区切って設定します。

  • encrypted_database_name - 暗号化されたデータが保存されるMongoDBデータベース 。 これを"medicalRecords"に設定します。

  • encrypted_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 - CMK の保存に使用している KMS。 このチュートリアルでは、この変数を"local"に設定します。

  • uri - MongoDBデプロイ接続 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 変数の値を渡します。

  • encrypted_database_name - 暗号化されたデータが保存される MongoDB のデータベース。 この変数を"medicalRecords"に設定します。

  • encrypted_collection_name - 暗号化されたデータが保存される MongoDB のコレクション。 この変数を"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";

重要

キーヴォールトコレクションの名前空間権限

Key Vault コレクションはencryption.__keyVault名前空間にあります。 アプリケーションが MongoDB への接続に使用するデータベースユーザーが、この名前空間に対する 読み取り /書き込み権限を持っていることを確認します。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

2

次の構造を持つ KMS 認証情報を含む変数を作成します。 Amazon Web ServicesIAM ユーザーを作成した ときにステップ で使用したアクセスキー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 プロバイダーを使用している場合は、認証情報を自動的に検索できません。

3

次の構造を持つ、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();
4

注意

自動暗号化オプション

自動暗号化オプションは、暗号化共有ライブラリに構成情報を提供し、暗号化されたフィールドにアクセスするときにアプリケーションの動作を変更します。

自動暗号化共有ライブラリの詳細については、「自動暗号化共有ライブラリのページ 」を参照してください。

次のオプションを使用してautoEncryptionOptionsオブジェクトを作成します。

  • キーヴォールト コレクションの名前空間

  • Amazon Web Services KMS認証情報を含む kmsProviderCredentials オブジェクト

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

次のオプションを使用してAutoEncryptionOptionsオブジェクトを作成します。

  • キーヴォールト コレクションの名前空間

  • Amazon Web Services 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オブジェクトを作成します。

  • キーヴォールト コレクションの名前空間

  • Amazon Web Services 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オブジェクトを作成します。

  • キーヴォールト コレクションの名前空間

  • Amazon Web Services 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オブジェクトを作成します。

  • キーヴォールト コレクションの名前空間

  • Amazon Web Services 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オブジェクトを作成します。

  • Amazon Web Services 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オブジェクト

  • キーヴォールト コレクションの名前空間

  • Amazon Web Services KMS認証情報を含む kms_providers オブジェクト

let client_options = ClientOptions::builder().build();
let builder = Client::encrypted_builder(
client_options,
key_vault_namespace.clone(),
kms_providers.clone()
).expect("");
5

コレクション内のデータの暗号化と復号化に使用されるクライアントを作成するには、接続 URI と 自動暗号化オプションを使用して新しいMongoClientをインスタンス化します。

const encryptedClient = Mongo(uri, autoEncryptionOptions);

重要: .NET/ C#ドライバー バージョン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();
1

このチュートリアルのコード サンプルでは、次の変数を使用して Queryable Encryption ワークフローを実行します。

  • kmsProviderName - カスタマー マスター キーを保存するために使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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データベース 。 keyVaultDatabaseName"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存されるMongoDBのコレクション。 keyVaultCollectionName"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 新しいkeyVaultNamespace CollectionNamespaceオブジェクトにkeyVaultDatabaseName keyVaultCollectionNameを設定します。このオブジェクトは、 変数と 変数の値をピリオドで区切った値です。

  • encryptionDatabaseName -暗号化されたデータが保存されるMongoDBデータベース 。 encryptedDatabaseName"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 - CMK の保存に使用している KMS。KMS_PROVIDER 環境変数をキー'aws' プロバイダーに設定します。 、'azure''gcp' 、または'kmip'

  • $uri - MongoDBデプロイ接続 URI。 環境変数で接続 URIMONGODB_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 - CMK の保存に使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • key_vault_database_name - データ暗号化キー(DEK)が保存されるMongoDBデータベース 。 これを"encryption"に設定します。

  • key_vault_collection_name - DEK が保存されるMongoDBのコレクション。 これを"__keyVault"に設定します。

  • key_vault_namespace - DEK が保存されるMongoDBの名前空間。 これを、 key_vault_database_namekey_vault_collection_name変数の値をピリオドで区切って設定します。

  • encrypted_database_name - 暗号化されたデータが保存されるMongoDBデータベース 。 これを"medicalRecords"に設定します。

  • encrypted_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 - CMK の保存に使用している KMS。 このチュートリアルでは、この変数を"local"に設定します。

  • uri - MongoDBデプロイ接続 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 変数の値を渡します。

  • encrypted_database_name - 暗号化されたデータが保存される MongoDB のデータベース。 この変数を"medicalRecords"に設定します。

  • encrypted_collection_name - 暗号化されたデータが保存される MongoDB のコレクション。 この変数を"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";

重要

キーヴォールトコレクションの名前空間権限

Key Vault コレクションはencryption.__keyVault名前空間にあります。 アプリケーションが MongoDB への接続に使用するデータベースユーザーが、この名前空間に対する 読み取り /書き込み権限を持っていることを確認します。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

2

次の構造を持つ KMS 認証情報を含む変数を作成します。 アプリケーションを 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,
)];
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
};
$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();
4

暗号化されたコレクション内のデータを暗号化および復号化するためのクライアントを作成するには、接続 URI と 自動暗号化オプションを使用して新しいMongoClientをインスタンス化します。

const encryptedClient = Mongo(uri, autoEncryptionOptions);

重要: .NET/ C#ドライバー バージョン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();
1

このチュートリアルのコード サンプルでは、次の変数を使用して Queryable Encryption ワークフローを実行します。

  • kmsProviderName - カスタマー マスター キーを保存するために使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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データベース 。 keyVaultDatabaseName"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存されるMongoDBのコレクション。 keyVaultCollectionName"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 新しいkeyVaultNamespace CollectionNamespaceオブジェクトにkeyVaultDatabaseName keyVaultCollectionNameを設定します。このオブジェクトは、 変数と 変数の値をピリオドで区切った値です。

  • encryptionDatabaseName -暗号化されたデータが保存されるMongoDBデータベース 。 encryptedDatabaseName"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 - CMK の保存に使用している KMS。KMS_PROVIDER 環境変数をキー'aws' プロバイダーに設定します。 、'azure''gcp' 、または'kmip'

  • $uri - MongoDBデプロイ接続 URI。 環境変数で接続 URIMONGODB_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 - CMK の保存に使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • key_vault_database_name - データ暗号化キー(DEK)が保存されるMongoDBデータベース 。 これを"encryption"に設定します。

  • key_vault_collection_name - DEK が保存されるMongoDBのコレクション。 これを"__keyVault"に設定します。

  • key_vault_namespace - DEK が保存されるMongoDBの名前空間。 これを、 key_vault_database_namekey_vault_collection_name変数の値をピリオドで区切って設定します。

  • encrypted_database_name - 暗号化されたデータが保存されるMongoDBデータベース 。 これを"medicalRecords"に設定します。

  • encrypted_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 - CMK の保存に使用している KMS。 このチュートリアルでは、この変数を"local"に設定します。

  • uri - MongoDBデプロイ接続 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 変数の値を渡します。

  • encrypted_database_name - 暗号化されたデータが保存される MongoDB のデータベース。 この変数を"medicalRecords"に設定します。

  • encrypted_collection_name - 暗号化されたデータが保存される MongoDB のコレクション。 この変数を"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";

重要

キーヴォールトコレクションの名前空間権限

Key Vault コレクションはencryption.__keyVault名前空間にあります。 アプリケーションが MongoDB への接続に使用するデータベースユーザーが、この名前空間に対する 読み取り /書き込み権限を持っていることを確認します。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 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
},
};
$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,
)];
3

次の構造を持つ、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();
4

暗号化されたコレクション内のデータを暗号化および復号化するためのクライアントを作成するには、接続 URI と 自動暗号化オプションを使用して新しいMongoClientをインスタンス化します。

const encryptedClient = Mongo(uri, autoEncryptionOptions);

重要: .NET/ C#ドライバー バージョン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();
1

このチュートリアルのコード サンプルでは、次の変数を使用して Queryable Encryption ワークフローを実行します。

  • kmsProviderName - カスタマー マスター キーを保存するために使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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データベース 。 keyVaultDatabaseName"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存されるMongoDBのコレクション。 keyVaultCollectionName"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 新しいkeyVaultNamespace CollectionNamespaceオブジェクトにkeyVaultDatabaseName keyVaultCollectionNameを設定します。このオブジェクトは、 変数と 変数の値をピリオドで区切った値です。

  • encryptionDatabaseName -暗号化されたデータが保存されるMongoDBデータベース 。 encryptedDatabaseName"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • keyVaultDatabaseName - データ暗号化キー(DEK)が保存される MongoDB database。 これを"encryption"に設定します。

  • keyVaultCollectionName - DEK が保存される MongoDB のコレクション。 これを"__keyVault"に設定します。

  • keyVaultNamespace - DEK が保存される MongoDB の名前空間。 これを、 keyVaultDatabaseNamekeyVaultCollectionName変数の値をピリオドで区切って設定します。

  • encryptionDatabaseName -暗号化されたデータが保存される MongoDB database。 これを"medicalRecords"に設定します。

  • encryptedCollectionName - 暗号化されたデータが保存される 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 - CMK の保存に使用している KMS。KMS_PROVIDER 環境変数をキー'aws' プロバイダーに設定します。 、'azure''gcp' 、または'kmip'

  • $uri - MongoDBデプロイ接続 URI。 環境変数で接続 URIMONGODB_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 - CMK の保存に使用する KMS。 これをキー プロバイダーに設定します。 "aws""azure""gcp" 、または"kmip"

  • uri - MongoDB 配置接続 URI。 MONGODB_URI環境変数で接続 URI を設定するか、値を直接置き換えます。

  • key_vault_database_name - データ暗号化キー(DEK)が保存されるMongoDBデータベース 。 これを"encryption"に設定します。

  • key_vault_collection_name - DEK が保存されるMongoDBのコレクション。 これを"__keyVault"に設定します。

  • key_vault_namespace - DEK が保存されるMongoDBの名前空間。 これを、 key_vault_database_namekey_vault_collection_name変数の値をピリオドで区切って設定します。

  • encrypted_database_name - 暗号化されたデータが保存されるMongoDBデータベース 。 これを"medicalRecords"に設定します。

  • encrypted_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 - CMK の保存に使用している KMS。 このチュートリアルでは、この変数を"local"に設定します。

  • uri - MongoDBデプロイ接続 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 変数の値を渡します。

  • encrypted_database_name - 暗号化されたデータが保存される MongoDB のデータベース。 この変数を"medicalRecords"に設定します。

  • encrypted_collection_name - 暗号化されたデータが保存される MongoDB のコレクション。 この変数を"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";

重要

キーヴォールトコレクションの名前空間権限

Key Vault コレクションはencryption.__keyVault名前空間にあります。 アプリケーションが MongoDB への接続に使用するデータベースユーザーが、この名前空間に対する 読み取り /書き込み権限を持っていることを確認します。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 README.md Githubを参照してください。 のサンプル アプリケーションに含まれる ファイル。

Tip

環境変数

このチュートリアルのサンプル コードは、設定する必要がある環境変数を参照します。 あるいは、コード内で値を直接置き換えることもできます。

これらの環境変数を設定する方法については、 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
},
};
$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()),
)];
3

次のコード例に示すように、空のオブジェクトを作成します。 これにより、 KMIP準拠のキー プロバイダーに新しい CMK の生成が求められます。

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();
4

暗号化されたコレクション内のデータを暗号化および復号化するためのクライアントを作成するには、接続 URI と 自動暗号化オプションを使用して新しいMongoClientをインスタンス化します。

const encryptedClient = Mongo(uri, autoEncryptionOptions);

重要: .NET/ C#ドライバー バージョン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();

ドライバーと依存関係のインストール、CMK の作成、アプリケーションの作成が完了したら、「概要: Queryable Encryption を使用してデータを暗号化してクエリを実行する 」を参照してください。

戻る

CMK の作成

項目一覧