Overview
En esta guía, aprenderás a generar una clave maestra de cliente en el sistema de gestión de claves de tu elección. Genera una clave maestra de cliente antes de crear la aplicación habilitada para cifrado consultable.
Tip
llave maestra de cliente
Para obtener más información sobre la clave maestra de cliente, consulte Llaves de cifrado y almacenes de claves
Antes de comenzar
Complete las tareas anteriores antes de continuar:
Procedimiento
Seleccione la pestaña de su proveedor de claves a continuación.
Crear la llave maestra de cliente
Iniciar sesión en tu AWS Management Console.
Navega a la Consola de AWS KMS.
Crea tu clave maestra de cliente
Crea una nueva clave simétrica siguiendo la documentación oficial de AWS en Creación de claves KMS simétricas. La clave que cree es la llave maestra de cliente. Elige un nombre y una descripción que te ayuden a identificarlo; estos campos no afectan la funcionalidad o configuración de tu CMK.
En el Usage Permissions paso del proceso de generación de claves, aplica la siguiente política de claves por defecto que permite a las políticas de Gestión de identidad y acceso (IAM) otorgar acceso a tu llave maestra de cliente:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "<ARN of your AWS account principal>" }, "Action": "kms:*", "Resource": "*" } ] } Importante
Registra el Nombre de recurso de Amazon (ARN) y la región de tu clave maestra de cliente. Los utilizarás más adelante en los siguientes pasos de esta guía.
Tip
Políticas clave
Para obtener más información sobre las políticas clave, consulte Políticas clave en AWS KMS en la documentación oficial de AWS.
Crear un usuario de AWS IAM
Navegue hasta la Consola IAM de AWS.
Cree un usuario de IAM
Crea un nuevo usuario IAM programático en la consola de gestión de AWS siguiendo la documentación oficial de AWS sobre Agregar un usuario. Utilizarás este usuario de IAM como cuenta de servicio para tu aplicación habilitada con cifrado consultable. Su aplicación se autentica con AWS KMS utilizando el usuario IAM para cifrar y descifrar sus llaves de cifrado de datos (DEK) con su llave maestra de cliente (CMK).
Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales de IAM en el paso final de la creación de su usuario IAM:
ID de clave de acceso
clave secreta de acceso
Tienes una oportunidad para guardar estas credenciales. Si no registra estas credenciales durante este paso, deberá crear otro usuario IAM.
Otorgar permisos
Otorgue su usuario IAM
kms:Encrypty permisoskms:Decryptpara tu clave maestra remota.Importante
El nuevo usuario de IAM del cliente no debe tener permisos administrativos para la clave principal. Para mantener sus datos seguros, siga el principio de mínimo privilegio.
La siguiente política en línea permite que un usuario IAM encripte y desencripte con la llave maestra de cliente con los mínimos privilegios posibles:
Nota
ARN de clave maestra remota
La siguiente política requiere el ARN de la clave que usted genera en el paso Crear la Clave Principal de esta guía.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["kms:Decrypt", "kms:Encrypt"], "Resource": "<the Amazon Resource Name (ARN) of your remote master key>" } ] } Para aplicar la política anterior a tu usuario IAM, sigue la Adición de permisos de identidad IAM guía en la documentación de AWS.
Importante
Autenticación con IAM Roles en producción
Cuando implementes tu aplicación habilitada para cifrado consultable en un entorno de producción, autentica tu aplicación usando un rol IAM en lugar de un usuario IAM .
Para obtener más información sobre roles IAM, consulta las siguientes páginas de la documentación oficial de AWS:
Registre su aplicación con Azure
Inicie sesión en Azure.
Registre su aplicación en Azure Active Directory
Para registrar una aplicación en Azure Active Directory, sigue la Guía de inicio rápido oficial de Microsoft Registrar una aplicación con la plataforma de identidad de Microsoft.
Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales:
ID de arrendatario
ID de cliente
Secreto del cliente
You need these credentials to construct your
kmsProvidersobject later in this tutorial. You can also authenticate by using an access token or automatic credential fetching. To learn about all available credential forms for Azure, see kmsProviders Object.Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales:
ID de arrendatario
ID de cliente
Secreto del cliente
You need these credentials to construct your
kmsProvidersobject later in this tutorial. You can also authenticate by using an access token or automatic credential fetching. To learn about all available credential forms for Azure, see kmsProviders Object.Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales:
ID de arrendatario
ID de cliente
Secreto del cliente
You need these credentials to construct your
kmsProvidersobject later in this tutorial. You can also authenticate by using an access token or automatic credential fetching. To learn about all available credential forms for Azure, see kmsProviders Object.Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales:
id de inquilino
ID de cliente
clave secreta del cliente
A menos que estés ejecutando tu cliente dentro de una Máquina Virtual de Azure, necesitarás estas credenciales para crear tu objeto
kmsProvidersmás adelante en este tutorial.Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales:
ID de arrendatario
ID de cliente
Secreto del cliente
You need these credentials to construct your
kmsProvidersobject later in this tutorial. You can also authenticate by using an access token or automatic credential fetching. To learn about all available credential forms for Azure, see kmsProviders Object.Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales:
ID de arrendatario
ID de cliente
Secreto del cliente
You need these credentials to construct your
kmsProvidersobject later in this tutorial. You can also authenticate by using an access token or automatic credential fetching. To learn about all available credential forms for Azure, see kmsProviders Object.
Crear la llave maestra de cliente
Cree su Azure Key Vault y su llave maestra de cliente
Para crear una instancia nueva de Azure Key Vault y una llave maestra de cliente, sigue el establecimiento y recuperación de una clave de Azure Key Vault mediante el portal de Azure inicio rápido oficial de Microsoft.
Importante
Registra tus credenciales
Asegúrese de registrar las siguientes credenciales:
Nombre de la clave
Identificador clave (denominado
keyVaultEndpointmás adelante en esta guía)Versión clave
Los necesitarás para crear tu objeto
dataKeyOptsmás adelante en este tutorial.Otorgar permisos
Conceda a su aplicación cliente
wrapyunwrappermisos para la clave.
Registrar una cuenta de servicio de Google Cloud
Regístrese o inicie sesión en su cuenta existente en Google Cloud.
Cree una cuenta de servicio para su proyecto
Para crear una cuenta de servicio en Google Cloud, sigue la Guía de creación de una cuenta de servicio guía en la documentación oficial de Google.
Agregar una clave de cuenta de servicio
Para añadir una clave de cuenta de servicio en Google Cloud, sigue la Guía para gestionar claves de cuentas de servicio en la documentación oficial de Google.
Importante
Apixio will receive a llave privada from an external service. The key must be stored securely and safely, as it cannot be descargada again or retrieved if lost. Asegúrate de descargar este archivo en formato PKCS12 o JSON para usarlo más adelante en este tutorial.
Importante
Apixio will receive a llave privada from an external service. The key must be stored securely and safely, as it cannot be descargada again or retrieved if lost. Asegúrate de descargar este archivo en formato PKCS12 o JSON para usarlo más adelante en este tutorial.
Importante
Apixio will receive a llave privada from an external service. The key must be stored securely and safely, as it cannot be descargada again or retrieved if lost. Asegúrate de descargar este archivo en formato PKCS12 o JSON para usarlo más adelante en este tutorial.
Importante
Al crear la clave de la cuenta de servicio, recibes una descarga única de la información de la clave privada. A menos que estés usando una cuenta de servicio adjunta, asegúrate de descargar este archivo en formato PKCS12 o JSON para que puedas usarlo más adelante en este tutorial.
Importante
Apixio will receive a llave privada from an external service. The key must be stored securely and safely, as it cannot be descargada again or retrieved if lost. Asegúrate de descargar este archivo en formato PKCS12 o JSON para usarlo más adelante en este tutorial.
Importante
Apixio will receive a llave privada from an external service. The key must be stored securely and safely, as it cannot be descargada again or retrieved if lost. Asegúrate de descargar este archivo en formato PKCS12 o JSON para usarlo más adelante en este tutorial.
Crear una llave maestra de cliente (GCP)
Crear una nueva llave maestra de cliente
Crea un anillo de claves y una clave simétrica siguiendo la Crea una clave guía de la documentación oficial de Google.
Esta clave es su clave maestra de cliente (CMK).
Registra los siguientes detalles de tu llave maestra de cliente para utilizarlos en una futura etapa de este tutorial.
CampoRequeridoDescripciónkey_name
Sí
Identificador para la llave maestra de cliente.
key_ring
Sí
Identificador del grupo de claves al que pertenece su clave.
key_version
No
La versión de la clave nombrada.
Ubicación
Sí
Región especificada para tu clave.
endpoint
No
The host y el Puerto opcional del Google Cloud KMS. El valor por defecto es
cloudkms.googleapis.com.
Configura tu proveedor de claves compatible con KMIP
Para conectar un cliente del controlador MongoDB a tu proveedor de llaves compatible con KMIP, debes configurar tu proveedor de llaves compatible con KMIPde modo que acepte el certificado TLS del cliente.
Consulta la documentación de tu proveedor de claves compatible con KMIPpara obtener información sobre cómo aceptar tu certificado de cliente.
Especifica tus certificados
Su cliente debe conectarse con su proveedor de claves compatible con KMIPa través de TLS y presentar un certificado de cliente que sea aceptado por su proveedor de claves compatible con 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);
Importante
Tu certificado de cliente debe estar en formato pcks12. Puedes convertir tu certificado usando OpenSSL con el siguiente comando:
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, }
Importante
Debes utilizar certificados con claves ECDSA cuando utilices el controlador Go con PyKMIP.
Configure las siguientes opciones de máquina virtual para especificar el almacén de claves y el almacén de confianza que contienen sus certificados KMIP TLS y añádalos al comando que utiliza para iniciar su aplicación 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
Nota
Configurar el cliente con SSLContext
Si prefieres configurar tu aplicación cliente utilizando un contexto SSL, usa el método 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 } }
Próximos pasos
Después de instalar los drivers y dependencias y crear una llave maestra de cliente, puedes crear tu aplicación habilitada para Queryable Encryption.