Docs Menu
Docs Home
/ /

CMK の作成

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

Tip

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

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

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

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

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

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

1
  1. Amazon Web Servicesマネジメント コンソールにログインします。

  2. Amazon Web Services KMS コンソールに移動します。

  3. 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 のキー ポリシー を参照してください。

2
  1. Amazon Web Services IAM コンソールに移動します。

  2. 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ユーザーを作成する必要があります。

  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
  1. Azureにログインします。

  2. 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オブジェクトを構築するためにこれらが必要になります。

2
  1. Azure Key Vault と CMK の作成

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

    重要

    認証情報の記録

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

    • キー名

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

    • キー バージョン

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

  2. 権限の付与

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

1
  1. Google Cloud Platformで既存のアカウントに登録またはログします。

  2. プロジェクトのサービス アカウントを作成する

    Google Cloud Platformでサービス アカウントを作成するには、Google の公式ドキュメントのサービス アカウントの作成ガイドを参照してください。

  3. サービス アカウント キーの追加

    Google Cloud Platformでサービス アカウント キーを追加するには、Google の公式ドキュメントのサービス アカウント キーの管理ガイドに従ってください。

    重要

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

    重要

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

    重要

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

    重要

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

    重要

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

    重要

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

2
  1. 新しい CMK の作成

    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);

重要

クライアント証明書は 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,
}

重要

GoドライバーPyKMIP で使用する場合は、ECDSA キー付きの証明書を使用する必要があります。

次の仮想マシン オプションを設定して、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 対応アプリケーションを作成できます。

戻る

クエリ分析コンポーネントのインストールと構成

項目一覧