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

データ暗号化キーの管理

項目一覧

  • データ暗号化キーの作成
  • データ暗号化キーの別名を管理する
  • データ暗号化キーの削除
  • 既存のデータ暗号化キーの取得

バージョン 4.2の新機能

クライアント側のフィールドレベル暗号化では、暗号化と復号化にデータ暗号化キーが使用されます。 mongoshヘルパー メソッド getKeyVault()は、データ暗号化のキーを作成、変更、削除するためのキーヴォールト オブジェクトを返します。

このページでは、 mongoshを使用したクライアント側のフィールドレベルの暗号化について説明し、公式の MongoDB 4.2 + 互換ドライバーを参照することはありませ。 ドライバー固有のデータ暗号化キー管理のメソッドと構文については、関連するドキュメントを参照してください。

次の手順では、 mongoshを使用して、クライアント側のフィールドレベルの暗号化と復号化で使用するデータ暗号化キーを作成します。 4.2 + 互換ドライバーを使用したデータ暗号化キー管理のガイダンスについては、代わりにドライバーのドキュメントを参照してください。

以下のタブを使用して、配置に適した KMSを選択します。

1

Amazon Web Services KMSのクライアント側フィールドレベル暗号化を構成するには、 Amazon Web ServicesアクセスキーIDとそれに関連付けられたシークレットアクセスキーが必要です。 Amazon Web Servicesアクセス キーは、 KMSサービスに対するすべての リスト および 読み取り 権限を持つ IAM ユーザーに対応する必要があります。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID'
var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 オプションは、 mongosh内の--eval 変数と 変数を対応する環境変数の値に設定します。AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY指定された変数は、Amazon Web ServicesCLI によってもサポートされています。

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

keyVaultオブジェクトのKeyVault.createKey()メソッドを使用して、キーヴォールトに新しいデータ暗号化キーを作成します。

keyVault.createKey(
"aws",
"arn:aws:kms:region:account:key/keystring",
[ "keyAlternateName" ]
)

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

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

  • 2 番目のパラメーター は 、完全な Amazon リソース名(ARN) である必要があります カスタマー マスター キー(CMK)のMongoDB は、指定された CMK を使用してデータ暗号化キーを暗号化します。

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

成功した場合、 createKey()は新しいデータ暗号化キーのUUIDを返します。 UUIDは、データ暗号化のキーを一意に識別するサブタイプ4を持つ BSON Binary (BinData)オブジェクトです。 UUID string は、基礎となるバイナリ データの 16 進数表現です。

クライアント側のフィールドレベルの自動暗号化を構成するために、公式の MongoDB ドライバーにデータ暗号化キーを提供する場合は、 UUID string のbase64表現を使用する必要があります。

mongoshで次の操作を実行すると、 UUIDの 16 進 string をbase64表現に変換できます。

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

上記のcreateKey()から返された、または既存のデータ暗号化キーの取得 で説明されているように、このコマンドに独自のデータ暗号化キーのUUIDを指定します。

1

Azure Key Vault のクライアント側フィールド レベル暗号化を構成するには、有効なテナント ID、クライアント ID、およびクライアント シークレットが必要です。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_CLIENT_SECRET

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var AZURE_TENANT_ID = '$AZURE_TENANT_ID'
var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID'
var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 --evalオプションは、 mongosh内のAZURE_TENANT_IDAZURE_CLIENT_ID 、およびAZURE_CLIENT_SECRET変数を対応する環境変数の値に設定します。

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

keyVaultオブジェクトのKeyVault.createKey()メソッドを使用して、キーヴォールトに新しいデータ暗号化キーを作成します。

keyVault.createKey(
"azure",
{ keyName: "keyvaultname", keyVaultEndpoint: "endpointname" },
[ "keyAlternateName" ]
)

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

  • 構成された Azure Key Vault を指定するには、最初のパラメータが"azure"である必要があります。

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

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

