Overview
このガイドでは、選択したキー管理システムで カスタマー マスター キーを生成する方法を学習します。 Queryable Encryption 対応のアプリケーションを作成する前に、 カスタマー マスター キーを生成 します。
始める前に
続行する前に、前述のタスクを完了します。
手順
以下で、キープロバイダーのタブを選択します。
CMK の作成
CMK の作成
対称 KMS キーの作成に関するAmazon Web Services の公式ドキュメントに従って、新しい対称キーを作成します。作成したキーが 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 Services の公式ドキュメントの Amazon Web Services KMS のキー ポリシー を参照してください。
Amazon Web Services IAM ユーザーの作成
IAM ユーザーの作成
ユーザーの追加 に関するAmazon Web Services Amazon Web Services Services マネジメントコンソールに新しいプログラム IAM ユーザーを作成します。この IAM ユーザーは、Queryable Encryption対応アプリケーションのサービス アカウントとして使用します。アプリケーションは、IAM ユーザーを使用してAmazon Web Services KMS で認証され、CMK(Customer Master Key)でデータ暗号化キー(DEK)を暗号化および復号化します。
重要
認証情報の記録
IAM ユーザーを作成する最後のステップで、次の IAM 認証情報を必ず記録してください。
アクセスキー ID
シークレット アクセス キー
これらの認証情報を記録する機会が 1 つあります。 このステップの実行中にこれらの認証情報を記録しない場合は、別のIAMユーザーを作成する必要があります。
権限の付与
リモート マスター キーに対するIAMユーザー
kms:Encryptおよびkms:Decryptの権限を付与します。重要
新しいクライアントIAM ユーザーには、マスター キーの管理権限があってはなりません。データを安全に保つには、最小特権の原則に従います。
次のインライン ポリシーにより、 IAMユーザーは最小限の特権で CMK を使用して暗号化および復号化を実行できます。
{ "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の公式ドキュメントの次のページを参照してください。
Azure にアプリケーションを登録する
Azureにログインします。
Azure Active Directory でアプリケーションを登録する
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オブジェクトを構築するためにこれらが必要になります。
CMK の作成
Azure Key Vault と CMK の作成
新しいAzure Key Vaultインスタンスとカスタマー マスター キーを作成するには、Microsoft の公式の セット に従い、 Azure portal クイック スタートを使用してAzure Key Vault からキーを取得します。
重要
認証情報の記録
次の認証情報を必ず記録してください。
キー名
キー識別子(このガイドの後半では
keyVaultEndpointと参照されます)キー バージョン
このチュートリアルの後半では、
dataKeyOptsオブジェクトを構築するためにこれらが必要になります。権限の付与
キーに対してクライアント アプリケーションの
wrapとunwrap権限を付与します。
GCPサービス アカウントの登録
Google Cloud Platformで既存のアカウントに登録またはログします。
プロジェクトのサービス アカウントを作成する
Google Cloud Platformでサービス アカウントを作成するには、Google の公式ドキュメントのサービス アカウントの作成ガイドを参照してください。
サービス アカウント キーの追加
Google Cloud Platformでサービス アカウント キーを追加するには、Google の公式ドキュメントのサービス アカウント キーの管理ガイドに従ってください。
重要
サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。
重要
サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。
重要
サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。
重要
サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 添付のサービス アカウントを使用していない限り、このチュートリアルの後半で使用するために、このファイルを PKCS 12または JSON 形式で必ずダウンロードしてください。
重要
サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。
重要
サービス アカウント キーを作成すると、秘密キー情報の 1 回限りのダウンロードが行われます。 このチュートリアルの後半で使用するために、必ず PKCS12 または JSON 形式でこのファイルをダウンロードしてください。
GCPカスタマー マスター キーの作成
新しい CMK の作成
Google の 公式ドキュメント にある キーの作成 ガイドに従って、キー リングと対称キーを作成します。
このキーは CMK( CMK )です。
このチュートリアルの後のステップで使用するために、 CMKの次の詳細を記録します。
フィールド必須説明key_name
はい
CMKの識別子。
key_string
はい
キーが属するキーのグループの識別子。
key_version
No
名前付きキーのバージョン。
ロケーション
はい
キーに指定されたリージョン。
エンドポイント
No
Google Cloud Platform KMSのホストとオプション ポート。 デフォルト値は
cloudkms.googleapis.comです。
証明書を指定する
クライアントは 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);
重要
クライアント証明書は pckers12形式である必要があります。次のコマンドで 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, }
次の仮想マシン オプションを設定して、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 対応アプリケーションを作成できます。