Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / / / /

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

項目一覧

  • Overview
  • 始める前に
  • 手順
  • 次のステップ

このガイドでは、 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";
  • 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"

重要

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

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を参照してください。 のサンプル アプリケーションに含まれる ファイル。

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
},
};
kms_provider_credentials = {
"aws": {
"accessKeyId": os.environ['AWS_ACCESS_KEY_ID'], # Your AWS access key ID
"secretAccessKey": os.environ['AWS_SECRET_ACCESS_KEY'] # Your AWS secret access key
}
}

重要

ヒント: 本番環境で IAM ロールを使用して認証する

IAM ユーザーではなく IAM ロールを使用してアプリケーションを認証するには、KMS プロバイダー オブジェクトで認証情報の空のオブジェクトを指定します。これは、環境から認証情報を自動的に検索するようにドライバーに指示します。

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

次の構造を持つ、CMK の認証情報を含む変数を作成します。 CMK を作成した ときにステップ で記録した ARN とリージョンを使用します。1.3

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

注意

自動暗号化オプション

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

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

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

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

  • 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,
};

次のオプションを使用して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>
)
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,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)
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";
  • 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"

重要

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

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を参照してください。 のサンプル アプリケーションに含まれる ファイル。

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
},
};
kms_provider_credentials = {
"azure": {
"tenantId": os.environ['AZURE_TENANT_ID'], # Your Azure tenant ID
"clientId": os.environ['AZURE_CLIENT_ID'], # Your Azure client ID
"clientSecret": os.environ['AZURE_CLIENT_SECRET'] # Your Azure client secret
}
}
3

次の構造を持つ、CMK の認証情報を含む変数を作成します。 CMK を作成したときに記録した CMK の詳細を使用します。

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

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

const encryptedClient = Mongo(uri, autoEncryptionOptions);

重要: .NET/ C#ドライバー バージョン3.0 以降を使用している場合は、新しい をインスタンス化する前に、次のコードをアプリケーションに追加する必要があります。MongoClient

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

接続 URI と自動暗号化オプション を使用して、新しい MongoClient をインスタンス化します。

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

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

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

  • uri - MongoDB 配置接続 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";
  • 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"

重要

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

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を参照してください。 のサンプル アプリケーションに含まれる ファイル。

2

次の構造を持つ KMS 認証情報を含む変数を作成します。

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

次の構造を持つ、CMK の認証情報を含む変数を作成します。 CMK を作成したときに記録した認証情報を使用します。

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

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

const encryptedClient = Mongo(uri, autoEncryptionOptions);

重要: .NET/ C#ドライバー バージョン3.0 以降を使用している場合は、新しい をインスタンス化する前に、次のコードをアプリケーションに追加する必要があります。MongoClient

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

接続 URI と自動暗号化オプション を使用して、新しい MongoClient をインスタンス化します。

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

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

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

  • uri - MongoDB 配置接続 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";
  • 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"

重要

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

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を参照してください。 のサンプル アプリケーションに含まれる ファイル。

2

次の構造を持つ KMIP 準拠のキー プロバイダーのエンドポイントを含む変数を作成します。

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

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

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

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

const encryptedClient = Mongo(uri, autoEncryptionOptions);

重要: .NET/ C#ドライバー バージョン3.0 以降を使用している場合は、新しい をインスタンス化する前に、次のコードをアプリケーションに追加する必要があります。MongoClient

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

接続 URI と自動暗号化オプション を使用して、新しい MongoClient をインスタンス化します。

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

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

戻る

CMK の作成