データ暗号化キーの管理
バージョン 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_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_ID
AWS_SECRET_ACCESS_KEY
指定された変数は、Amazon Web ServicesCLI によってもサポートされています。
暗号化構成を作成します。
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 番目のパラメーター は 、完全な 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
を指定します。
mongosh
を起動します。
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_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 の 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_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_EMAIL
GCP_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-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
を指定します。
暗号化キーを生成します。
ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、基本的に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_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_ID
AWS_SECRET_ACCESS_KEY
指定された変数は、Amazon Web ServicesCLI によってもサポートされています。
暗号化構成を作成します。
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_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_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_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_EMAIL
GCP_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_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_ID
AWS_SECRET_ACCESS_KEY
指定された変数は、Amazon Web ServicesCLI によってもサポートされています。
暗号化構成を作成します。
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_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_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_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_EMAIL
GCP_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
を指定します。