MongoDB EnterpriseまたはMongoDB Atlasクラスターを使用する場合は、mongosh を使用してQueryable Encryptionまたはクライアント側フィールドレベル暗号化を構成し、暗号化サポートに接続できます。 Queryable Encryptionと CSFLE はどちらも、フィールド値の暗号化と復号化をサポートするためにデータ暗号化キーを使用し、この暗号化のキーマテリアルを KMS(Key Management Service)に保存します。
mongosh は、 Queryable Encryptionと CSFLE で使用する次の KMS プロバイダーをサポートしています。
Amazon Web Services KMS
Azure Key Vault
Google Cloud Platform KMS
ローカルで管理されるキーファイル
データ暗号化キーの作成
次の手順では、mongosh を使用して、フィールドレベル暗号化のデータ暗号化キーを作成します。
以下のタブを使用して、配置に適したKMSを選択します。
mongoshshell を起動します。
--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。
mongosh --nodb
暗号化構成を作成します。
Amazon Web Services KMSのクライアント側フィールドレベル暗号化を構成するには、 Amazon Web ServicesアクセスキーIDとそれに関連付けられたシークレットアクセスキーが必要です。 Amazon Web Servicesアクセス キーは、 KMSサービスに対するすべての リスト および 読み取り 権限を持つ IAM ユーザーに対応する必要があります。
mongoshでは、次の認証情報を含むクライアント側のフィールドレベル暗号化構成を保存するための新しいAutoEncryptionOpts変数が作成されます。
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : "YOUR_AWS_ACCESS_KEY_ID", "secretAccessKey" : "YOUR_AWS_SECRET_ACCESS_KEY" } } }
必要に応じて、 YOUR_AWS_ACCESS_KEY_IDとYOUR_AWS_SECRET_ACCESS_KEYの値を入力します。
暗号化サポートで接続します。
mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", autoEncryptionOpts )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
キーヴォールト オブジェクトを作成します。
keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
暗号化キーを作成します。
シェルメソッドを使用してデータ暗号化のキーを作成します。createKey()
keyVault.createKey( "aws", { region: "regionname", key: "awsarn" }, [ "keyAlternateName" ] )
以下の条件に一致するもの。
構成された Amazon Web Services KMS を指定するには、最初のパラメータが
"aws"である必要があります。2 番目のパラメーターは、次の内容を含むドキュメントである必要があります。
接続しているAmazon Web Servicesのリージョン(例:
us-west-2Amazon Web Services CMK への Amazon リソース番号(ARN)。
3
keyAltNamesつ目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault()の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNamesにユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。
成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。
getKey()を使用して、UUID で作成されたキーを取得するか、getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。
mongoshshell を起動します。
--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。
mongosh --nodb
暗号化構成を作成します。
Azure Key Vault のクライアント側フィールド レベル暗号化を構成するには、有効なテナント ID、クライアント ID、およびクライアント シークレットが必要です。
mongoshでは、次の認証情報を含むクライアント側のフィールドレベル暗号化構成を保存するための新しいAutoEncryptionOpts変数が作成されます。
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : "YOUR_TENANT_ID", "clientId" : "YOUR_CLIENT_ID", "clientSecret" : "YOUR_CLIENT_SECRET" } } }
必要に応じて、 YOUR_TENANT_ID 、 YOUR_CLIENT_ID 、 YOUR_CLIENT_SECRETの値を入力します。
暗号化サポートで接続します。
mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", autoEncryptionOpts )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
キーヴォールト オブジェクトを作成します。
keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
暗号化キーを作成します。
シェルメソッドを使用してデータ暗号化のキーを作成します。createKey()
keyVault.createKey( "azure", { keyName: "keyvaultname", keyVaultEndpoint: "endpointname" }, [ "keyAlternateName" ] )
以下の条件に一致するもの。
構成された Azure Key Vault を指定するには、最初のパラメータが
"azure"である必要があります。2 番目のパラメーターは、次の要素を含むドキュメントである必要があります。
Azure Key Vault の名前
使用する Azure Key Vault の DNS 名(例:
my-key-vault.vault.azure.net)
3
keyAltNamesつ目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault()の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNamesにユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。
成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。
getKey()を使用して、UUID で作成されたキーを取得するか、getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。
mongoshshell を起動します。
--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。
mongosh --nodb
暗号化構成を作成します。
GCP KMS のクライアント側フィールドレベル暗号化を構成するには、GCP メールとそれに関連付けられた秘密キーが必要です。
mongoshでは、次の認証情報を含むクライアント側のフィールドレベル暗号化構成を保存するための新しいAutoEncryptionOpts変数が作成されます。
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : "YOUR_GCP_EMAIL", "privateKey" : "YOUR_GCP_PRIVATEKEY" } } }
必要に応じて、 YOUR_GCP_EMAILとYOUR_GCP_PRIVATEKEYの値を入力します。
暗号化サポートで接続します。
mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", autoEncryptionOpts )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
キーヴォールト オブジェクトを作成します。
keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
暗号化キーを作成します。
シェルメソッドを使用してデータ暗号化のキーを作成します。createKey()
keyVault.createKey( "gcp", { projectId: "projectid", location: "locationname", keyRing: "keyringname", keyName: "keyname" }, [ "keyAlternateName" ] )
以下の条件に一致するもの。
構成された を指定するには、最初のパラメータは である 必要
"gcp"Google Cloud PlatformKMS があります。2 つ目のパラメーターは、次を含むドキュメントである必要があります:
projectidは、GCP プロジェクトの名前です(例:my-projectlocationnameは、KMS キーリングのロケーションです(例:globalkeyringnameは、KMS キーリングの名前です(例:my-keyringkeynameは、キーの名前です。
3
keyAltNamesつ目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault()の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNamesにユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。
成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。
getKey()を使用して、UUID で作成されたキーを取得するか、getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。
mongoshshell を起動します。
--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。
mongosh --nodb
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成を保存するための新しい AutoEncryptionOpts 変数が作成され、MY_LOCAL_KEY がステップ で生成されたキーに置き換えられます。1
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, "MY_LOCAL_KEY") } } }
暗号化サポートで接続します。
mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", autoEncryptionOpts )
キーヴォールト オブジェクトを作成します。
keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
暗号化キーを作成します。
シェルメソッドを使用してデータ暗号化のキーを作成します。createKey()
keyVault.createKey( "local", [ "keyAlternateName" ] )
以下の条件に一致するもの。
構成されたローカル マネージド キーを指定するには、最初のパラメータが
localである必要があります。2
keyAltNames番目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault()の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNamesにユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。
成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。
getKey()を使用して、UUID で作成されたキーを取得するか、getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。