CMK の作成
Overview
このガイドでは、選択したキー管理システムで カスタマー マスター キーを生成する方法を学習します。 Queryable Encryption 対応のアプリケーションを作成する前に、 カスタマー マスター キーを生成 します。
始める前に
続行する前に、前述のタスクを完了します。
手順
以下で、キープロバイダーのタブを選択します。
CMK の作成
Amazon Web ServicesAmazon Web ServicesKMS KMS コンソールに移動します。
CMK の作成
対称 キーの作成 に関する の公式ドキュメントに従って、新しい対称キーを作成します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 」を参照してください。 の公式ドキュメントを参照してください。
Amazon Web Services IAM ユーザーの作成
IAM ユーザーの作成
ユーザーの 追加 に関する の公式ドキュメントに従って、 マネジメントコンソールに新しいプログラム IAM ユーザーを作成しますAmazon Web Services Amazon Web Services。このIAMユーザーは、Queryable Encryption 対応アプリケーションのサービス アカウントとして使用します。 アプリケーションは、Amazon Web ServicesKMS IAM ユーザーを使用して で認証され、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 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 ポータルを使用して Azure Key Vault からキーを取得します。 クイック スタート。
重要
認証情報の記録
次の認証情報を必ず記録してください。
キー名
キー識別子(このガイドの後半では
keyVaultEndpoint
と参照されます)キー バージョン
このチュートリアルの後半では、
dataKeyOpts
オブジェクトを構築するためにこれらが必要になります。権限の付与
キーに対してクライアント アプリケーションの
wrap
とunwrap
権限を付与します。
GCPサービス アカウントの登録
Google CloudGoogle Cloud Platform Platformで既存のアカウントに登録またはログします。
プロジェクトのサービス アカウントを作成する
でサービス アカウントを 作成するGoogle Cloud Platform には、次の手順に従ってください: ガイドを参照してください。
サービス アカウント キーの追加
でサービス アカウントGoogle Cloud Platform キーを追加するには、「 サービス アカウント キーの 管理 」を参照してください。 ガイドを参照してください。
重要
サービス アカウント キーを作成すると、秘密キー情報の 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_versionNo名前付きキーのバージョン。ロケーションはいキーに指定されたリージョン。エンドポイントNoGoogle 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);
重要
クライアント証明書は 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 対応アプリケーションを作成できます。