バージョン 4.2の新機能
クライアント側のフィールドレベル暗号化では、暗号化と復号化にデータ暗号化キーが使用されます。 mongoshヘルパーメソッドgetKeyVault() は、データ暗号化キーを作成、変更、削除するためのキーヴォールトオブジェクトを返します。
このページでは、 mongoshを使用したクライアント側のフィールドレベルの暗号化について説明し、公式の MongoDB 4.2 + 互換ドライバーを参照することはありません。 ドライバー固有のデータ暗号化キー管理のメソッドと構文については、関連するドキュメントを参照してください。
データ暗号化キーの作成
次の手順では、 mongoshを使用して、クライアント側のフィールドレベルの暗号化と復号化で使用するデータ暗号化キーを作成します。 4.2 + 互換ドライバーを使用したデータ暗号化キー管理のガイダンスについては、代わりにドライバーのドキュメントを参照してください。
以下のタブを使用して、配置に適した KMSを選択します。
mongoshを起動します。
Amazon Web Services KMSのクライアント側フィールドレベル暗号化を構成するには、 Amazon Web ServicesアクセスキーIDとそれに関連付けられたシークレットアクセスキーが必要です。 Amazon Web Servicesアクセス キーは、 KMSサービスに対するすべての リスト および 読み取り 権限を持つ IAM ユーザーに対応する必要があります。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
AWS_ACCESS_KEY_IDAWS_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データベースに接続せずに mongosh を開きます。--eval オプションは、mongosh 内の AWS_ACCESS_KEY_ID 変数と AWS_SECRET_ACCESS_KEY 変数を対応する環境変数の値に設定します。指定された変数は、Amazon Web Services CLI でもサポートされています。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーを作成します。
keyVaultオブジェクトのKeyVault.createKey()メソッドを使用して、キーヴォールトに新しいデータ暗号化キーを作成します。
keyVault.createKey( "aws", "arn:aws:kms:region:account:key/keystring", [ "keyAlternateName" ] )
以下の条件に一致するもの。
構成された Amazon Web Services KMS を指定するには、最初のパラメータが
"aws"である必要があります。2 番目のパラメーターは、CMK(Customer Master Key)の完全なAmazonリソース名(ARN)である必要があります。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を指定します。
mongoshを起動します。
Azure Key Vault のクライアント側フィールド レベル暗号化を構成するには、有効なテナント ID、クライアント ID、およびクライアント シークレットが必要です。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_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_ID 、 AZURE_CLIENT_ID 、およびAZURE_CLIENT_SECRET変数を対応する環境変数の値に設定します。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーを作成します。
keyVaultオブジェクトのKeyVault.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 つ目のパラメータは、データ暗号化のキーの 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を起動します。
GCP KMS のクライアント側フィールドレベル暗号化を構成するには、GCP メールとそれに関連付けられた秘密キーが必要です。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
GCP_EMAILGCP_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
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーを作成します。
keyVaultオブジェクトのKeyVault.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 つ目のパラメータは、データ暗号化のキーの 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を指定します。
暗号化キーを生成します。
ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、基本的に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 のドキュメントを参照してください。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーを作成します。
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を選択します。
mongoshを起動します。
Amazon Web Services KMSのクライアント側フィールドレベル暗号化を構成するには、 Amazon Web ServicesアクセスキーIDとそれに関連付けられたシークレットアクセスキーが必要です。 Amazon Web Servicesアクセス キーは、 KMSサービスに対するすべての リスト および 読み取り 権限を持つ IAM ユーザーに対応する必要があります。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
AWS_ACCESS_KEY_IDAWS_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データベースに接続せずに mongosh を開きます。--eval オプションは、mongosh 内の AWS_ACCESS_KEY_ID 変数と AWS_SECRET_ACCESS_KEY 変数を対応する環境変数の値に設定します。指定された変数は、Amazon Web Services CLI でもサポートされています。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーの別名を管理します。
既存のキー代替名を追加または削除するには、以下の手順を使用します。
- キーの代替名を追加する
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加する前に、
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を起動します。
Azure Key Vault のクライアント側フィールド レベル暗号化を構成するには、有効なテナント ID、クライアント ID、およびクライアント シークレットが必要です。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_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_ID 、 AZURE_CLIENT_ID 、およびAZURE_CLIENT_SECRET変数を対応する環境変数の値に設定します。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーの別名を管理します。
既存のキー代替名を追加または削除するには、以下の手順を使用します。
- キーの代替名を追加する
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加する前に、
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を起動します。
GCP KMS のクライアント側フィールドレベル暗号化を構成するには、GCP メールとそれに関連付けられた秘密キーが必要です。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
GCP_EMAILGCP_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
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーの別名を管理します。
既存のキー代替名を追加または削除するには、以下の手順を使用します。
- キーの代替名を追加する
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加する前に、
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()を使用します。
暗号化キーを生成します。
ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、基本的に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 のドキュメントを参照してください。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
データ暗号化キーの別名を管理します。
既存のキー代替名を追加または削除するには、以下の手順を使用します。
- キーの代替名を追加する
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 新しいキーの代替名を追加する前に、
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を選択します。
mongoshを起動します。
Amazon Web Services KMSのクライアント側フィールドレベル暗号化を構成するには、 Amazon Web ServicesアクセスキーIDとそれに関連付けられたシークレットアクセスキーが必要です。 Amazon Web Servicesアクセス キーは、 KMSサービスに対するすべての リスト および 読み取り 権限を持つ IAM ユーザーに対応する必要があります。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
AWS_ACCESS_KEY_IDAWS_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データベースに接続せずに mongosh を開きます。--eval オプションは、mongosh 内の AWS_ACCESS_KEY_ID 変数と AWS_SECRET_ACCESS_KEY 変数を対応する環境変数の値に設定します。指定された変数は、Amazon Web Services CLI でもサポートされています。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "aws" : { "accessKeyId" : AWS_ACCESS_KEY_ID, "secretAccessKey" : AWS_SECRET_ACCESS_KEY } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
を使用してデータ暗号化キーを削除します。UUID
キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
mongoshを起動します。
Azure Key Vault のクライアント側フィールド レベル暗号化を構成するには、有効なテナント ID、クライアント ID、およびクライアント シークレットが必要です。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_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_ID 、 AZURE_CLIENT_ID 、およびAZURE_CLIENT_SECRET変数を対応する環境変数の値に設定します。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "azure" : { "tenantId" : AZURE_TENANT_ID, "clientId" : AZURE_CLIENT_ID, "clientSecret" : AZURE_CLIENT_SECRET } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
を使用してデータ暗号化キーを削除します。UUID
キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
mongoshを起動します。
GCP KMS のクライアント側フィールドレベル暗号化を構成するには、GCP メールとそれに関連付けられた秘密キーが必要です。
これらの認証情報がログに漏洩するリスクを軽減するために、次の手順では環境変数を使用して値をmongoshに渡します。
まず、プラットフォームのドキュメントに従って、次の環境変数が設定されていることを確認します。
GCP_EMAILGCP_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
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "gcp" : { "email" : GCP_EMAIL, "privateKey" : GCP_PRIVATEKEY } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
を使用してデータ暗号化キーを削除します。UUID
キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
暗号化キーを生成します。
ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、基本的に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 のドキュメントを参照してください。
暗号化構成を作成します。
mongoshでは、クライアント側のフィールドレベル暗号化構成ドキュメントを保存するための新しいClientSideFieldLevelEncryptionOptions変数を作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, LOCAL_KEY) } } }
暗号化サポートで接続します。
mongoshでは、 Mongo()コンストラクターを使用してターゲット クラスターへのデータベース接続を確立します。 ClientSideFieldLevelEncryptionOptionsクライアント側のフィールドレベル暗号化の接続を構成するには、Mongo() コンストラクターの 2 番目のパラメーターとして ドキュメントを指定します。
csfleDatabaseConnection = Mongo( "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster", ClientSideFieldLevelEncryptionOptions )
replaceMe.example.net URIを、ターゲット クラスターの接続stringに置き換えます。
クライアント側のフィールドレベル暗号化shell メソッドにアクセスするには、 csfleDatabaseConnectionオブジェクトを使用します。
クライアント側のフィールドレベル暗号化用に構成されたデータベース接続を確立するための完全なドキュメントについては、 Mongo()コンストラクターのリファレンスを参照してください。
キーヴォールト オブジェクトを作成します。
csfleDatabaseConnectionデータベース接続オブジェクトのgetKeyVault()メソッドを使用してkeyVaultオブジェクトを作成します。
keyVault = csfleDatabaseConnection.getKeyVault();
重要
クライアント側のフィールドレベルの暗号化は、キーの代替名がサーバーによって強制される一意であることによって依存します。 getKeyVault()はkeyAltNamesに一意のインデックスが存在しない場合はそれを作成します。 getKeyVault()によって作成された 一意のインデックス は削除し ない でください。
を使用してデータ暗号化キーを削除します。UUID
キーヴォールトからデータキーを削除するには、 keyVaultオブジェクトのKeyVault.deleteKey()メソッドを使用します。
keyVault.deleteKey(UUID("<Replace Me With The UUID Of The Key To Delete"))
既存のデータ暗号化キーの取得
既存のデータ暗号化キー ドキュメントをキーヴォールトから検索するには、次のいずれかを実行します。
getKey()を使用して、 UUIDで作成されたキーを取得するか、別名でキーを検索するには、
getKeyByAltName()を使用します(指定されている場合)。 代替名の使用の詳細については、「データ暗号化キーの別名の管理 」を参照してください。
公式の 4.2+ 互換ドライバーにデータ暗号化キーを提供して、自動クライアント側フィールドレベル暗号化を構成する場合は、 UUID stringの base64 表現を使用する必要があります。
mongoshで次の操作を実行すると、 UUIDの 16 進 string をbase64表現に変換できます。
UUID("b4b41b33-5c97-412e-a02b-743498346079").base64()
このコマンドに独自のデータ暗号化キーのUUIDを指定します。