Docs 菜单
Docs 主页
/
数据库手册
/ / / / / /

创建客户主密钥

在本指南中,您将了解如何在所选密钥管理系统中生成客户主密钥。 在创建启用了 Queryable Encryption 的应用程序之前,生成客户主密钥。

提示

客户主密钥

要学习;了解有关客户主密钥的详情,请参阅加密密钥和密钥保管库

请先完成上述任务,然后再继续:

  1. 安装 Queryable Encryption 兼容驱动程序和依赖项

  2. 安装和配置Queryable Encryption库

选择下面与您的密钥提供程序对应的标签页。

1
  1. 登录到 Amazon Web Services管理控制台。

  2. 导航到Amazon Web Services KMS控制台。

  3. 创建客户主密钥

    按照有关创建对称KMS密钥的Amazon Web Services官方文档创建新的对称密钥。您创建的密钥是客户主密钥。选择有助于识别的名称和描述;这些字段不会影响 集合扫描 的功能或配置。

    在密钥生成过程的 Usage Permissions步骤中,应用以下默认密钥策略,该策略使身份和访问管理 ( 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) 和区域。您将在本指南的后续步骤中用到它们。

    提示

    关键策略

    要了解有关密钥策略的更多信息,请参阅 AWS 官方文档中的 AWS KMS 中的密钥策略

2
  1. 导航到Amazon Web Services IAM 控制台。

  2. 创建 IAM 用户

    按照有关 添加用户 的Amazon Web Services官方文档,在Amazon Web Services管理控制台中创建新的编程 IAM 用户。您将使用此 IAM 用户作为启用了Queryable Encryption的应用程序的服务帐户。您的应用程序使用IAM 用户通过Amazon Web Services KMS进行身份验证,通过客户主密钥(集合扫描) 对数据加密密钥 (DEK) 进行加密和解密。

    重要

    记录凭证

    确保在创建 IAM 用户的最后一步记录以下 IAM 凭证:

    • 访问密钥 ID

    • 秘密访问密钥

    您有一次机会记录这些凭证。如果在该步骤中没有记录这些凭证,则必须创建另一个 IAM 用户。

  3. 授予权限

    向该 IAM 用户授予远程主密钥的 kms:Encryptkms:Decrypt 权限。

    重要

    新的客户端IAM 用户不应具有主密钥的管理权限。为了确保数据安全,请遵循最小权限原则

    以下内联策略允许 IAM 用户按照最小权限原则使用客户主密钥进行加密和解密:

    注意

    远程主密钥 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 用户,请遵守 AWS 文档中的添加 IAM 身份权限指南。

    重要

    在生产环境中使用 IAM 角色进行身份验证

    将启用了 Queryable Encryption 的应用程序部署到生产环境时,请使用IAM角色而不是IAM用户对应用程序进行身份验证。

    要了解有关 IAM 角色的更多信息,请参阅官方 AWS 文档中的以下页面:

1
  1. 登录到Azure。

  2. 向 Azure Active Directory 注册您的应用程序

    要在Azure Active Directory 上注册应用程序,请按照 Microsoft 官方文档《使用Microsoft身份平台注册应用程序快速入门》进行操作。

    重要

    记录凭证

    确保记录以下凭证:

    • 租户 ID

    • 客户 ID

    • 客户端密钥

    在本教程的后面内容中,您将需要它们来构造kmsProviders对象。

    重要

    记录凭证

    确保记录以下凭证:

    • 租户 ID

    • 客户 ID

    • 客户端密钥

    在本教程的后面内容中,您将需要它们来构造kmsProviders对象。

    重要

    记录凭证

    确保记录以下凭证:

    • 租户 ID

    • 客户 ID

    • 客户端密钥

    在本教程的后面内容中,您将需要它们来构造kmsProviders对象。

    重要

    记录凭证

    确保记录以下凭证:

    • 租户 ID

    • 客户 ID

    • 客户端密钥

    除非您在Azure虚拟机中运行客户端,否则您将需要这些凭证来构造本教程后面的kmsProviders对象。

    重要

    记录凭证

    确保记录以下凭证:

    • 租户 ID

    • 客户 ID

    • 客户端密钥

    在本教程的后面内容中,您将需要它们来构造kmsProviders对象。

    重要

    记录凭证

    确保记录以下凭证:

    • 租户 ID

    • 客户 ID

    • 客户端密钥

    在本教程的后面内容中,您将需要它们来构造kmsProviders对象。

2
  1. 创建 Azure Key Vault 和客户主密钥

    要创建新的Azure Key Vault实例和客户主密钥,请遵循 Microsoft 官方文档 使用Azure门户快速入门从Azure Key Vault设置和检索密钥。

    重要

    记录凭证

    确保记录以下凭证:

    • 密钥名称

    • 密钥标识符(本指南后面称为keyVaultEndpoint

    • keyVersion

    在本教程的后面内容中,您将需要它们来构造dataKeyOpts对象。

  2. 授予权限

    授予您的客户端应用程序对该密钥的wrapunwrap权限。

1
  1. 注册或登录您在Google Cloud Platform上的现有帐户。

  2. 为项目创建服务帐户

    要在Google Cloud Platform上创建服务帐户,请按照 Google 官方文档中的创建服务帐户指南 进行操作。

  3. 添加服务帐户密钥

    要在Google Cloud Platform上添加服务帐户密钥,请遵循 Google 官方文档中的管理服务帐户密钥指南

    重要

    创建服务帐户密钥时,您会收到私钥信息的一次性下载。 请务必以 PKCS12 或 JSON 格式下载此文件,以便在本教程后面使用。

    重要

    创建服务帐户密钥时,您会收到私钥信息的一次性下载。 请务必以 PKCS12 或 JSON 格式下载此文件,以便在本教程后面使用。

    重要

    创建服务帐户密钥时,您会收到私钥信息的一次性下载。 请务必以 PKCS12 或 JSON 格式下载此文件,以便在本教程后面使用。

    重要

    创建服务帐户密钥时,您会收到私钥信息的一次性下载。 除非您使用附加的服务帐户,否则请确保以 PKCS 12或JSON格式下载此文件,以便在本教程后面使用。

    重要

    创建服务帐户密钥时,您会收到私钥信息的一次性下载。 请务必以 PKCS12 或 JSON 格式下载此文件,以便在本教程后面使用。

    重要

    创建服务帐户密钥时,您会收到私钥信息的一次性下载。 请务必以 PKCS12 或 JSON 格式下载此文件,以便在本教程后面使用。

2
  1. 创建新的客户主密钥

    按照 Google 官方文档中的创建密钥指南创建密钥环和对称密钥。

    此密钥是您的客户主密钥 ( CMK )。

    记录您的客户主密钥的以下详细信息,以便在本教程的后续步骤中使用。

    字段
    必需
    说明

    key_name

    客户主密钥的标识符。

    key_ring

    您的密钥所属的密钥群组的标识符。

    key_version

    No

    已命名密钥的版本。

    位置

    为密钥指定的区域。

    端点

    No

    Google Cloud Platform KMS 的主机和可选端口。默认值为cloudkms.googleapis.com

1

要将 MongoDB 驱动程序客户端连接到KMIP兼容密钥提供商,您必须配置KMIP兼容密钥提供商,使其接受客户端的 TLS 证书。

有关如何接受客户端证书的信息,请参阅符合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);

重要

客户端证书必须采用 pcks12 格式。您可以通过以下命令使用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
}
}

安装驱动程序和依赖项并创建客户主密钥后,您可以创建启用了 Queryable Encryption 的应用程序。

后退

安装和配置查询分析组件

在此页面上