En esta guía se explica cómo crear, aprovisionar y gestionar una instancia de Cloud HSM de un solo inquilino con la CLI de Google Cloud. Después de crear y aprovisionar la instancia, puedes crear y usar claves en la instancia mediante la Google Cloud consola, la API Cloud Key Management Service, la CLI de gcloud y las bibliotecas de cliente.
Para crear y gestionar tu instancia, necesitas la autenticación por cuórum. Cuando creas una instancia, defines el número de aprobaciones de miembros del quórum que se necesitan para ejecutar operaciones de la instancia. Los miembros del quórum siempre deben tener al menos este número de claves de control disponibles para mantener el control administrativo de tu instancia.
Antes de empezar
- Consulta y aplica las prácticas recomendadas de Cloud HSM de un solo inquilino al crear y mantener tu instancia.
- Decide con cuántos miembros del quórum quieres empezar. Se pueden añadir miembros adicionales del quórum más adelante, si los miembros del quórum actuales lo aprueban. El número mínimo de miembros del quórum es tres.
- Decide cuántos miembros del quórum se necesitan para aprobar las propuestas. No puedes cambiar este número después de crear la instancia. Los miembros del quórum siempre deben tener acceso a este número de claves de control para mantener la instancia. El tamaño mínimo del quórum es de dos. El tamaño del quórum necesario debe ser inferior al número de miembros del quórum.
- Decide cómo te asegurarás de que la instancia se actualice a tiempo.
Debes monitorizar el
disableDatede la instancia y proponer, aprobar y ejecutar una operación de actualización de la instancia antes de la fecha límite para evitar tiempos de inactividad no deseados. -
Para obtener los permisos que necesitas para crear, gestionar y usar instancias de HSM de un solo inquilino de Cloud, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto o en un recurso principal:
-
Crear propuestas:
Proponente de HSM de un solo inquilino de Cloud KMS (
cloudkms.hsmSingleTenantProposer) -
Aprobar propuestas:
Miembro de quórum de HSM de un solo inquilino de Cloud KMS (
cloudkms.hsmSingleTenantQuorumMember) -
Ejecutar propuestas:
Ejecutor de HSM de un solo inquilino de Cloud KMS (
cloudkms.hsmSingleTenantExecutor) -
Crear claves:
Creador de claves de HSM de un solo inquilino de Cloud KMS (
roles/cloudkms.hsmSingleTenantKeyCreator)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Crear propuestas:
Proponente de HSM de un solo inquilino de Cloud KMS (
Genera un par de claves RSA-2048 para la autenticación de dos factores (2FA) para cada miembro del quórum. Te recomendamos que utilices tokens físicos para tus llaves de control. Sigue los estándares de tu organización para crear pares de claves RSA-2048 en tokens físicos.
Para hacer una demostración, en esta guía se usa OpenSSL para crear tres claves RSA-2048 respaldadas por software:
openssl genrsa -out rsaprivate1.pem openssl genrsa -out rsaprivate2.pem openssl genrsa -out rsaprivate3.pem openssl rsa -in rsaprivate1.pem -out rsapub1.pem --pubout openssl rsa -in rsaprivate2.pem -out rsapub2.pem --pubout openssl rsa -in rsaprivate3.pem -out rsapub3.pem --puboutAlmacena las claves privadas de forma segura, ya que las necesitas para aprobar propuestas. Ten a mano las claves públicas, ya que las necesitarás para crear la instancia de Cloud HSM de un solo inquilino.
Elige una ubicación de Cloud KMS que admita Cloud HSM de un solo inquilino. Para identificar las ubicaciones compatibles, consulta la lista de ubicaciones de la página Ubicaciones de Cloud KMS. En el filtro Compatibilidad con HSM, selecciona Admite HSM de un solo arrendatario.
Crear y aprovisionar una instancia
Para crear y aprovisionar una instancia de Single-tenant Cloud HSM, debes usar la CLI de gcloud para crear el recurso de instancia, crear una propuesta para registrar tus claves de autenticación y, a continuación, aprobar y ejecutar la propuesta.
Crear la instancia
Este paso debe completarlo un administrador de instancias con el rol Proponente de HSM de un solo inquilino de Cloud KMS.
Configura el proyecto predeterminado.
gcloud config set project PROJECT_IDSustituye PROJECT_ID por el identificador de tu proyecto.
Crea la instancia de Cloud HSM de un solo inquilino.
gcloud kms single-tenant-hsm create --location=LOCATION \ --total-approver-count=QUORUM_MEMBER_COUNT \ --single-tenant-hsm-instance-id=INSTANCE_IDHaz los cambios siguientes:
LOCATION: la ubicación en la que quieres crear tu instancia, por ejemplo,us-central1.QUORUM_MEMBER_COUNT: número total de miembros del quórum. También es el número de claves de control que has creado anteriormente. El valor mínimo es3. Se pueden añadir claves adicionales más adelante con la aprobación del quórum. Debes tener al menos un miembro más del quórum que el tamaño de quórum necesario para recuperarte después de perder una clave de control.INSTANCE_ID: el identificador que quieras usar para la instancia (por ejemplo,example-sthsm-instance). Puedes omitir la marca--single-tenant-hsm-instance-idpara que Cloud HSM asigne un UUID.
Comprueba el estado de la instancia.
gcloud kms single-tenant-hsm describe INSTANCE_ID \ --location=LOCATIONHaz los cambios siguientes:
INSTANCE_ID: el identificador de tu instancia.LOCATION: la ubicación en la que has creado la instancia.
Si el estado es
PENDING_TWO_FACTOR_AUTH_REGISTRATION, puedes aprovisionar la instancia. Por lo general, se tarda entre 5 y 30 minutos en llegar a este estado.
Aprovisionar la instancia
-
Crea una propuesta para registrar tus claves de autenticación de dos factores con la operación
register_two_factor_auth_keys. Para completar este paso, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS. A diferencia de la mayoría de las propuestas, la propuesta register_two_factor_auth_keys requiere retos firmados de todos los miembros del quórum.gcloud kms single-tenant-hsm proposal create INSTANCE_ID
--single-tenant-hsm-instance-proposal-id PROPOSAL_ID
--location LOCATION
--operation-type register_two_factor_auth_keys
--required-approver-count MEMBERS_REQUIRED_FOR_APPROVAL
--two-factor-public-key-pems=PUBLIC_KEY_LISTHaz los cambios siguientes:
INSTANCE_ID: el identificador de tu instancia.PROPOSAL_IDel identificador único que quiere usar en esta propuesta (por ejemplo,set-up-2fa).LOCATION: la ubicación en la que has creado tu instancia.MEMBERS_REQUIRED_FOR_APPROVAL: número de miembros del quórum que deben aprobar una propuesta para que se pueda ejecutar la operación. El valor mínimo es2. Este valor no se puede cambiar después de aprovisionar la instancia. Los miembros de tu quórum siempre deben tener acceso al menos a este número de claves de control para conservar el control administrativo de la instancia.PUBLIC_KEY_LIST: una lista separada por comas de las rutas a las partes de clave pública de todas tus claves de control. Por ejemplo,rsapub1.pem,rsapub2.pem,rsapub3.pem. El número de claves públicas de esta lista debe coincidir con el valor deQUORUM_MEMBER_COUNTque hayas usado anteriormente.
-
Consulta el estado de la propuesta y espera a que cambie a
PENDING.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
Haz los cambios siguientes:
INSTANCE_ID: el identificador de su instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,set-up-2fa.LOCATION: la ubicación en la que has creado tu instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtener los retos de la propuesta. Para aprovisionar una instancia de HSM en la nube de un solo inquilino, se necesitan retos firmados de todos los miembros del quórum.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
Este comando devuelve una matriz de retos en formato JSON.
-
Para cada clave, decodifica el reto con `basenc --base64url -d` y fírmalo con la clave privada correspondiente.
echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
Haz los cambios siguientes:
N: el número del reto. Por ejemplo,1para el primer reto,2para el segundo, etc.CHALLENGE_N: el contenido del reto númeroNdel resultado del paso anterior.PRIVATE_KEY_N: la ruta al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer reto.
-
Aprobar la propuesta subiendo los desafíos firmados. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol Miembro de quórum de HSM de un solo inquilino de Cloud KMS.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
Sustituye
SIGNED_QUORUM_CHALLENGE_LISTpor una matriz con formato JSON de retos, donde cada elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente. Por ejemplo,[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]para enviar los dos primeros retos firmados en un solo comando.Una vez que hayas subido el número necesario de retos firmados, el estado de la propuesta cambiará a
APPROVED. -
Una vez que se haya aprobado la propuesta, usa el comando
executepara completar la operaciónregister_two_factor_auth_keys. Para completar este paso, debes tener el rol Ejecutor de HSM de un solo inquilino de Cloud KMS y hacerlo en un plazo de 24 horas después de crear la propuesta.gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID
--single_tenant_hsm_instance INSTANCE_ID --location LOCATIONSe trata de una operación de larga duración que aprovisiona usuarios y crea copias de seguridad. La instancia se convierte en
ACTIVEal cabo de entre 20 y 30 minutos. Una vez que la instancia esté
ACTIVE, consulta sus detalles para ver ladisableDate:gcloud kms single-tenant-hsm describe INSTANCE_ID
--location=LOCATIONAnota el
disableDatede la instancia. Debes completar una operaciónrefresh_single_tenant_hsm_instanceantes de esa hora o tu instancia se inhabilitará.
Ver instancias
Los usuarios con cualquiera de los siguientes roles pueden ver una lista de instancias de Cloud HSM de un solo inquilino y sus estados:
- Proposer de HSM de un solo inquilino de Cloud KMS
- Miembro de quórum de HSM de un solo inquilino de Cloud KMS
- Ejecutor de HSM de un solo inquilino de Cloud KMS
- Lector de Cloud KMS
- Administrador de Cloud KMS
Asegúrate de revisar el estado de tus instancias con regularidad. Las instancias deben actualizarse periódicamente para mantener el estado Activa.
Se pueden usar las instancias que tengan el estado Activo. Los desarrolladores que necesiten crear o importar claves en instancias de Cloud HSM de un solo inquilino necesitan el identificador de recurso de la instancia. El identificador de recurso tiene el siguiente formato:
projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME
Para ver las instancias de tu organización y encontrar sus identificadores de recursos, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página Infraestructura de KMS.
En la tarjeta Instancia de HSM de un solo arrendatario, haz clic en Ver. En la página Instancia de HSM de un solo arrendatario se muestra una lista de todas las instancias de HSM de un solo arrendatario de Cloud que tienes permiso para ver.
Para ver los detalles de una instancia, haz clic en su nombre. En la página Detalles de la instancia de HSM de un solo arrendatario se muestran los detalles de la instancia seleccionada, incluido el identificador de recurso completo de la instancia y una lista de propuestas creadas para la instancia.
Opcional: Para ver o descargar las claves públicas asociadas a las claves de autenticación de dos factores (2FA) actuales de los miembros del quórum, haz clic en Descargar clave pública. Puedes comparar las claves públicas con tus claves privadas de autenticación de dos factores para verificar qué claves de control están activas.
gcloud
Para ver una lista de las instancias que ya tienes, usa el método kms single-tenant-hsm list.
gcloud kms single-tenant-hsm list projects/PROJECT_ID/locations/LOCATION
Haz los cambios siguientes:
PROJECT_ID: identificador del proyecto en el que quieres ver las instancias de Cloud HSM de un solo inquilino.LOCATION: la ubicación en la que quieres ver las instancias de Cloud HSM de un solo inquilino.
Consulta los detalles de una instancia con el método kms single-tenant-hsm describe.
gcloud kms single-tenant-hsm describe --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
Haz los cambios siguientes:
LOCATION: la ubicación en la que quieres ver las instancias de Cloud HSM de un solo inquilino.INSTANCE_ID: la instancia de la que quieres ver los detalles.
Usar la instancia
Mientras tu instancia esté ACTIVE, puedes crear y usar claves. Puedes crear claves de Cloud HSM de un solo inquilino en cualquier conjunto de claves que se encuentre en la misma ubicación que una instancia de Cloud HSM de un solo inquilino activa.
Para crear claves de Cloud HSM de un solo inquilino, se necesita el rol Creador de claves de HSM de un solo inquilino de Cloud KMS, además del rol Administrador de Cloud KMS.
Una vez creadas, no se necesitan permisos especiales para usar las claves de Cloud HSM de un solo inquilino.
Crear clave
Cuando creas una clave de Cloud HSM de un solo inquilino, debes especificar la instancia de Cloud HSM de un solo inquilino en la que quieres crearla. De lo contrario, el proceso es similar al de crear cualquier otra clave. Para obtener instrucciones detalladas, consulta el artículo Crear una clave.
Importar una clave
Cuando importas material de clave en una clave de Cloud HSM de un solo inquilino, debes especificar la instancia de Cloud HSM de un solo inquilino en la que quieres almacenarlo. De lo contrario, el proceso es similar al de importar cualquier otra clave. Para obtener instrucciones detalladas, consulta el artículo Importar una versión de una clave en Cloud Key Management Service.
Usar una llave
Una vez creada la clave, usar una clave de Cloud HSM de un solo inquilino es igual que usar cualquier otra clave de Cloud HSM. No es necesario especificar la instancia de Single-tenant Cloud HSM para usar la clave.
Mantener una instancia
Una vez aprovisionada la instancia, eres responsable de mantenerla. Para mantener la instancia, debes crear propuestas de operaciones de mantenimiento, obtener la aprobación del quórum y, a continuación, ejecutar la operación aprobada. Solo puede haber una propuesta activa a la vez. Si decides no seguir adelante con una propuesta, no podrás proponer otra operación hasta que elimines la propuesta activa o hasta que caduque.
Debes actualizar tu instancia antes del disableDate. Si necesitas comprobar el disableDate de una instancia, puedes ver los detalles de la instancia.
Ver propuestas de instancias
Para ver las propuestas de una instancia, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página Infraestructura de KMS.
En la tarjeta Instancia de HSM de un solo arrendatario, haga clic en Ver. En la página Instancia de HSM de un solo arrendatario se muestra una lista de todas las instancias de HSM de un solo arrendatario de Cloud que tienes permiso para ver.
Busca la instancia en la que quieras ver las propuestas y haz clic en su nombre. La página Detalles de la instancia de HSM de un solo arrendatario muestra información sobre la instancia, incluida una lista de propuestas creadas para la instancia.
Opcional: Para filtrar la lista de propuestas, haz clic en la barra Filtrar e introduce los criterios de filtro. Por ejemplo, puede filtrar la lista para ver solo la propuesta que está pendiente de aprobación o solo las propuestas que se han completado correctamente.
gcloud
-
Consulta una lista de propuestas con el método
kms single-tenant-hsm proposal list.gcloud kms single-tenant-hsm proposal list --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
Haz los cambios siguientes:
LOCATION: la ubicación en la que quieres ver las instancias de Cloud HSM de un solo inquilino.INSTANCE_ID: el identificador de la instancia de Cloud HSM de un solo arrendatario de la que quieras ver las propuestas.
Actualizar una instancia
Puedes actualizar una instancia para mantenerla al día y evitar tiempos de inactividad no planificados. Esta operación requiere autenticación de quórum. Una vez aprobada la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
Cuando actualizas una instancia, el disableDate se establece en 120 días a partir del momento de la actualización.
-
Crea una propuesta para actualizar la instancia con el tipo de operación
refresh_single_tenant_hsm_instance. Para este paso, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type refresh_single_tenant_hsm_instance
Haz los cambios siguientes:
INSTANCE_ID: identificador de la instancia.LOCATION: la ubicación en la que has creado la instancia.PROPOSAL_ID: el identificador único que quieras usar para esta propuesta (por ejemplo,refresh_instance).
-
Consulta el estado de la propuesta y espera a que cambie a
PENDING.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
Haz los cambios siguientes:
INSTANCE_ID: el identificador de tu instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,refresh_instance.LOCATION: la ubicación en la que has creado tu instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtener los retos de la propuesta.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
Este comando devuelve una matriz de retos en formato JSON.
-
Por cada reto devuelto en el paso anterior, decodifica el reto con
basenc --base64url -dy fírmalo con una clave privada.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
Haz los cambios siguientes:
N: el número del reto. Por ejemplo,1para el primer reto,2para el segundo, etc.CHALLENGE_N: el contenido del reto númeroNdel resultado del paso anterior.PRIVATE_KEY_N: la ruta al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer reto.
-
Aprobar la propuesta subiendo los desafíos firmados. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol Miembro de quórum de HSM de un solo inquilino de Cloud KMS.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
Sustituye
SIGNED_QUORUM_CHALLENGE_LISTpor una matriz con formato JSON de retos, donde cada elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente. Por ejemplo,[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]para enviar los dos primeros retos firmados en un solo comando.Una vez que hayas subido el número necesario de retos firmados, el estado de la propuesta cambiará a
APPROVED. -
Ejecuta la propuesta. Para completar este paso, debes tener el rol Ejecutor de HSM de un solo inquilino de Cloud KMS y hacerlo en un plazo de 24 horas después de crear la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez completada la operación, la instancia permanece en el estado `ACTIVE` y el
disableDatese establece en 120 días a partir del momento de la actualización.
Añadir un miembro del quórum
Puedes añadir un miembro del quórum a una instancia. Esta operación requiere autenticación por cuórum. Una vez aprobada la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
Genera un nuevo par de claves RSA-2048 para el nuevo miembro del quórum. Sigue los estándares de tu organización para crear pares de claves RSA-2048 en tokens físicos.
Guarda la clave privada de forma segura, ya que la necesitarás para aprobar propuestas. Ten a mano la clave pública, ya que la necesitarás para añadir el nuevo miembro del quórum a la instancia de Cloud HSM de un solo inquilino.
-
Crea una propuesta para añadir un miembro del quórum a la instancia mediante la operación
add_quorum_member. Para este paso, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type add_quorum_member \ --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
Haz los cambios siguientes:
INSTANCE_ID: identificador de la instancia.LOCATION: la ubicación en la que has creado la instancia.PROPOSAL_ID: el identificador único que quieras usar para esta propuesta (por ejemplo,add_quorum_member).PATH_TO_PUBLIC_KEY: la ruta a la nueva clave pública. Por ejemplo,rsapub4.pem.
-
Consulta el estado de la propuesta y espera a que cambie a
PENDING.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
Haz los cambios siguientes:
INSTANCE_ID: el identificador de tu instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,add_quorum_member.LOCATION: la ubicación en la que has creado tu instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtener los retos de la propuesta. Para añadir un nuevo miembro del quórum, se necesitan retos firmados de un quórum de miembros actuales, además de un reto firmado del nuevo miembro con la nueva clave.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](requiredActionQuorumParameters.requiredChallenges,requiredActionQuorumParameters.quorumChallenges)"
Este comando devuelve una matriz de retos en formato JSON. El campo
requiredActionQuorumParameters.requiredChallengescontiene un reto para la nueva clave que estás registrando. El camporequiredActionQuorumParameters.quorumChallengescontiene retos para un quórum de las claves existentes. Debes firmar todos los retos del objetorequiredActionQuorumParameters. -
Por cada reto devuelto en el paso anterior, decodifica el reto con
basenc --base64url -dy fírmalo con una clave privada.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
Haz los cambios siguientes:
N: el número del reto. Por ejemplo,1para el primer reto,2para el segundo, etc.CHALLENGE_N: el contenido del reto númeroNdel resultado del paso anterior.PRIVATE_KEY_N: la ruta al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer reto.
-
Aprobar la propuesta subiendo los retos firmados. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol Miembro de quórum de HSM de un solo inquilino de Cloud KMS.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST" \ --required-challenge-replies="SIGNED_REQUIRED_CHALLENGE_LIST"
Haz los cambios siguientes:
SIGNED_QUORUM_CHALLENGE_LIST: una matriz con formato JSON de retos firmados con claves privadas que ya están registradas. Cada elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente. Por ejemplo,[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]para enviar los dos primeros retos firmados en un solo comando.SIGNED_REQUIRED_CHALLENGE_LIST: un array con formato JSON que contiene el reto firmado con la nueva clave privada, donde el único elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente (por ejemplo,[('signed-challenge-newkey.txt','rsapub-newkey.pem')]).
Una vez que hayas subido el número necesario de retos firmados, el estado de la propuesta cambiará a
APPROVED. -
Ejecuta la propuesta. Para completar este paso, debes tener el rol Ejecutor de HSM de un solo inquilino de Cloud KMS y hacerlo en un plazo de 24 horas después de crear la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez completada la operación, el nuevo miembro del quórum podrá participar en los retos para aprobar propuestas. La clave pública que has añadido ahora se incluye en la lista de claves públicas de los detalles de la instancia.
Quitar un miembro del quórum
Si tienes más miembros del quórum que el tamaño de quórum necesario, puedes quitar un miembro del quórum de una instancia. Esta operación requiere autenticación de quórum. Una vez aprobada la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
-
Crea una propuesta para quitar un miembro del quórum de la instancia mediante la operación
remove_quorum_member. Para este paso, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type remove_quorum_member \ --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
Haz los cambios siguientes:
INSTANCE_ID: identificador de la instancia.LOCATION: la ubicación en la que has creado la instancia.PROPOSAL_ID: el identificador único que quieras usar para esta propuesta (por ejemplo,remove_quorum_member).PATH_TO_PUBLIC_KEY: la ruta a la clave pública que quieras quitar de la instancia. Por ejemplo,rsapub3.pem. Una vez completada la operación, la clave privada correspondiente no se podrá usar para aprobar propuestas.
-
Consulta el estado de la propuesta y espera a que cambie a
PENDING.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
Haz los cambios siguientes:
INSTANCE_ID: el identificador de su instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,remove_quorum_member.LOCATION: la ubicación en la que has creado tu instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtener los retos de la propuesta.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
Este comando devuelve una matriz de retos en formato JSON.
-
Por cada reto devuelto en el paso anterior, decodifica el reto con
basenc --base64url -dy fírmalo con una clave privada.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
Haz los cambios siguientes:
N: el número del reto. Por ejemplo,1para el primer reto,2para el segundo, etc.CHALLENGE_N: el contenido del reto númeroNdel resultado del paso anterior.PRIVATE_KEY_N: la ruta al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer reto.
-
Aprobar la propuesta subiendo los desafíos firmados. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol Miembro de quórum de HSM de un solo inquilino de Cloud KMS.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
Sustituye
SIGNED_QUORUM_CHALLENGE_LISTpor una matriz con formato JSON de retos, donde cada elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente. Por ejemplo,[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]para enviar los dos primeros retos firmados en un solo comando.Una vez que hayas subido el número necesario de retos firmados, el estado de la propuesta cambiará a
APPROVED. -
Ejecuta la propuesta. Para completar este paso, debes tener el rol Ejecutor de HSM de un solo inquilino de Cloud KMS y hacerlo en un plazo de 24 horas después de crear la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez completada la operación, el miembro del quórum eliminado ya no podrá participar en las verificaciones para aprobar propuestas. La clave pública que has eliminado ya no se incluye en la lista de claves públicas de los detalles de la instancia.
Inhabilitar una instancia
Puedes inhabilitar una instancia para bloquear temporalmente el acceso a todas sus claves. Esta operación requiere autenticación de quórum. Una vez aprobada la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
Mientras una instancia esté inhabilitada, las claves almacenadas en ella seguirán apareciendo como ACTIVE, pero no se podrán usar. Si intentas realizar operaciones criptográficas con una clave en una instancia inhabilitada, se producirá un error.
-
Crea una propuesta para inhabilitar la instancia con el tipo de operación
disable_single_tenant_hsm_instance. Para este paso, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type disable_single_tenant_hsm_instance
Haz los cambios siguientes:
INSTANCE_ID: identificador de la instancia.LOCATION: la ubicación en la que has creado la instancia.PROPOSAL_ID: el identificador único que quieras usar para esta propuesta (por ejemplo,disable_instance).
-
Consulta el estado de la propuesta y espera a que cambie a
PENDING.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
Haz los cambios siguientes:
INSTANCE_ID: el identificador de su instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,disable_instance.LOCATION: la ubicación en la que has creado tu instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtener los retos de la propuesta.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
Este comando devuelve una matriz de retos en formato JSON.
-
Por cada reto devuelto en el paso anterior, decodifica el reto con
basenc --base64url -dy fírmalo con una clave privada.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
Haz los cambios siguientes:
N: el número del reto. Por ejemplo,1para el primer reto,2para el segundo, etc.CHALLENGE_N: el contenido del reto númeroNdel resultado del paso anterior.PRIVATE_KEY_N: la ruta al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer reto.
-
Aprobar la propuesta subiendo los desafíos firmados. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol Miembro de quórum de HSM de un solo inquilino de Cloud KMS.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
Sustituye
SIGNED_QUORUM_CHALLENGE_LISTpor una matriz con formato JSON de retos, donde cada elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente. Por ejemplo,[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]para enviar los dos primeros retos firmados en un solo comando.Una vez que hayas subido el número necesario de retos firmados, el estado de la propuesta cambiará a
APPROVED. -
Ejecuta la propuesta. Para completar este paso, debes tener el rol Ejecutor de HSM de un solo inquilino de Cloud KMS y hacerlo en un plazo de 24 horas después de crear la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez completada la operación, la instancia permanece en el estado
DISABLEDy no se puede usar hasta que se vuelva a habilitar.
Habilitar una instancia
Puedes volver a habilitar una instancia de DISABLED para restaurar el acceso a ella y a sus claves.
Esta operación requiere autenticación de quórum. Una vez aprobada la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
-
Crea una propuesta para habilitar la instancia con el tipo de operación
enable_single_tenant_hsm_instance. Para este paso, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type enable_single_tenant_hsm_instance
Haz los cambios siguientes:
INSTANCE_ID: identificador de la instancia.LOCATION: la ubicación en la que has creado la instancia.PROPOSAL_ID: el identificador único que quieras usar para esta propuesta (por ejemplo,enable_instance).
-
Consulta el estado de la propuesta y espera a que cambie a
PENDING.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
Haz los cambios siguientes:
INSTANCE_ID: el identificador de su instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,enable_instance.LOCATION: la ubicación en la que has creado tu instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtener los retos de la propuesta.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
Este comando devuelve una matriz de retos en formato JSON.
-
Por cada reto devuelto en el paso anterior, decodifica el reto con
basenc --base64url -dy fírmalo con una clave privada.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
Haz los cambios siguientes:
N: el número del reto. Por ejemplo,1para el primer reto,2para el segundo, etc.CHALLENGE_N: el contenido del reto númeroNdel resultado del paso anterior.PRIVATE_KEY_N: la ruta al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer reto.
-
Aprobar la propuesta subiendo los desafíos firmados. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol Miembro de quórum de HSM de un solo inquilino de Cloud KMS.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
Sustituye
SIGNED_QUORUM_CHALLENGE_LISTpor una matriz con formato JSON de retos, donde cada elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente. Por ejemplo,[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]para enviar los dos primeros retos firmados en un solo comando.Una vez que hayas subido el número necesario de retos firmados, el estado de la propuesta cambiará a
APPROVED. -
Ejecuta la propuesta. Para completar este paso, debes tener el rol Ejecutor de HSM de un solo inquilino de Cloud KMS y hacerlo en un plazo de 24 horas después de crear la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez completada la operación, la instancia vuelve al estado `ACTIVE` y el
disableDatese establece en 120 días a partir del momento de la actualización.
Eliminar una instancia
Puedes eliminar una instancia para destruirla de forma permanente, así como sus claves. Esta operación requiere autenticación de quórum. Una vez aprobada la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
Una vez que se elimina una instancia, las claves almacenadas en ella siguen apareciendo como ACTIVE, pero no se pueden usar. Si intentas realizar operaciones criptográficas con una clave de una instancia eliminada, se producirá un error.
-
Crea una propuesta para eliminar la instancia con el tipo de operación
delete_single_tenant_hsm_instance. Para este paso, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type delete_single_tenant_hsm_instance
Haz los cambios siguientes:
INSTANCE_ID: identificador de la instancia que quieres eliminar.LOCATION: la ubicación en la que has creado la instancia.PROPOSAL_ID: el identificador único que quieras usar para esta propuesta (por ejemplo,delete_instance).
-
Consulta el estado de la propuesta y espera a que cambie a
PENDING.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
Haz los cambios siguientes:
INSTANCE_ID: el identificador de su instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,delete_instance.LOCATION: la ubicación en la que has creado tu instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtener los retos de la propuesta.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
Este comando devuelve una matriz de retos en formato JSON.
-
Por cada reto devuelto en el paso anterior, decodifica el reto con
basenc --base64url -dy fírmalo con una clave privada.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
Haz los cambios siguientes:
N: el número del reto. Por ejemplo,1para el primer reto,2para el segundo, etc.CHALLENGE_N: el contenido del reto númeroNdel resultado del paso anterior.PRIVATE_KEY_N: la ruta al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer reto.
-
Aprobar la propuesta subiendo los desafíos firmados. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol Miembro de quórum de HSM de un solo inquilino de Cloud KMS.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
Sustituye
SIGNED_QUORUM_CHALLENGE_LISTpor una matriz con formato JSON de retos, donde cada elemento de la lista es una tupla que contiene la ruta al reto firmado y la ruta a la clave pública correspondiente. Por ejemplo,[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]para enviar los dos primeros retos firmados en un solo comando.Una vez que hayas subido el número necesario de retos firmados, el estado de la propuesta cambiará a
APPROVED. -
Asegúrate de que quieres eliminar la instancia y destruir criptográficamente todos los datos encriptados con las claves creadas en esta instancia. Después, ejecuta la propuesta. Para completar este paso, debes tener el rol Ejecutor de HSM de un solo inquilino de Cloud KMS y hacerlo en un plazo de 24 horas después de crear la propuesta.
Advertencia: El siguiente comando es irreversible. Se pueden perder datos de forma permanente. Google no puede ayudarte a recuperar las claves de una instancia eliminada.gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez completada la operación, se elimina la instancia.
Eliminar una propuesta
Si decides no aprobar ni ejecutar una propuesta, puedes eliminarla antes de que caduque. Si eliminas una propuesta pendiente, no podrás aprobarla y podrás crear una nueva. Si elimina una propuesta aprobada, no podrá ejecutar la operación.
-
Elimina una propuesta con el comando
proposal delete. Para ello, se necesita el rol Proponente de HSM de un solo inquilino de Cloud KMS.gcloud kms single-tenant-hsm proposal delete PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID
Haz los cambios siguientes:
INSTANCE_ID: identificador de la instancia.LOCATION: la ubicación en la que has creado la instancia.PROPOSAL_ID: identificador único de la propuesta que quieres eliminar. Por ejemplo,proposal_to_delete.
Siguientes pasos
- Consulta más información sobre Cloud HSM de un solo inquilino.