Queryable Encryption が有効なアプリケーションを作成する
Overview
このガイドでは、 Queryable Encryption を実装してドキュメント フィールドを自動的に暗号化および復号化するアプリケーションを構築する方法について説明します。
このガイドの手順を完了すると、動作するクライアントアプリケーションが作成され、カスタマーマスターキーで暗号化されたフィールドを持つドキュメントを挿入できるようになります。
始める前に
アプリケーションを作成する前に、次の前提条件タスクが完了していることを確認してください。
完全なアプリケーション コード
サンプルアプリケーションの完全なコードを表示するには、言語セレクターでプログラミング言語を選択します。
各サンプルアプリケーションリポジトリには README.md
ファイルが含まれており、環境を設定し、アプリケーションを実行する方法を学習できます。
手順
以下で、キープロバイダーのタブを選択します。
アプリケーション変数を割り当てる
このチュートリアルのコード サンプルでは、次の変数を使用して 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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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_name
とkey_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を参照してください。 のサンプル アプリケーションに含まれる ファイル。
KMS 認証情報の追加
次の構造を持つ 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": { } }
CMK 認証情報を追加する
次の構造を持つ、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 }
自動暗号化オプションの設定
注意
自動暗号化オプション
自動暗号化オプションは、暗号化共有ライブラリに構成情報を提供し、暗号化されたフィールドにアクセスするときにアプリケーションの動作を変更します。
自動暗号化共有ライブラリの詳細については、「自動暗号化共有ライブラリのページ 」を参照してください。
次のオプションを使用して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> )
暗号化されたコレクションを設定するためのクライアントの作成
コレクション内のデータの暗号化と復号化に使用されるクライアントを作成するには、接続 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)
アプリケーション変数を割り当てる
このチュートリアルのコード サンプルでは、次の変数を使用して 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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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_name
とkey_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を参照してください。 のサンプル アプリケーションに含まれる ファイル。
KMS 認証情報の追加
次の構造を持つ 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 } }
CMK 認証情報を追加する
次の構造を持つ、CMK の認証情報を含む変数を作成します。 CMK を作成したときに記録した CMK の詳細を使用します。
customerMasterKeyCredentials = { keyVaultEndpoint: process.env["AZURE_KEY_VAULT_ENDPOINT"], // Your Azure Key Vault Endpoint keyName: process.env["AZURE_KEY_NAME"], // Your Azure Key Name };
var customerMasterKeyCredentials = new BsonDocument { { "keyVaultEndpoint", _appSettings["Azure:KeyVaultEndpoint"] }, // Your Azure Key Vault Endpoint { "keyName", _appSettings["Azure:KeyName"] } // Your Azure Key Name };
customerMasterKeyCredentials := map[string]string{ "keyVaultEndpoint": os.Getenv("AZURE_KEY_VAULT_ENDPOINT"), // Your Azure Key Vault Endpoint "keyName": os.Getenv("AZURE_KEY_NAME"), // Your Azure Key Name }
BsonDocument customerMasterKeyCredentials = new BsonDocument(); customerMasterKeyCredentials.put("provider", new BsonString(kmsProviderName)); customerMasterKeyCredentials.put("keyName", new BsonString(getEnv("AZURE_KEY_NAME"))); // Your Azure Key Vault Endpoint customerMasterKeyCredentials.put("keyVaultEndpoint", new BsonString(getEnv("AZURE_KEY_VAULT_ENDPOINT"))); // Your Azure Key Name
customerMasterKeyCredentials = { keyVaultEndpoint: process.env.AZURE_KEY_VAULT_ENDPOINT, // Your Azure Key Vault Endpoint keyName: process.env.AZURE_KEY_NAME, // Your Azure Key Name };
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 }
暗号化クライアントを作成する
暗号化されたコレクション内のデータを暗号化および復号化するためのクライアントを作成するには、接続 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)
アプリケーション変数を割り当てる
このチュートリアルのコード サンプルでは、次の変数を使用して 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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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_name
とkey_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を参照してください。 のサンプル アプリケーションに含まれる ファイル。
KMS 認証情報の追加
次の構造を持つ KMS 認証情報を含む変数を作成します。
kmsProviderCredentials = { gcp: { email: process.env["GCP_EMAIL"], // Your GCP email privateKey: process.env["GCP_PRIVATE_KEY"], // Your GCP private key }, };
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>(); var kmsOptions = new Dictionary<string, object> { { "email", _appSettings["Gcp:Email"] }, // Your GCP email { "privateKey", _appSettings["Gcp:PrivateKey"] } // Your GCP private key }; kmsProviderCredentials.Add("gcp", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{ "gcp": { "email": os.Getenv("GCP_EMAIL"), // GCP email "privateKey": os.Getenv("GCP_PRIVATE_KEY"), // GCP private key }, }
Map<String, Object> kmsProviderDetails = new HashMap<>(); kmsProviderDetails.put("email", getEnv("GCP_EMAIL")); // Your GCP email kmsProviderDetails.put("privateKey", getEnv("GCP_PRIVATE_KEY")); // Your GCP private key Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>(); kmsProviderCredentials.put("gcp", kmsProviderDetails);
kmsProviders = { gcp: { email: process.env.GCP_EMAIL, // Your GCP email privateKey: process.env.GCP_PRIVATE_KEY, // Your GCP private key }, };
kms_provider_credentials = { "gcp": { "email": os.environ['GCP_EMAIL'], # Your GCP email "privateKey": os.environ['GCP_PRIVATE_KEY'] # Your GCP private key } }
CMK 認証情報を追加する
次の構造を持つ、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 }
暗号化クライアントを作成する
暗号化されたコレクション内のデータを暗号化および復号化するためのクライアントを作成するには、接続 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)
アプリケーション変数を割り当てる
このチュートリアルのコード サンプルでは、次の変数を使用して 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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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 の名前空間。 これを、
keyVaultDatabaseName
とkeyVaultCollectionName
変数の値をピリオドで区切って設定します。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_name
とkey_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を参照してください。 のサンプル アプリケーションに含まれる ファイル。
KMS 認証情報の追加
次の構造を持つ KMIP 準拠のキー プロバイダーのエンドポイントを含む変数を作成します。
kmsProviderCredentials = { kmip: { endpoint: process.env["KMIP_KMS_ENDPOINT"], // Your KMIP KMS endpoint }, };
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>(); var kmsOptions = new Dictionary<string, object> { { "endpoint", _appSettings["Kmip:KmsEndpoint"] } // Your KMIP KMS endpoint }; kmsProviderCredentials.Add("kmip", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{ "kmip": { "endpoint": os.Getenv("KMIP_KMS_ENDPOINT"), // KMIP KMS endpoint }, }
Map<String, Object> kmsProviderDetails = new HashMap<>(); kmsProviderDetails.put("endpoint", getEnv("KMIP_KMS_ENDPOINT")); // Your KMIP KMS endpoint Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>(); kmsProviderCredentials.put("kmip", kmsProviderDetails);
kmsProviders = { kmip: { endpoint: process.env.KMIP_KMS_ENDPOINT, // Your KMIP KMS endpoint }, };
kms_provider_credentials = { "kmip": { "endpoint": os.environ['KMIP_KMS_ENDPOINT'] # Your KMIP KMS endpoint } }
CMK 認証情報を追加する
次のコード例に示すように、空のオブジェクトを作成します。 これにより、 KMIP準拠のキー プロバイダーに新しい CMK の生成が求められます。
customerMasterKeyCredentials = {};
var customerMasterKeyCredentials = new BsonDocument();
cmkCredentials := map[string]string{}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials = {};
customer_master_key_credentials = {}
暗号化クライアントを作成する
暗号化されたコレクション内のデータを暗号化および復号化するためのクライアントを作成するには、接続 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 を使用してデータを暗号化してクエリを実行する 」を参照してください。