En esta guía, se muestra cómo crear, aprovisionar y administrar una instancia de Cloud HSM de un solo arrendatario con Google Cloud CLI. Después de crear y aprovisionar tu instancia, puedes crear y usar claves en ella con la consola de Google Cloud , la API de Cloud Key Management Service, gcloud CLI y las bibliotecas cliente.
Para crear y administrar tu instancia, se requiere autenticación de quórum. Cuando creas tu instancia, defines la cantidad de aprobaciones de miembros del quórum que se requieren para ejecutar operaciones de la instancia. Los miembros del quórum siempre deben tener al menos esta cantidad de claves de control disponibles para mantener el control administrativo de tu instancia.
Antes de comenzar
- Revisa y aplica las prácticas recomendadas de Cloud HSM de usuario único cuando crees y mantengas tu instancia.
- Decide con cuántos miembros del quórum quieres comenzar. Se pueden agregar miembros adicionales del quórum más adelante si los miembros existentes del quórum lo aprueban. La cantidad mínima de miembros del quórum es tres.
- Decide cuántos miembros del quórum se requieren para aprobar propuestas. No puedes cambiar este número después de crear la instancia. Los miembros del quórum siempre deben tener acceso a esta cantidad 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 requerido debe ser inferior a la cantidad de miembros del quórum.
- Decide cómo te asegurarás de que la instancia se actualice a tiempo.
Debes supervisar 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 un tiempo de inactividad no deseado. -
Para obtener los permisos que necesitas para crear, administrar y usar instancias de Cloud HSM de un solo arrendatario, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto o un recurso principal:
-
Crear propuestas:
Proponente de HSM de usuario único de Cloud KMS (
cloudkms.hsmSingleTenantProposer) -
Aprobar propuestas:
Miembro del quórum de HSM de usuario único de Cloud KMS (
cloudkms.hsmSingleTenantQuorumMember) -
Ejecutar propuestas:
Ejecutor de HSM de usuario único de Cloud KMS (
cloudkms.hsmSingleTenantExecutor) -
Crear claves:
Creador de claves de HSM de usuario único de Cloud KMS (
roles/cloudkms.hsmSingleTenantKeyCreator)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
-
Crear propuestas:
Proponente de HSM de usuario único de Cloud KMS (
Para cada miembro del quórum, genera un par de claves RSA-2048 para la autenticación de dos factores (2FA). Te recomendamos que uses tokens físicos para tus claves de control. Sigue los estándares de tu organización para crear pares de claves RSA-2048 en tokens físicos.
A modo de 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 necesitarás para aprobar propuestas. Ten a mano las claves públicas, ya que las necesitarás para crear la instancia de HSM de Cloud de usuario único.
Elige una ubicación de Cloud KMS que admita HSM de usuario único de Cloud. Para identificar las ubicaciones compatibles, consulta la lista de ubicaciones en la página Ubicaciones de Cloud KMS. En el filtro Compatibilidad con HSM, selecciona Admite HSM de usuario único.
Crea y aprovisiona una instancia
Para crear y aprovisionar una instancia de Cloud HSM de usuario único, usa gcloud CLI para crear el recurso de instancia, crear una propuesta para registrar tus claves de autenticación y, luego, aprobar y ejecutar la propuesta.
Crea la instancia
Un administrador de instancias con el rol de Proponente de HSM de usuario único de Cloud KMS debe completar este paso.
Configura tu proyecto predeterminado.
gcloud config set project PROJECT_IDReemplaza PROJECT_ID por el identificador de tu proyecto.
Crea la instancia de Cloud HSM de usuario único.
gcloud kms single-tenant-hsm create --location=LOCATION \ --total-approver-count=QUORUM_MEMBER_COUNT \ --single-tenant-hsm-instance-id=INSTANCE_IDReemplaza lo siguiente:
LOCATION: Es la ubicación en la que deseas crear tu instancia, por ejemplo,us-central1.QUORUM_MEMBER_COUNT: Es la cantidad total de miembros del quórum. Esta también es la cantidad de claves de control que creaste anteriormente. El valor mínimo es3. Se pueden agregar claves adicionales más adelante con la aprobación del quórum. Debes tener al menos un miembro del quórum más que el tamaño de quórum requerido para recuperarte después de perder una clave de control.INSTANCE_ID: Es el identificador que deseas usar para la instancia, por ejemplo,example-sthsm-instance. Puedes omitir la marca--single-tenant-hsm-instance-idpara que Cloud HSM asigne un UUID.
Verifica el estado de la instancia.
gcloud kms single-tenant-hsm describe INSTANCE_ID \ --location=LOCATIONReemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.LOCATION: Es la ubicación en la que creaste 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.
Aprovisiona la instancia
-
Crea una propuesta para registrar tus claves de autenticación de dos factores con la operación
register_two_factor_auth_keys. Este paso requiere el rol de Proponente de HSM de usuario único de Cloud KMS. A diferencia de la mayoría de las propuestas, la propuesta register_two_factor_auth_keys requiere desafíos 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_LISTReemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDes el identificador único que deseas usar para esta propuesta, por ejemplo,set-up-2fa.LOCATION: Es la ubicación en la que creaste la instancia.MEMBERS_REQUIRED_FOR_APPROVAL: Es la cantidad de miembros del quórum que deben aprobar una propuesta antes de que se pueda ejecutar la operación. El valor mínimo es2. Este valor no se puede cambiar después de que se aprovisiona la instancia. Los miembros del quórum siempre deben tener acceso a al menos esta cantidad de claves de control para conservar el control administrativo de la instancia.PUBLIC_KEY_LIST: Es una lista separada por comas de las rutas de acceso a las partes de clave pública de todas tus claves de control, por ejemplo,rsapub1.pem,rsapub2.pem,rsapub3.pem. La cantidad de claves públicas en esta lista debe coincidir con el valor deQUORUM_MEMBER_COUNTque usaste 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDes el identificador de la propuesta, por ejemplo,set-up-2fa.LOCATION: Es la ubicación en la que creaste la instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtiene los desafíos de la propuesta. El aprovisionamiento de una nueva instancia de HSM de Cloud de usuario único requiere desafíos 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 un array de desafíos con formato JSON.
-
Para cada clave, decodifica el desafío 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
Reemplaza lo siguiente:
N: Es el número del desafío, por ejemplo,1para el primer desafío,2para el segundo, y así sucesivamente.CHALLENGE_N: Es el contenido del desafío númeroNdel resultado del paso anterior.PRIVATE_KEY_N: Es la ruta de acceso al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer desafío.
-
Sube los desafíos firmados para aprobar la propuesta. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol de miembro del quórum de HSM de usuario único 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"
Reemplaza
SIGNED_QUORUM_CHALLENGE_LISTpor un array con formato JSON de desafíos, en el que cada elemento de la lista sea una tupla que contenga la ruta de acceso al desafío firmado y la ruta de acceso 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 desafíos firmados en un solo comando.Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a
APPROVED. -
Una vez que se apruebe la propuesta, usa el comando
executepara completar la operaciónregister_two_factor_auth_keys. Este paso requiere el rol de ejecutor de HSM de usuario único de Cloud KMS y debe completarse en un plazo de 24 horas después de que se creó la propuesta.gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID
--single_tenant_hsm_instance INSTANCE_ID --location LOCATIONEsta es una operación de larga duración que aprovisiona usuarios y crea copias de seguridad. La instancia se convierte en
ACTIVEdespués de 20 a 30 minutos. Después de que la instancia esté
ACTIVE, consulta los detalles de la instancia para ver eldisableDate:gcloud kms single-tenant-hsm describe INSTANCE_ID
--location=LOCATIONAnota la
disableDatede la instancia. Debes completar una operación derefresh_single_tenant_hsm_instanceantes de esta hora, o se inhabilitará tu instancia.
Ver instancias
Los usuarios con cualquiera de los siguientes roles pueden ver una lista de las instancias de HSM de Cloud de usuario único y sus estados:
- Proponente de HSM de usuario único de Cloud KMS
- Miembro del quórum de HSM de usuario único de Cloud KMS
- Ejecutor de HSM de usuario único de Cloud KMS
- Visualizador de Cloud KMS
- Administrador de Cloud KMS
Asegúrate de revisar el estado de tus instancias con regularidad. Las instancias deben actualizarse con regularidad para permanecer Activas.
Se pueden usar las instancias en el estado Activo. Los desarrolladores que necesitan crear o importar claves en instancias de Cloud HSM de usuario único necesitan el identificador de recurso de la instancia. El identificador del recurso usa 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:
Console
En la consola de Google Cloud , ve a la página Infraestructura de KMS.
En la tarjeta Instancia de HSM de usuario único, haz clic en Ver. En la página Instancia de HSM de usuario único, se muestra una lista de todas las instancias de HSM de usuario único de Cloud HSM 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 usuario único, se muestran los detalles de la instancia seleccionada, incluido el identificador de recurso completo de la instancia y una lista de las propuestas creadas para la instancia.
Opcional: Para ver o descargar las claves públicas asociadas con las claves actuales de autenticación de dos factores (2FA) de los miembros del quórum, haz clic en Obtener clave pública. Puedes comparar las claves públicas con tus claves privadas de A2F para verificar qué claves de control están activas.
gcloud
Consulta una lista de las instancias existentes con el método kms single-tenant-hsm list.
gcloud kms single-tenant-hsm list projects/PROJECT_ID/locations/LOCATION
Reemplaza lo siguiente:
PROJECT_ID: Es el identificador del proyecto en el que deseas ver las instancias de HSM de Cloud de un solo inquilino.LOCATION: Es la ubicación en la que deseas ver las instancias de HSM de Cloud de un solo arrendatario.
Consulta los detalles de una instancia existente con el método kms single-tenant-hsm describe.
gcloud kms single-tenant-hsm describe --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
Reemplaza lo siguiente:
LOCATION: Es la ubicación en la que deseas ver las instancias de HSM de Cloud de un solo arrendatario.INSTANCE_ID: Es la instancia de la que deseas ver los detalles.
Cómo usar la instancia
Mientras tu instancia esté en ACTIVE, puedes crear y usar claves. Puedes crear claves de Cloud HSM de usuario único en cualquier llavero de claves que exista en la misma ubicación que una instancia activa de Cloud HSM de usuario único.
Para crear claves de Cloud HSM de usuario único, se requiere el rol de Creador de claves de HSM de usuario único de Cloud KMS, además del rol de Administrador de Cloud KMS.
Después de crearlas, el uso de claves de Cloud HSM de usuario único no requiere permisos especiales.
Crear una clave
Cuando creas una clave de Cloud HSM de usuario único, debes especificar la instancia de Cloud HSM de usuario único en la que deseas crearla. De lo contrario, el proceso es similar al de crear cualquier otra clave. Para obtener instrucciones detalladas, consulta Crea una clave.
Importa una clave
Cuando importas material de clave a una clave de Cloud HSM de usuario único, debes especificar la instancia de Cloud HSM de usuario único en la que deseas almacenarlo. De lo contrario, el proceso es similar al de importar cualquier otra clave. Para obtener instrucciones detalladas, consulta Importa una versión de clave a Cloud Key Management Service.
Cómo usar una llave
Después de crear la clave, usar una clave de Cloud HSM de usuario único es idéntico a usar cualquier otra clave de Cloud HSM. No es necesario que especifiques la instancia de HSM de usuario único de Cloud para usar la clave.
Cómo mantener una instancia
Una vez que se aprovisiona 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, luego, 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 borres la propuesta activa o esperes a que venza.
Debes actualizar tu instancia antes de la disableDate. Si necesitas verificar el disableDate de una instancia, puedes ver los detalles de la instancia.
Cómo ver las propuestas de instancias
Para ver las propuestas de una instancia, sigue estos pasos:
Console
En la consola de Google Cloud , ve a la página Infraestructura de KMS.
En la tarjeta Instancia de HSM de usuario único, haz clic en Ver. En la página Instancia de HSM de usuario único, se muestra una lista de todas las instancias de HSM de Cloud de usuario único que tienes permiso para ver.
Busca la instancia en la que deseas ver las propuestas y, luego, haz clic en su nombre. En la página Detalles de la instancia de HSM de usuario único, se muestran los detalles de la instancia, incluida una lista de las propuestas creadas para ella.
Opcional: Para filtrar la lista de propuestas, haz clic en la barra de Filtro y, luego, ingresa tus criterios de filtrado. Por ejemplo, puedes filtrar la lista para ver solo la propuesta que está pendiente de aprobación o solo las propuestas que se completaron correctamente.
gcloud
-
Consulta una lista de las propuestas existentes con el método
kms single-tenant-hsm proposal list.gcloud kms single-tenant-hsm proposal list --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
Reemplaza lo siguiente:
LOCATION: Es la ubicación en la que deseas ver las instancias de HSM de Cloud de un solo arrendatario.INSTANCE_ID: Es el identificador de la instancia de HSM de usuario único de Cloud para la que deseas ver las propuestas.
Actualiza una instancia
Puedes actualizar una instancia para mantenerla actualizada y ayudar a evitar el tiempo de inactividad no planificado. Esta operación requiere autenticación de quórum. Una vez que se aprueba la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
Cuando actualizas una instancia, el valor de 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. Este paso requiere el rol de Proponente de HSM de usuario único 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de la instancia.LOCATION: Es la ubicación en la que creaste la instancia.PROPOSAL_ID: Es el identificador único que deseas 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDes el identificador de la propuesta, por ejemplo,refresh_instance.LOCATION: Es la ubicación en la que creaste la instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtiene los desafíos 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 un array de desafíos con formato JSON.
-
Para cada desafío que se devolvió en el paso anterior, decodifícalo 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
Reemplaza lo siguiente:
N: Es el número del desafío, por ejemplo,1para el primer desafío,2para el segundo, y así sucesivamente.CHALLENGE_N: Es el contenido del desafío númeroNdel resultado del paso anterior.PRIVATE_KEY_N: Es la ruta de acceso al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer desafío.
-
Sube los desafíos firmados para aprobar la propuesta. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol de miembro del quórum de HSM de usuario único 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"
Reemplaza
SIGNED_QUORUM_CHALLENGE_LISTpor un array con formato JSON de desafíos, en el que cada elemento de la lista sea una tupla que contenga la ruta de acceso al desafío firmado y la ruta de acceso 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 desafíos firmados en un solo comando.Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a
APPROVED. -
Ejecuta la propuesta. Este paso requiere el rol de Ejecutor de HSM de usuario único de Cloud KMS y debe completarse en un plazo de 24 horas después de que se creó la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez que se completa la operación, la instancia permanece en el estado `ACTIVE` y
disableDatese establece en 120 días a partir del momento de la actualización.
Cómo agregar un miembro del quórum
Puedes agregar un miembro del quórum a una instancia. Esta operación requiere autenticación de quórum. Una vez que se aprueba 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.
Almacena 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 agregar el nuevo miembro del quórum a la instancia de HSM de un solo usuario de Cloud.
-
Crea una propuesta para agregar un miembro del quórum a la instancia con la operación
add_quorum_member. Este paso requiere el rol de Proponente de HSM de usuario único 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de la instancia.LOCATION: Es la ubicación en la que creaste la instancia.PROPOSAL_ID: Es el identificador único que deseas usar para esta propuesta, por ejemplo,add_quorum_member.PATH_TO_PUBLIC_KEY: Es la ruta de acceso 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDes el identificador de la propuesta, por ejemplo,add_quorum_member.LOCATION: Es la ubicación en la que creaste la instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtiene los desafíos de la propuesta. Para agregar un nuevo miembro del quórum, se requieren desafíos firmados de un quórum de miembros existentes y un desafío firmado del nuevo miembro con la clave nueva.
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 un array de desafíos con formato JSON. El campo
requiredActionQuorumParameters.requiredChallengescontiene un desafío para la clave nueva que estás registrando. El camporequiredActionQuorumParameters.quorumChallengescontiene desafíos para un quórum de las claves existentes. Debes firmar todos los desafíos en el objetorequiredActionQuorumParameters. -
Para cada desafío que se devolvió en el paso anterior, decodifícalo 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
Reemplaza lo siguiente:
N: Es el número del desafío, por ejemplo,1para el primer desafío,2para el segundo, y así sucesivamente.CHALLENGE_N: Es el contenido del desafío númeroNdel resultado del paso anterior.PRIVATE_KEY_N: Es la ruta de acceso al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer desafío.
-
Sube los desafíos firmados para aprobar la propuesta. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol de miembro del quórum de HSM de usuario único 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"
Reemplaza lo siguiente:
SIGNED_QUORUM_CHALLENGE_LIST: Es un array con formato JSON de desafíos firmados con claves privadas que ya están registradas, en el que cada elemento de la lista es una tupla que contiene la ruta de acceso al desafío firmado y la ruta de acceso 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 desafíos firmados en un solo comando).SIGNED_REQUIRED_CHALLENGE_LIST: Es un array con formato JSON que contiene el desafío firmado con la nueva clave privada, en el que el único elemento de la lista es una tupla que contiene la ruta de acceso al desafío firmado y la ruta de acceso a la clave pública correspondiente (por ejemplo,[('signed-challenge-newkey.txt','rsapub-newkey.pem')]).
Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a
APPROVED. -
Ejecuta la propuesta. Este paso requiere el rol de Ejecutor de HSM de usuario único de Cloud KMS y debe completarse en un plazo de 24 horas después de que se creó la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez que se complete la operación, el nuevo miembro del quórum podrá participar en los desafíos para aprobar propuestas. La clave pública que agregaste ahora se incluye en la lista de claves públicas en los detalles de la instancia.
Cómo quitar un miembro del quórum
Si tienes más miembros del quórum de los que se requieren, puedes quitar un miembro del quórum de una instancia. Esta operación requiere autenticación de quórum. Después de que se aprueba 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 con la operación
remove_quorum_member. Este paso requiere el rol de Proponente de HSM de usuario único 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de la instancia.LOCATION: Es la ubicación en la que creaste la instancia.PROPOSAL_ID: Es el identificador único que deseas usar para esta propuesta, por ejemplo,remove_quorum_member.PATH_TO_PUBLIC_KEY: Es la ruta de acceso a la clave pública que deseas quitar de la instancia, por ejemplo,rsapub3.pem. Una vez que se completa la operación, no se puede usar la clave privada correspondiente 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDel identificador de la propuesta, por ejemplo,remove_quorum_memberLOCATION: Es la ubicación en la que creaste la instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtiene los desafíos 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 un array de desafíos con formato JSON.
-
Para cada desafío que se devolvió en el paso anterior, decodifícalo 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
Reemplaza lo siguiente:
N: Es el número del desafío, por ejemplo,1para el primer desafío,2para el segundo, y así sucesivamente.CHALLENGE_N: Es el contenido del desafío númeroNdel resultado del paso anterior.PRIVATE_KEY_N: Es la ruta de acceso al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer desafío.
-
Sube los desafíos firmados para aprobar la propuesta. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol de miembro del quórum de HSM de usuario único 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"
Reemplaza
SIGNED_QUORUM_CHALLENGE_LISTpor un array con formato JSON de desafíos, en el que cada elemento de la lista sea una tupla que contenga la ruta de acceso al desafío firmado y la ruta de acceso 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 desafíos firmados en un solo comando.Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a
APPROVED. -
Ejecuta la propuesta. Este paso requiere el rol de Ejecutor de HSM de usuario único de Cloud KMS y debe completarse en un plazo de 24 horas después de que se creó la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez que se completa la operación, el miembro del quórum quitado ya no puede participar en los desafíos para aprobar propuestas. La clave pública que quitaste ya no se incluye en la lista de claves públicas en los detalles de la instancia.
Inhabilita 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 que se aprueba la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
Mientras una instancia está inhabilitada, las claves almacenadas en ella siguen apareciendo como ACTIVE, pero no se pueden 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. Este paso requiere el rol de Proponente de HSM de usuario único 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de la instancia.LOCATION: Es la ubicación en la que creaste la instancia.PROPOSAL_ID: Es el identificador único que deseas 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDes el identificador de la propuesta, por ejemplo,disable_instance.LOCATION: Es la ubicación en la que creaste la instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtiene los desafíos 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 un array de desafíos con formato JSON.
-
Para cada desafío que se devolvió en el paso anterior, decodifícalo 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
Reemplaza lo siguiente:
N: Es el número del desafío, por ejemplo,1para el primer desafío,2para el segundo, y así sucesivamente.CHALLENGE_N: Es el contenido del desafío númeroNdel resultado del paso anterior.PRIVATE_KEY_N: Es la ruta de acceso al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer desafío.
-
Sube los desafíos firmados para aprobar la propuesta. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol de miembro del quórum de HSM de usuario único 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"
Reemplaza
SIGNED_QUORUM_CHALLENGE_LISTpor un array con formato JSON de desafíos, en el que cada elemento de la lista sea una tupla que contenga la ruta de acceso al desafío firmado y la ruta de acceso 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 desafíos firmados en un solo comando.Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a
APPROVED. -
Ejecuta la propuesta. Este paso requiere el rol de ejecutor de HSM de usuario único de Cloud KMS y debe completarse en un plazo de 24 horas después de que se creó la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez que se completa la operación, la instancia permanece en el estado
DISABLEDy no se puede usar hasta que se vuelva a habilitar.
Habilita una instancia
Puedes volver a habilitar una instancia de DISABLED para restablecer el acceso a ella y a sus claves.
Esta operación requiere autenticación de quórum. Una vez que se aprueba 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. Este paso requiere el rol de Proponente de HSM de usuario único 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de la instancia.LOCATION: Es la ubicación en la que creaste la instancia.PROPOSAL_ID: Es el identificador único que deseas 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDes el identificador de la propuesta, por ejemplo,enable_instance.LOCATION: Es la ubicación en la que creaste la instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtiene los desafíos 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 un array de desafíos con formato JSON.
-
Para cada desafío que se devolvió en el paso anterior, decodifícalo 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
Reemplaza lo siguiente:
N: Es el número del desafío, por ejemplo,1para el primer desafío,2para el segundo, y así sucesivamente.CHALLENGE_N: Es el contenido del desafío númeroNdel resultado del paso anterior.PRIVATE_KEY_N: Es la ruta de acceso al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer desafío.
-
Sube los desafíos firmados para aprobar la propuesta. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol de miembro del quórum de HSM de usuario único 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"
Reemplaza
SIGNED_QUORUM_CHALLENGE_LISTpor un array con formato JSON de desafíos, en el que cada elemento de la lista sea una tupla que contenga la ruta de acceso al desafío firmado y la ruta de acceso 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 desafíos firmados en un solo comando.Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a
APPROVED. -
Ejecuta la propuesta. Este paso requiere el rol de Ejecutor de HSM de usuario único de Cloud KMS y debe completarse en un plazo de 24 horas después de que se creó la propuesta.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez que se completa la operación, la instancia vuelve al estado "ACTIVE" y
disableDatese establece en 120 días a partir del momento de la actualización.
Borrar una instancia
Puedes borrar una instancia para destruirla de forma permanente junto con sus claves. Esta operación requiere autenticación de quórum. Una vez que se aprueba la propuesta, la operación tarda entre 15 y 30 minutos en completarse.
Después de que se borra 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 en una instancia borrada, se producirá un error.
-
Crea una propuesta para borrar la instancia con el tipo de operación
delete_single_tenant_hsm_instance. Este paso requiere el rol de Proponente de HSM de usuario único 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de la instancia que deseas borrar.LOCATION: Es la ubicación en la que creaste la instancia.PROPOSAL_ID: Es el identificador único que deseas 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
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de tu instancia.PROPOSAL_IDes el identificador de la propuesta, por ejemplo,delete_instance.LOCATION: Es la ubicación en la que creaste la instancia.
Cuando el estado sea
PENDING, podrás firmar los desafíos. -
Obtiene los desafíos 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 un array de desafíos con formato JSON.
-
Para cada desafío que se devolvió en el paso anterior, decodifícalo 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
Reemplaza lo siguiente:
N: Es el número del desafío, por ejemplo,1para el primer desafío,2para el segundo, y así sucesivamente.CHALLENGE_N: Es el contenido del desafío númeroNdel resultado del paso anterior.PRIVATE_KEY_N: Es la ruta de acceso al número de clave privadaN, por ejemplo,rsaprivate1.pempara el primer desafío.
-
Sube los desafíos firmados para aprobar la propuesta. Puedes subirlos con un solo comando o con varios. Este paso requiere el rol de miembro del quórum de HSM de usuario único 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"
Reemplaza
SIGNED_QUORUM_CHALLENGE_LISTpor un array con formato JSON de desafíos, en el que cada elemento de la lista sea una tupla que contenga la ruta de acceso al desafío firmado y la ruta de acceso 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 desafíos firmados en un solo comando.Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a
APPROVED. -
Asegúrate de que deseas continuar con el borrado de la instancia y la destrucción criptográfica de todos los datos encriptados con las claves creadas en esta instancia, y, luego, ejecuta la propuesta. Este paso requiere el rol de Ejecutor de HSM de usuario único de Cloud KMS y debe completarse en un plazo de 24 horas después de que se creó la propuesta.
Advertencia: El siguiente comando es irreversible. Se puede producir una pérdida permanente de datos. Google no puede ayudarte a recuperar las claves de una instancia borrada.gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
Una vez completada la operación, se borrará la instancia.
Cómo borrar una propuesta
Si decides no aprobar ni ejecutar una propuesta, puedes borrarla antes de que venza. Si borras una propuesta pendiente, no podrás aprobarla y podrás crear una nueva. Si borras una propuesta aprobada, no podrás ejecutar la operación.
-
Borra una propuesta con el comando
proposal delete. Esto requiere el rol de Proponente de HSM de usuario único de Cloud KMS.gcloud kms single-tenant-hsm proposal delete PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID
Reemplaza lo siguiente:
INSTANCE_ID: Es el identificador de la instancia.LOCATION: Es la ubicación en la que creaste la instancia.PROPOSAL_ID: Es el identificador único de la propuesta que deseas borrar, por ejemplo,proposal_to_delete.
¿Qué sigue?
- Obtén más información sobre Cloud HSM de un solo arrendatario.