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

CMK の作成

項目一覧

  • Overview
  • 始める前に
  • 手順
  • 次のステップ

このガイドでは、選択したキー管理システムで カスタマー マスター キーを生成する方法を学習します。 Queryable Encryption 対応のアプリケーションを作成する前に、 カスタマー マスター キーを生成 します。

Tip

CMK(カスタマー マスター キー)

カスタマー マスター キーの詳細については、 暗号化キーとキーヴォールトを参照してください。

続行する前に、前述のタスクを完了します。

  1. Queryable Encryption と互換性のあるドライバーと依存関係のインストール

  2. Queryable Encryption ライブラリのインストールと構成

以下で、キープロバイダーのタブを選択します。

1
1
3

対称 キーの作成 に関する の公式ドキュメントに従って、新しい対称キーを作成しますAmazon Web Services KMS。作成したキーが CMK です。 それを識別するのに役立つ名前と説明を選択します。これらのフィールドは、 CMKの機能や構成には影響しません。

キー生成プロセスの Usage Permissionsステップで、カスタマー マスター キーへのアクセスを許可する ID およびアクセス管理( IAM )ポリシーを有効にする次のデフォルトのキー ポリシーを適用します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "<ARN of your AWS account principal>"
},
"Action": "kms:*",
"Resource": "*"
}
]
}

重要

カスタマー マスター キーの Amazon リソース名( ARN )とリージョンを記録します。 これらはこのガイドの後の手順で使用します。

Tip

キー ポリシー

キーAmazon Web ServicesKMS ポリシーの詳細については、「 のキー ポリシーAmazon Web Services 」を参照してください。 の公式ドキュメントを参照してください。

2
2

ユーザーの 追加 に関する の公式ドキュメントに従って、 マネジメントコンソールに新しいプログラム IAM ユーザーを作成しますAmazon Web Services Amazon Web Services。このIAMユーザーは、Queryable Encryption 対応アプリケーションのサービス アカウントとして使用します。 アプリケーションは、Amazon Web ServicesKMS IAM ユーザーを使用して で認証され、CMK(Customer Master Key)でデータ暗号化キー(DEK)を暗号化および復号化します。

重要

認証情報の記録

IAM ユーザーを作成する最後のステップで、次の IAM 認証情報を必ず記録してください。

  • アクセスキー ID

  • シークレット アクセス キー

これらの認証情報を記録する機会が 1 つあります。 このステップの実行中にこれらの認証情報を記録しない場合は、別のIAMユーザーを作成する必要があります。

3

リモート マスター キーに対するIAMユーザー kms:Encryptおよびkms:Decryptの権限を付与します。

重要

新しいクライアントIAMユーザーには、マスター キーの管理権限があってはなりません。 データを安全に保つに は、最小特権の原則に従います。

次のインライン ポリシーにより、 IAMユーザーは最小限の特権で CMK を使用して暗号化および復号化を実行できます。

注意

リモート マスター キー ARN

次のポリシーには、このガイド の「 マスター キーの作成 」ステップで生成したキーの ARN が必要です。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["kms:Decrypt", "kms:Encrypt"],
"Resource": "<the Amazon Resource Name (ARN) of your remote master key>"
}
]
}

IAM Amazon Web Servicesユーザーに前述のポリシーを適用するには、次のようにします。 IAM ID 権限の追加 ガイドを参照して 。

重要

本番環境での IAM ロールによる認証

Queryable Encryption が有効なアプリケーションを本番環境に配置するときは、 IAM ユーザー ではなく IAM ロール を使用してアプリケーションを認証します。

IAMロールの詳細については、 Amazon Web Servicesの公式ドキュメントの次のページを参照してください。

1
2

Azure Active Directory にアプリケーションを登録するには、Microsoft の公式 「 Microsoft ID プラットフォームにアプリケーションを登録する 」を参照してください。 クイック スタート。

重要

認証情報の記録

次の認証情報を必ず記録してください。

  • テナント ID

  • clientId

  • クライアントシークレット

このチュートリアルの後半では、 kmsProvidersオブジェクトを構築するためにこれらが必要になります。

重要

認証情報の記録

次の認証情報を必ず記録してください。

  • テナント ID

  • clientId

  • クライアントシークレット

このチュートリアルの後半では、 kmsProvidersオブジェクトを構築するためにこれらが必要になります。

重要

認証情報の記録

次の認証情報を必ず記録してください。

  • テナント ID

  • clientId

  • クライアントシークレット

このチュートリアルの後半では、 kmsProvidersオブジェクトを構築するためにこれらが必要になります。

重要

認証情報の記録

次の認証情報を必ず記録してください。

  • テナント ID

  • clientId

  • クライアントシークレット

Azure Virtual Machines 内でクライアントを実行していない限り、このチュートリアルの後半でkmsProvidersオブジェクトを構築するためにこれらの認証情報が必要になります。

重要

認証情報の記録

次の認証情報を必ず記録してください。

  • テナント ID

  • clientId

  • クライアントシークレット

このチュートリアルの後半では、 kmsProvidersオブジェクトを構築するためにこれらが必要になります。

重要

認証情報の記録

次の認証情報を必ず記録してください。

  • テナント ID

  • clientId

  • クライアントシークレット

このチュートリアルの後半では、 kmsProvidersオブジェクトを構築するためにこれらが必要になります。

2
1

新しい Azure Key Vault インスタンスとカスタマー マスター キーを作成するには、Microsoft の公式の セット に従い、 Azure ポータルを使用して Azure Key Vault からキーを取得します。 クイック スタート。