成功した場合、 createKey()は新しいデータ暗号化キーのUUIDを返します。 UUIDは、データ暗号化のキーを一意に識別するサブタイプ4を持つ BSON Binary (BinData)オブジェクトです。 UUID string は、基礎となるバイナリ データの 16 進数表現です。

クライアント側のフィールドレベルの自動暗号化を構成するために、公式の MongoDB ドライバーにデータ暗号化キーを提供する場合は、 UUID string のbase64表現を使用する必要があります。

mongoshで次の操作を実行すると、 UUIDの 16 進 string をbase64表現に変換できます。

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

上記のcreateKey()から返された、または既存のデータ暗号化キーの取得 で説明されているように、このコマンドに独自のデータ暗号化キーのUUIDを指定します。

1

GCP KMS のクライアント側フィールドレベル暗号化を構成するには、GCP メールとそれに関連付けられた秘密キーが必要です。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • GCP_EMAIL

  • GCP_PRIVATEKEY

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var GCP_EMAIL = '$GCP_EMAIL'
var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 オプションは、 mongosh内の--eval 変数と 変数を対応する環境変数の値に設定します。GCP_EMAILGCP_PRIVATEKEY

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

keyVaultオブジェクトのKeyVault.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 は、キーの名前です。

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

成功した場合、 createKey()は新しいデータ暗号化キーのUUIDを返します。 UUIDは、データ暗号化のキーを一意に識別するサブタイプ4を持つ BSON Binary (BinData)オブジェクトです。 UUID string は、基礎となるバイナリ データの 16 進数表現です。

クライアント側のフィールドレベルの自動暗号化を構成するために、公式の MongoDB ドライバーにデータ暗号化キーを提供する場合は、 UUID string のbase64表現を使用する必要があります。

mongoshで次の操作を実行すると、 UUIDの 16 進 string をbase64表現に変換できます。

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

上記のcreateKey()から返された、または既存のデータ暗号化キーの取得 で説明されているように、このコマンドに独自のデータ暗号化キーのUUIDを指定します。

1

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

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

次の操作では、前述の要件を満たすキーを生成し、それをユーザーの~/.profileに追加します。 キーDEV_LOCAL_KEYがすでに存在する場合は、この操作をスキップします。

echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile

ホスト オペレーティング システムでは、ロードされた環境変数を更新するためにログアウトして再度ログインする必要がある場合があります。 または、コマンドsource ~/.profileを使用して shell を手動で更新することもできます。

注意

特定のホスト オペレーティング システムまたは shell によって、永続的な環境変数を設定するための手順が異なる場合があります。 必要に応じて、より具体的な手順については、ホスト OS または shell のドキュメントを参照してください。

2

mongosh--eval--shell、 オプションを使用して--nodb セッションを作成します。

mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshが自動的に開きます。 --evalオプションは、 mongoshLOCAL_KEY変数を対応する環境変数の値に設定します。

3

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

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

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

5

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

6

keyVaultオブジェクトのKeyVault.createKey()メソッドを使用して、キーヴォールトに新しいデータ暗号化キーを作成します。

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

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

  • 構成済みのローカルで管理されるキーを指定するには、最初のパラメータはlocalである必要があります。

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

成功した場合、 createKey()は新しいデータ暗号化キーのUUIDを返します。 UUIDは、データ暗号化のキーを一意に識別するサブタイプ4を持つ BSON Binary (BinData)オブジェクトです。 UUID string は、基礎となるバイナリ データの 16 進数表現です。

クライアント側のフィールドレベルの自動暗号化を構成するために、公式の MongoDB ドライバーにデータ暗号化キーを提供する場合は、 UUID string のbase64表現を使用する必要があります。

mongoshで次の操作を実行すると、 UUIDの 16 進 string をbase64表現に変換できます。

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

上記のcreateKey()から返された、または既存のデータ暗号化キーの取得 で説明されているように、このコマンドに独自のデータ暗号化キーのUUIDを指定します。

次の手順では、 mongoshを使用してデータ暗号化キーの代替名を管理します。 4.2 + 互換ドライバーを使用したデータ暗号化キー管理のガイダンスについては、代わりにドライバーのドキュメントを参照してください。

