AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

フィールドレベルの暗号化

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を選択します。

1

--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。

mongosh --nodb
2

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の値を入力します。

3

mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)

replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。

4

keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();
5

シェルメソッドを使用してデータ暗号化のキーを作成します。createKey()

keyVault.createKey(
"aws",
{ region: "regionname", key: "awsarn" },
[ "keyAlternateName" ]
)

以下の条件に一致するもの。

  • 構成された Amazon Web Services KMS を指定するには、最初のパラメータが"aws"である必要があります。

  • 2 番目のパラメーターは、次の内容を含むドキュメントである必要があります。

  • 3keyAltNames つ目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault() の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNames にユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。

成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。

  • getKey() を使用して、UUID で作成されたキーを取得するか、

  • getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。

1

--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。

mongosh --nodb
2

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の値を入力します。

3

mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)

replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。

4

keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();
5

シェルメソッドを使用してデータ暗号化のキーを作成します。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 )

  • 3keyAltNames つ目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault() の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNames にユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。

成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。

  • getKey() を使用して、UUID で作成されたキーを取得するか、

  • getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。

1

--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。

mongosh --nodb
2

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の値を入力します。

3

mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)

replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。

4

keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();
5

シェルメソッドを使用してデータ暗号化のキーを作成します。createKey()

keyVault.createKey(
"gcp",
{ projectId: "projectid",
location: "locationname",
keyRing: "keyringname",
keyName: "keyname"
},
[ "keyAlternateName" ]
)

以下の条件に一致するもの。

  • 構成された を指定するには、最初のパラメータは である 必要"gcp"Google Cloud PlatformKMS があります。

  • 2 つ目のパラメーターは、次を含むドキュメントである必要があります:

    • projectid は、GCP プロジェクトの名前です(例: my-project

    • locationname は、KMS キーリングのロケーションです(例: global

    • keyringname は、KMS キーリングの名前です(例: my-keyring

    • keyname は、キーの名前です。

  • 3keyAltNames つ目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault() の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNames にユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。

成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。

  • getKey() を使用して、UUID で作成されたキーを取得するか、

  • getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。

1

--nodbオプションを使用して、実行中のデータベースに接続せずにmongoshセッションを作成します。

mongosh --nodb
2

ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、基本的に64でエンコードされた96バイトの string を指定する必要があります。 これらの要件に一致するキーを生成するには、 mongoshで次のコマンドを実行します。

crypto.randomBytes(96).toString('base64')

このキーは次のステップで必要になります。

3

mongoshでは、クライアント側のフィールドレベル暗号化構成を保存するための新しい AutoEncryptionOpts 変数が作成され、MY_LOCAL_KEY がステップ で生成されたキーに置き換えられます。1

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, "MY_LOCAL_KEY")
}
}
}
4

mongoshでは、 コンストラクターを使用して、ターゲットMongo() クラスターへのデータベース接続を確立します。 AutoEncryptionOptsドキュメントを コンストラクターの 2Mongo() 番目のパラメーターとして指定して、クライアント側のフィールドレベル暗号化の接続を構成します。

csfleDatabaseConnection = Mongo(
"mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
autoEncryptionOpts
)
5

keyVaultシェルメソッドを使用してgetKeyVault() オブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();
6

シェルメソッドを使用してデータ暗号化のキーを作成します。createKey()

keyVault.createKey(
"local",
[ "keyAlternateName" ]
)

以下の条件に一致するもの。

  • 構成されたローカル マネージド キーを指定するには、最初のパラメータがlocalである必要があります。

  • 2 keyAltNames番目のパラメータは、データ暗号化のキーの 1 つ以上のgetKeyVault() の配列にすることができます。各キーの代替名は一意である必要があります。 はkeyAltNames にユニークインデックスを作成し、フィールドに一意性を強制します(未作成の場合)。キーの代替名により、データ暗号化のキーを見つけやすくなります。

成功した場合、createKey() は新しいデータ暗号化のキーの UUID を返します。新しいデータ暗号化のキードキュメントをキーヴォールトから検索するには、次のいずれかを実行します。

  • getKey() を使用して、UUID で作成されたキーを取得するか、

  • getKeyByAltName()別名でキーを検索するには、 を使用します(指定されている場合)。

このページを評価