重要

認証情報の記録

次の認証情報を必ず記録してください。

  • キー名

  • キー識別子(このガイドの後半ではkeyVaultEndpointと参照されます)

  • キー バージョン

このチュートリアルの後半では、 dataKeyOptsオブジェクトを構築するためにこれらが必要になります。

2

キーに対してクライアント アプリケーションのwrapunwrap権限を付与します。

1
1
2

でサービス アカウントを 作成するGoogle Cloud Platform には、次の手順に従ってください: ガイドを参照してください。

3

でサービス アカウントGoogle Cloud Platform キーを追加するには、「 サービス アカウント キーの 管理 」を参照してください。 ガイドを参照してください。

重要

サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。

重要

サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。

重要

サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。

重要

サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 添付のサービス アカウントを使用していない限り、このチュートリアルの後半で使用するために、このファイルを PKCS 12または JSON 形式で必ずダウンロードしてください。

重要

サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。

重要

サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。

2
1

キーの 作成 に従って、キー リングと対称キーを作成します。 Google の公式ドキュメントの ガイドを参照してください。

このキーは CMK( CMK )です。

このチュートリアルの後のステップで使用するために、 CMKの次の詳細を記録します。

フィールド
必須
説明
key_name
はい
CMKの識別子。
key_string
はい
キーが属するキーのグループの識別子。
key_version
No
名前付きキーのバージョン。
ロケーション
はい
キーに指定されたリージョン。
エンドポイント
No
Google Cloud Platform KMSのホストとオプション ポート。 デフォルト値はcloudkms.googleapis.comです。
1

MongoDB ドライバー クライアントをKMIP準拠のキー プロバイダーに接続するには、クライアントの TLS 証明書を受け入れるようにKMIP準拠のキー プロバイダーを構成する必要があります。

クライアント証明書を受け入れる方法については、 KMIP準拠のキー プロバイダーのドキュメントを参照してください。

2

クライアントは TLS 経由で KMIP 準拠のキー プロバイダーに接続し、 KMIP準拠のキー プロバイダーが受け入れるクライアント証明書を提示する必要があります。

const tlsOptions = {
kmip: {
tlsCAFile: process.env["KMIP_TLS_CA_FILE"], // Path to your TLS CA file
tlsCertificateKeyFile: process.env["KMIP_TLS_CERT_FILE"], // Path to your TLS certificate key file
},
};
var tlsOptions = new Dictionary<string, SslSettings>();
var sslSettings = new SslSettings();
var clientCertificate = new X509Certificate2(_appSettings["Kmip:TlsCertP12"]!); // Full path to your client certificate p12 file
sslSettings.ClientCertificates = new[] { clientCertificate };
tlsOptions.Add("kmip", sslSettings);

重要

クライアント証明書は pcks 12形式である必要があります。 OpenSSL を使用して証明書を変換できます 次のコマンドを使用します。

openssl pcks12 -export -out "<new pcks12 certificate>" -in "<certificate to convert>" \
-name "<new certificate name>" -password "<new certificate password>"
tlsOpts := map[string]interface{}{
"tlsCertificateKeyFile": os.Getenv("KMIP_TLS_CERT_ECDSA_FILE"), // Path to your client certificate file
"tlsCAFile": os.Getenv("KMIP_TLS_CA_ECDSA_FILE"), // Path to your KMIP certificate authority file
}
kmipConfig, err := options.BuildTLSConfig(tlsOpts)
if err != nil {
panic(fmt.Sprintf("Unable to retrieve certificates from your environment: %s\n", err))
}
tlsConfig := map[string]*tls.Config{
"kmip": kmipConfig,
}

重要

ECDSA キー を持つ証明書を使用する必要があります Go ドライバー を PyKMIP で使用する場合

次の仮想マシン オプションを設定して、KMIP TLS 証明書を含むキーストアとトラスト ストアを指定し、Java アプリケーションの起動に使用するコマンドに追加します。

-Djavax.net.ssl.enabled=true
-Djavax.net.ssl.keyStoreType=pkcs12
-Djavax.net.ssl.keyStore=REPLACE-WITH-PATH-TO-PKC-KEYSTORE
-Djavax.net.ssl.keyStorePassword=REPLACE-WITH-KEYSTORE-PASSWORD
-Djavax.net.ssl.trustStoreType=jks
-Djavax.net.ssl.trustStore=REPLACE-WITH-PATH-TO-TRUSTSTORE
-Djavax.net.ssl.trustStorePassword=REPLACE-WITH-TRUSTSTORE-PASSWORD

注意

SSLContext を使用したクライアントの構成

SSL コンテキストを使用してクライアント アプリケーションを構成する場合は、 kmsProviderSslContextMap を使用します 使用して複数のドキュメントを挿入できます。

const tlsOptions = {
kmip: {
tlsCAFile: process.env.KMIP_TLS_CA_FILE, // Path to your TLS CA file
tlsCertificateKeyFile: process.env.KMIP_TLS_CERT_FILE, // Path to your TLS certificate key file
},
};
tls_options = {
"kmip": {
"tlsCAFile": os.environ['KMIP_TLS_CA_FILE'], # Path to your TLS CA file
"tlsCertificateKeyFile": os.environ['KMIP_TLS_CERT_FILE'] # Path to your TLS certificate key file
}
}

ドライバーと依存関係をインストールし、CMK を作成したら、Queryable Encryption 対応アプリケーションを作成できます。

戻る

ライブラリのインストール