上記の 「mongosh データ暗号化キーの作成 」 手順から構成された セッション内にある場合は、ステップ5 に直接スキップできます。

以下のタブを使用して、配置に適したKMSを選択します。

1

Amazon Web Services KMSのクライアント側フィールドレベル暗号化を構成するには、 Amazon Web ServicesアクセスキーIDとそれに関連付けられたシークレットアクセスキーが必要です。 Amazon Web Servicesアクセス キーは、 KMSサービスに対するすべての リスト および 読み取り 権限を持つ IAM ユーザーに対応する必要があります。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID'
var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 オプションは、 mongosh内の--eval 変数と 変数を対応する環境変数の値に設定します。AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY指定された変数は、Amazon Web ServicesCLI によってもサポートされています。

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

既存のキー代替名を追加または削除するには、以下の手順を使用します。

キーの代替名を追加する

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加するに、 keyAltNamesに一意のインデックスが存在することを検証します。 一意なインデックスが削除された場合は、キーの代替名を追加する前に一意なインデックスを 再作成 する 必要 があります。

データ暗号化キーに新しい代替名を追加するには、 KeyVault.addKeyAlternateName()を使用します。

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは一意の string である必要があります。 getKeyVault()keyAltNamesに一意のインデックスを作成し、キー代替名の一意性を強制します。

KeyVault.addKeyAlternateName()は、変更のデータ暗号化キー ドキュメントを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

キーの別名を削除

データ暗号化キーからキーの別名を削除するには、 KeyVault.removeKeyAlternateName()を使用します。

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは string のキーの代替名である必要があります。

KeyVault.removeKeyAlternateName()は、変更のデータ暗号化キーを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

1

Azure Key Vault のクライアント側フィールド レベル暗号化を構成するには、有効なテナント ID、クライアント ID、およびクライアント シークレットが必要です。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_CLIENT_SECRET

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var AZURE_TENANT_ID = '$AZURE_TENANT_ID'
var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID'
var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 --evalオプションは、 mongosh内のAZURE_TENANT_IDAZURE_CLIENT_ID 、およびAZURE_CLIENT_SECRET変数を対応する環境変数の値に設定します。

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

既存のキー代替名を追加または削除するには、以下の手順を使用します。

キーの代替名を追加する

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加するに、 keyAltNamesに一意のインデックスが存在することを検証します。 一意なインデックスが削除された場合は、キーの代替名を追加する前に一意なインデックスを 再作成 する 必要 があります。

データ暗号化キーに新しい代替名を追加するには、 KeyVault.addKeyAlternateName()を使用します。

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは一意の string である必要があります。 getKeyVault()keyAltNamesに一意のインデックスを作成し、キー代替名の一意性を強制します。

KeyVault.addKeyAlternateName()は、変更のデータ暗号化キー ドキュメントを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

キーの別名を削除

データ暗号化キーからキーの別名を削除するには、 KeyVault.removeKeyAlternateName()を使用します。

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは string のキーの代替名である必要があります。

KeyVault.removeKeyAlternateName()は、変更のデータ暗号化キーを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

1

GCP KMS のクライアント側フィールドレベル暗号化を構成するには、GCP メールとそれに関連付けられた秘密キーが必要です。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • GCP_EMAIL

  • GCP_PRIVATEKEY

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var GCP_EMAIL = '$GCP_EMAIL'
var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 オプションは、 mongosh内の--eval 変数と 変数を対応する環境変数の値に設定します。GCP_EMAILGCP_PRIVATEKEY

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

既存のキー代替名を追加または削除するには、以下の手順を使用します。

キーの代替名を追加する

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加するに、 keyAltNamesに一意のインデックスが存在することを検証します。 一意なインデックスが削除された場合は、キーの代替名を追加する前に一意なインデックスを 再作成 する 必要 があります。

データ暗号化キーに新しい代替名を追加するには、 KeyVault.addKeyAlternateName()を使用します。

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは一意の string である必要があります。 getKeyVault()keyAltNamesに一意のインデックスを作成し、キー代替名の一意性を強制します。

KeyVault.addKeyAlternateName()は、変更のデータ暗号化キー ドキュメントを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

キーの別名を削除

データ暗号化キーからキーの別名を削除するには、 KeyVault.removeKeyAlternateName()を使用します。

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは string のキーの代替名である必要があります。

KeyVault.removeKeyAlternateName()は、変更のデータ暗号化キーを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

1

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

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

次の操作では、前述の要件を満たすキーを生成し、それをユーザーの~/.profileに追加します。 キーDEV_LOCAL_KEYがすでに存在する場合は、この操作をスキップします。

echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile

ホスト オペレーティング システムでは、ロードされた環境変数を更新するためにログアウトして再度ログインする必要がある場合があります。 または、コマンドsource ~/.profileを使用して shell を手動で更新することもできます。

注意

特定のホスト オペレーティング システムまたは shell によって、永続的な環境変数を設定するための手順が異なる場合があります。 必要に応じて、より具体的な手順については、ホスト OS または shell のドキュメントを参照してください。

2

mongosh--eval--shell、 オプションを使用して--nodb セッションを作成します。

mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshが自動的に開きます。 --evalオプションは、 mongoshLOCAL_KEY変数を対応する環境変数の値に設定します。

3

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

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

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

5

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

6

既存のキー代替名を追加または削除するには、以下の手順を使用します。

キーの代替名を追加する

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加するに、 keyAltNamesに一意のインデックスが存在することを検証します。 一意なインデックスが削除された場合は、キーの代替名を追加する前に一意なインデックスを 再作成 する 必要 があります。

データ暗号化キーに新しい代替名を追加するには、 KeyVault.addKeyAlternateName()を使用します。

keyVault.addKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは一意の string である必要があります。 getKeyVault()keyAltNamesに一意のインデックスを作成し、キー代替名の一意性を強制します。

KeyVault.addKeyAlternateName()は、変更のデータ暗号化キー ドキュメントを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

キーの別名を削除

データ暗号化キーからキーの別名を削除するには、 KeyVault.removeKeyAlternateName()を使用します。

keyVault.removeKeyAlternateName(
UUID("<Replace Me With The UUID Of The Key To Modify"),
"NewKeyAltNameForMyFirstCSFLEDataKey"
)

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

  • 最初のパラメーターは、変更するデータ暗号化キーの UUID である 必要 があります。

  • 2 番目のパラメーターは string のキーの代替名である必要があります。

KeyVault.removeKeyAlternateName()は、変更のデータ暗号化キーを返します。 変更されたデータ暗号化キーを取得するには、 KeyVault.getKey()を使用します。

警告

データ暗号化キーを削除すると、そのキーを使用して暗号化されたすべてのフィールドが永続的に読み取りできなくなります。

次の手順では、 mongoshを使用して、キーヴォールトからデータ暗号化キーを削除します。 4.2 + 互換ドライバーを使用したデータ暗号化キー管理のガイダンスについては、代わりにドライバーのドキュメントを参照してください。

上記の 「mongosh データ暗号化キーの作成 」 手順から構成された セッション内にある場合は、ステップ5 に直接スキップできます。

以下のタブを使用して、配置に適したKMSを選択します。

1

Amazon Web Services KMSのクライアント側フィールドレベル暗号化を構成するには、 Amazon Web ServicesアクセスキーIDとそれに関連付けられたシークレットアクセスキーが必要です。 Amazon Web Servicesアクセス キーは、 KMSサービスに対するすべての リスト および 読み取り 権限を持つ IAM ユーザーに対応する必要があります。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var AWS_ACCESS_KEY_ID = '$AWS_ACCESS_KEY_ID'
var AWS_SECRET_ACCESS_KEY = '$AWS_SECRET_ACCESS_KEY'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 オプションは、 mongosh内の--eval 変数と 変数を対応する環境変数の値に設定します。AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY指定された変数は、Amazon Web ServicesCLI によってもサポートされています。

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"aws" : {
"accessKeyId" : AWS_ACCESS_KEY_ID,
"secretAccessKey" : AWS_SECRET_ACCESS_KEY
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
1

Azure Key Vault のクライアント側フィールド レベル暗号化を構成するには、有効なテナント ID、クライアント ID、およびクライアント シークレットが必要です。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • AZURE_TENANT_ID

  • AZURE_CLIENT_ID

  • AZURE_CLIENT_SECRET

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var AZURE_TENANT_ID = '$AZURE_TENANT_ID'
var AZURE_CLIENT_ID = '$AZURE_CLIENT_ID'
var AZURE_CLIENT_SECRET = '$AZURE_CLIENT_SECRET'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 --evalオプションは、 mongosh内のAZURE_TENANT_IDAZURE_CLIENT_ID 、およびAZURE_CLIENT_SECRET変数を対応する環境変数の値に設定します。

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"azure" : {
"tenantId" : AZURE_TENANT_ID,
"clientId" : AZURE_CLIENT_ID,
"clientSecret" : AZURE_CLIENT_SECRET
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
1

GCP KMS のクライアント側フィールドレベル暗号化を構成するには、GCP メールとそれに関連付けられた秘密キーが必要です。

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。

  • GCP_EMAIL

  • GCP_PRIVATEKEY

次に、 、mongosh--eval--shell--nodb オプションを使用して セッションを作成します。

mongosh --eval "
var GCP_EMAIL = '$GCP_EMAIL'
var GCP_PRIVATEKEY = '$GCP_PRIVATEKEY'
" \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshを開きます。 オプションは、 mongosh内の--eval 変数と 変数を対応する環境変数の値に設定します。GCP_EMAILGCP_PRIVATEKEY

2

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"gcp" : {
"email" : GCP_EMAIL,
"privateKey" : GCP_PRIVATEKEY
}
}
}
3

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

4

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

5

キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
1

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

これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。

次の操作では、前述の要件を満たすキーを生成し、それをユーザーの~/.profileに追加します。 キーDEV_LOCAL_KEYがすでに存在する場合は、この操作をスキップします。

echo "export DEV_LOCAL_KEY=\"$(head -c 96 /dev/urandom | base64 | tr -d '\n')\"" >> ~/.profile

ホスト オペレーティング システムでは、ロードされた環境変数を更新するためにログアウトして再度ログインする必要がある場合があります。 または、コマンドsource ~/.profileを使用して shell を手動で更新することもできます。

注意

特定のホスト オペレーティング システムまたは shell によって、永続的な環境変数を設定するための手順が異なる場合があります。 必要に応じて、より具体的な手順については、ホスト OS または shell のドキュメントを参照してください。

2

mongosh--eval--shell、 オプションを使用して--nodb セッションを作成します。

mongosh --eval "var LOCAL_KEY = '$DEV_LOCAL_KEY' " \
--shell --nodb

この例では、MongoDB database に接続せずにmongoshが自動的に開きます。 --evalオプションは、 mongoshLOCAL_KEY変数を対応する環境変数の値に設定します。

3

mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。

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

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

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

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

クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。

クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。

5

csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。

keyVault = csfleDatabaseConnection.getKeyVault();

重要

クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()keyAltNames一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。

6

キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。

keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))

既存のデータ暗号化キー ドキュメントをキーヴォールトから検索するには、次のいずれかを実行します。

公式の 4.2+ 互換ドライバーにデータ暗号化キーを提供して、自動クライアント側フィールドレベル暗号化を構成する場合は、 UUID stringの base64 表現を使用する必要があります。

mongoshで次の操作を実行すると、 UUIDの 16 進 string をbase64表現に変換できます。

UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()

このコマンドに独自のデータ暗号化キーのUUIDを指定します。

戻る

マスターキーとデータ暗号化キー管理