Crea y administra una instancia de Cloud HSM de usuario único

En esta guía, se muestra cómo crear, aprovisionar y administrar una instancia de Cloud HSM de un solo inquilino 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

  1. Revisa y aplica las prácticas recomendadas de Cloud HSM de usuario único cuando crees y mantengas tu instancia.
  2. 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.
  3. 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.
  4. Decide cómo te asegurarás de que la instancia se actualice a tiempo. Debes supervisar el disableDate de 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.
  5. Para obtener los permisos que necesitas para crear, administrar y usar instancias de HSM de Cloud de un solo inquilino, 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.

  6. 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 llaves 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, esta guía 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 --pubout
        

    Almacena 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 Cloud HSM de usuario único.

  7. 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.

  1. Configura tu proyecto predeterminado.

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el identificador de tu proyecto.

  2. 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_ID
    

    Reemplaza 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 es 3. 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 del 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-id para que Cloud HSM asigne un UUID.
  3. Verifica el estado de la instancia.

    gcloud kms single-tenant-hsm describe INSTANCE_ID \
        --location=LOCATION
    

    Reemplaza 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 alcanzar este estado.

Aprovisiona la instancia

  1. Crea una propuesta para registrar tus claves de autenticación de dos factores con la operación register_2fa_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_2fa_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_2fa_keys \
        --required-approver-count MEMBERS_REQUIRED_FOR_APPROVAL \
        --two-factor-public-key-pems=PUBLIC_KEY_LIST

    Reemplaza lo siguiente:

    • INSTANCE_ID: Es el identificador de tu instancia.
    • PROPOSAL_ID es 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 es 2. 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 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 de QUORUM_MEMBER_COUNT que usaste anteriormente.
  2. 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_ID es el identificador de la propuesta, por ejemplo, set-up-2fa.
    • LOCATION: Es la ubicación en la que creaste la instancia.

    Cuando el estado es PENDING, puedes firmar los desafíos.

  3. Obtén 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.

  4. 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, 1 para el primer desafío, 2 para el segundo y así sucesivamente.
    • CHALLENGE_N: Es el contenido del desafío número N del resultado del paso anterior.
    • PRIVATE_KEY_N: Es la ruta de acceso al número de clave privada N, por ejemplo, rsaprivate1.pem para el primer desafío.
  5. 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_LIST por un array con formato JSON de desafíos, 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.

    Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a APPROVED.

  6. Una vez que se apruebe la propuesta, usa el comando execute para completar la operación register_2fa_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 LOCATION

    Esta es una operación de larga duración que aprovisiona usuarios y crea copias de seguridad. La instancia se convierte en ACTIVE después de 20 a 30 minutos.

  7. Después de que la instancia esté ACTIVE, consulta los detalles de la instancia para ver el disableDate:

    gcloud kms single-tenant-hsm describe INSTANCE_ID \
        --location=LOCATION
    

    Anota la disableDate de la instancia. Debes completar una operación de refresh_sthi antes 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 Cloud HSM 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

  1. En la consola de Google Cloud , ve a la página Infraestructura de KMS.

    Ir a la infraestructura de KMS

  2. 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 que tienes permiso para ver.

  3. 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.

  4. 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 --location=LOCATION

Reemplaza LOCATION por la ubicación en la que deseas ver las instancias de Cloud HSM de un solo inquilino.

Consulta los detalles de una instancia existente con el método kms single-tenant-hsm describe.

gcloud kms single-tenant-hsm describe INSTANCE_ID \
    --location=LOCATION

Reemplaza lo siguiente:

  • INSTANCE_ID: Es la instancia de la que deseas ver los detalles.
  • LOCATION: Es la ubicación en la que deseas ver las instancias de HSM de Cloud de un solo arrendatario.

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.

Portabilidad de la llave

La portabilidad de claves te permite administrar tus propias claves de unión en instancias de Cloud HSM de usuario único. Esta capacidad te permite importar y exportar otras claves (denominadas claves de unión) uniéndolas con tu clave de unión personalizada. La portabilidad de claves es útil para la interoperabilidad de claves entre diferentes proveedores de servicios en la nube o entre diferentes regiones de Google Cloud.

Todas las operaciones de portabilidad de claves requieren que las claves se creen y almacenen en instancias de Cloud HSM de un solo arrendatario. RFC 5649 es el único algoritmo admitido para el envoltorio de claves.

Para usar la portabilidad de claves, debes completar los siguientes pasos:

  1. Configura una clave de unión de confianza.
  2. Crea o importa una clave que se pueda unir.
  3. Usa la clave de unión de confianza para importar material de claves unido previamente o exportar una clave que se pueda unir.

Configura una clave de unión de confianza

Una clave de unión de confianza es una clave AES que se usa para unir y desunir otras claves para la importación o exportación, según se define en el RFC 5649. Para configurar una clave de wrapping de confianza en una instancia de Cloud HSM de usuario único, debes importar la clave como una clave de solo importación con el propósito AES_WRAPPING y, luego, promoverla a de confianza.

La promoción de la clave requiere la aprobación de un solo miembro del quórum.

  1. Crea un recurso de clave de solo importación con el propósito AES_WRAPPING:

        gcloud kms keys create KEY_NAME \
            --location LOCATION \
            --keyring KEY_RING \
            --purpose AES_WRAPPING \
            --protection-level HSM_SINGLE_TENANT \
            --skip-initial-version-creation \
            --import-only \
            --crypto-key-backend "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
        

    Reemplaza lo siguiente:

    • KEY_NAME: Es el identificador de la clave de wrapping de confianza.
    • LOCATION: Es la región en la que se encuentran el llavero de claves y la instancia de HSM de Cloud de un solo inquilino.
    • KEY_RING: Es el llavero de claves en el que deseas crear la clave.
    • INSTANCE_PROJECT: Es el identificador del proyecto que contiene la instancia de HSM de Cloud de un solo arrendatario.
    • INSTANCE_NAME: Es el identificador de la instancia de Cloud HSM de usuario único.
  2. Crea un trabajo de importación para importar el material de clave:

        gcloud kms import-jobs create IMPORT_JOB_NAME \
            --location LOCATION \
            --keyring KEY_RING \
            --import-method IMPORT_METHOD \
            --protection-level HSM_SINGLE_TENANT
        

    Reemplaza lo siguiente:

    • IMPORT_JOB_NAME: Es el identificador del trabajo de importación.
    • IMPORT_METHOD: Es el método de importación del material de la clave de ajuste, por ejemplo, rsa-oaep-4096-sha256-aes-256.
  3. Importa el material de clave AES sin procesar.

        gcloud kms keys versions import \
            --import-job IMPORT_JOB_NAME \
            --location LOCATION \
            --keyring KEY_RING \
            --key KEY_NAME \
            --algorithm aes-256-kwp \
            --target-key-file TRUSTED_KEY_PATH
        

    Reemplaza TRUSTED_KEY_PATH por la ruta de acceso al archivo que contiene los bytes sin procesar de la clave de wrapping de confianza.

  4. Crea una propuesta para promover la clave de wrapping a confiable. El tipo de operación es upgrade_key_trust. Las operaciones de promoción deben estar firmadas y aprobadas por el mismo miembro del quórum que las inició.

        gcloud kms single-tenant-hsm proposal create INSTANCE_NAME \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type upgrade_key_trust \
            --keyring KEY_RING \
            --key KEY_NAME \
            --two-factor-login-key PATH_TO_PUBLIC_KEY
        

    Reemplaza lo siguiente:

    • PROPOSAL_ID: Es un identificador único para esta propuesta.
    • PATH_TO_PUBLIC_KEY: Es la ruta de acceso a la clave pública del miembro del quórum que inicia y firma la propuesta.
  5. Consulta el estado de la propuesta y espera hasta que cambie a PENDING:

        gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
            --single_tenant_hsm_instance INSTANCE_NAME \
            --location LOCATION
        

    Cuando el estado es PENDING, puedes firmar el desafío.

  6. Obtén el desafío de la propuesta.

        gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
            --single_tenant_hsm_instance INSTANCE_NAME \
            --location LOCATION \
            --format="json[](requiredActionQuorumParameters.requiredChallenges)"
        

    Este comando devuelve un array con formato JSON que contiene el desafío.

  7. Decodifica el desafío con basenc --base64url -d y, luego, fírmalo. El desafío debe estar firmado con la clave privada que coincida con la clave pública que se proporcionó cuando se creó la propuesta.

        echo CHALLENGE | basenc --base64url -d > decoded-challenge.txt
        openssl dgst -sign PRIVATE_KEY_PATH -out signed-challenge.txt decoded-challenge.txt
        

    Reemplaza lo siguiente:

    • CHALLENGE: Es el contenido del desafío que se muestra en el resultado del paso anterior.
    • PRIVATE_KEY_PATH: Es la ruta de acceso a la clave privada del miembro del quórum que creó la propuesta.
  8. Sube el desafío firmado para aprobar la propuesta. 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_NAME \
            --required-challenge-replies="[('signed-challenge.txt','PUBLIC_KEY_PATH')]"
        

    Reemplaza PUBLIC_KEY_PATH por la ruta de acceso a la clave pública del miembro del quórum que creó la propuesta.

    Después de subir el desafío firmado, el estado de la propuesta se actualizará a APPROVED.

  9. Después de que se apruebe la propuesta, ejecútala para completar la promoción:

        gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \
            --single_tenant_hsm_instance INSTANCE_NAME \
            --location LOCATION
        

    Después de que se ejecute la propuesta, la clave se promoverá a una clave de unión de confianza y se podrá usar para importar o exportar otras claves en la instancia de Cloud HSM de usuario único.

Administra las llaves envolventes

Una clave apta para unión es una clave criptográfica designada para la importación o exportación segura con una clave de unión de confianza. Debes configurar una clave para que se pueda envolver cuando se cree el recurso de clave. No podrás modificar este parámetro de configuración más adelante.

Crea una clave nueva que se pueda unir

Para crear una clave nueva que se pueda encapsular, usa la marca --hsm-trusted-wrapping:

gcloud kms keys create WRAPPABLE_KEY_NAME \
    --location LOCATION \
    --keyring KEY_RING \
    --purpose PURPOSE \
    --protection-level HSM_SINGLE_TENANT \
    --hsm-trusted-wrapping \
    --crypto-key-backend "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"

Reemplaza lo siguiente:

  • WRAPPABLE_KEY_NAME: Es el nombre de la nueva clave que se puede unir.
  • PURPOSE: Es el propósito de la clave, por ejemplo, raw-encryption. Las claves importadas no pueden usar el propósito de clave ENCRYPT_DECRYPT.

Importa una clave que se pueda unir

Puedes usar un trabajo de importación para importar material de clave existente que desees poder exportar en el futuro. Para ello, debes incluir la marca hsm-trusted-wrapping cuando crees la clave y cuando importes la versión de la clave.

  1. Crea un recurso de clave con la marca --hsm-trusted-wrapping:

    gcloud kms keys create WRAPPABLE_KEY_NAME \
        --location LOCATION \
        --keyring KEY_RING \
        --purpose PURPOSE \
        --protection-level HSM_SINGLE_TENANT \
        --hsm-trusted-wrapping \
        --skip-initial-version-creation \
        --crypto-key-backend "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
    
  2. Sigue estos pasos para crear un trabajo de importación:

    gcloud kms import-jobs create IMPORT_JOB_NAME \
        --location LOCATION \
        --keyring KEY_RING \
        --import-method IMPORT_METHOD \
        --protection-level HSM_SINGLE_TENANT
    
  3. Importa la versión de clave con la marca --hsm-trusted-wrapping:

    gcloud kms keys versions import \
        --import-job IMPORT_JOB_NAME \
        --location LOCATION \
        --keyring KEY_RING \
        --key WRAPPABLE_KEY_NAME \
        --algorithm ALGORITHM \
        --target-key-file UNWRAPPED_KEY_TO_IMPORT \
        --hsm-trusted-wrapping
    

    Reemplaza lo siguiente:

    • KEY_ALGORITHM: Es el algoritmo de la clave que importas.
    • UNWRAPPED_KEY_TO_IMPORT: Es la ruta de acceso al material de clave sin procesar (sin envolver).

Usa claves de confianza para la importación y exportación

Después de configurar una clave de unión de confianza, puedes usarla para importar material de claves unido previamente a una clave que se pueda unir o exportar una clave que se pueda unir.

Importa una versión de clave unida previamente con una clave de confianza

Puedes importar material de claves unido de forma local con tu copia de una clave de unión de confianza sin usar un trabajo de importación.

  1. Asegúrate de haber creado el recurso de clave adaptable de destino con la marca --hsm-trusted-wrapping y la opción --import-only. Consulta la sección Crea una nueva clave de empaquetado.
  2. Importa la versión de clave unida previamente:

    gcloud kms keys versions import-trusted-key-wrapped \
        --location LOCATION \
        --target-keyring KEY_RING \
        --target-key TARGET_KEY_NAME \
        --trusted-keyring TRUSTED_KEY_RING \
        --trusted-key TRUSTED_KEY_NAME \
        --target-algorithm ALGORITHM \
        --wrapped-key-file PATH_TO_WRAPPED_KEY
    

    Reemplaza lo siguiente:

    • TARGET_KEY_NAME: Es el nombre del recurso de clave adaptable en el que se importará el material de la clave.
    • TRUSTED_KEY_RING: Es el llavero de claves de la clave de wrapping de confianza.
    • TRUSTED_KEY_NAME: Es el nombre de la clave de wrapping de confianza promocionada.
    • ALGORITHM: Es el algoritmo de la clave de destino. Los valores admitidos son todos los algoritmos de Cloud Key Management Service, excepto GOOGLE_SYMMETRIC_ENCRYPTION.
    • PATH_TO_WRAPPED_KEY: Es la ruta de acceso al archivo que contiene el material de la clave envuelto con la clave de envoltorio de confianza.

Exporta una clave que se pueda unir uniéndola con una clave de confianza

Puedes unir una clave existente que se pueda unir con una clave de unión de confianza y guardar el material de claves unido resultante en un archivo.

gcloud kms keys versions export-trusted-key-wrapped \
    --location LOCATION \
    --trusted-keyring TRUSTED_KEY_RING \
    --trusted-key TRUSTED_KEY_NAME \
    --target-keyring TARGET_KEY_RING \
    --target-key TARGET_KEY_NAME \
    --wrapped-key-file PATH_TO_OUTPUT_WRAPPED_KEY

Reemplaza lo siguiente:

  • TRUSTED_KEY_RING: Es el llavero de claves de la clave de wrapping de confianza.
  • TRUSTED_KEY_NAME: Es el nombre de la clave de wrapping de confianza promocionada.
  • TARGET_KEY_RING: Es el llavero de claves de la clave exportada que se puede ajustar.
  • TARGET_KEY_NAME: Es el nombre de la clave adaptable que se exporta.
  • PATH_TO_OUTPUT_WRAPPED_KEY: Es la ruta de acceso en la que se guardará el material de claves protegido.

Cómo mantener una instancia

Después de que se aprovisione tu instancia, serás 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 hasta que venza.

Debes actualizar tu instancia antes del disableDate. Si necesitas verificar el disableDate de una instancia, puedes ver los detalles de la instancia.

Cómo ver propuestas de instancias

Para ver las propuestas de una instancia, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página Infraestructura de KMS.

    Ir a la infraestructura de KMS

  2. 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 que tienes permiso para ver.

  3. Ubica 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.

  4. 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 INSTANCE_ID \
        --location=LOCATION

    Reemplaza lo siguiente:

    • INSTANCE_ID: Es el identificador de la instancia de HSM de usuario único de Cloud que deseas ver las propuestas.
    • LOCATION: Es la ubicación en la que deseas ver las instancias de HSM de Cloud de un solo arrendatario.

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 730 días a partir del momento de la actualización.

  1. Crea una propuesta para actualizar la instancia con el tipo de operación refresh_sthi. 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_sthi
        

    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.
  2. 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_ID es el identificador de la propuesta, por ejemplo, refresh_instance.
    • LOCATION: Es la ubicación en la que creaste la instancia.

    Cuando el estado es PENDING, puedes firmar los desafíos.

  3. Obtén 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.

  4. Para cada desafío que se devolvió en el paso anterior, decodifícalo con basenc --base64url -d y 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, 1 para el primer desafío, 2 para el segundo y así sucesivamente.
    • CHALLENGE_N: Es el contenido del desafío número N del resultado del paso anterior.
    • PRIVATE_KEY_N: Es la ruta de acceso al número de clave privada N, por ejemplo, rsaprivate1.pem para el primer desafío.
  5. 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_LIST por un array con formato JSON de desafíos, 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.

    Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a APPROVED.

  6. 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 disableDate se establece en 730 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.

  1. 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.

  2. 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.
  3. 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_ID es el identificador de la propuesta, por ejemplo, add_quorum_member.
    • LOCATION: Es la ubicación en la que creaste la instancia.

    Cuando el estado es PENDING, puedes firmar los desafíos.

  4. Obtén 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.requiredChallenges contiene un desafío para la clave nueva que estás registrando. El campo requiredActionQuorumParameters.quorumChallenges contiene desafíos para un quórum de las claves existentes. Debes firmar todos los desafíos en el objeto requiredActionQuorumParameters.

  5. Para cada desafío que se devolvió en el paso anterior, decodifícalo con basenc --base64url -d y 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, 1 para el primer desafío, 2 para el segundo y así sucesivamente.
    • CHALLENGE_N: Es el contenido del desafío número N del resultado del paso anterior.
    • PRIVATE_KEY_N: Es la ruta de acceso al número de clave privada N, por ejemplo, rsaprivate1.pem para el primer desafío.
  6. 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.

  7. 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 necesitas, 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.

  1. 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.
  2. 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_ID es el identificador de la propuesta, por ejemplo, remove_quorum_member.
    • LOCATION: Es la ubicación en la que creaste la instancia.

    Cuando el estado es PENDING, puedes firmar los desafíos.

  3. Obtén 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.

  4. Para cada desafío que se devolvió en el paso anterior, decodifícalo con basenc --base64url -d y 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, 1 para el primer desafío, 2 para el segundo y así sucesivamente.
    • CHALLENGE_N: Es el contenido del desafío número N del resultado del paso anterior.
    • PRIVATE_KEY_N: Es la ruta de acceso al número de clave privada N, por ejemplo, rsaprivate1.pem para el primer desafío.
  5. 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_LIST por un array con formato JSON de desafíos, 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.

    Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a APPROVED.

  6. 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.

  1. Crea una propuesta para inhabilitar la instancia con el tipo de operación disable_sthi. 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_sthi
        

    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.
  2. 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_ID es el identificador de la propuesta, por ejemplo, disable_instance.
    • LOCATION: Es la ubicación en la que creaste la instancia.

    Cuando el estado es PENDING, puedes firmar los desafíos.

  3. Obtén 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.

  4. Para cada desafío que se devolvió en el paso anterior, decodifícalo con basenc --base64url -d y 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, 1 para el primer desafío, 2 para el segundo y así sucesivamente.
    • CHALLENGE_N: Es el contenido del desafío número N del resultado del paso anterior.
    • PRIVATE_KEY_N: Es la ruta de acceso al número de clave privada N, por ejemplo, rsaprivate1.pem para el primer desafío.
  5. 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_LIST por un array con formato JSON de desafíos, 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.

    Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a APPROVED.

  6. 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 DISABLED y 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.

  1. Crea una propuesta para habilitar la instancia con el tipo de operación enable_sthi. 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_sthi
        

    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.
  2. 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_ID es el identificador de la propuesta, por ejemplo, enable_instance.
    • LOCATION: Es la ubicación en la que creaste la instancia.

    Cuando el estado es PENDING, puedes firmar los desafíos.

  3. Obtén 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.

  4. Para cada desafío que se devolvió en el paso anterior, decodifícalo con basenc --base64url -d y 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, 1 para el primer desafío, 2 para el segundo y así sucesivamente.
    • CHALLENGE_N: Es el contenido del desafío número N del resultado del paso anterior.
    • PRIVATE_KEY_N: Es la ruta de acceso al número de clave privada N, por ejemplo, rsaprivate1.pem para el primer desafío.
  5. 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_LIST por un array con formato JSON de desafíos, 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.

    Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a APPROVED.

  6. 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 disableDate se establece en 730 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.

  1. Crea una propuesta para borrar la instancia con el tipo de operación delete_sthi. 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_sthi
        

    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.
  2. 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_ID es el identificador de la propuesta, por ejemplo, delete_instance.
    • LOCATION: Es la ubicación en la que creaste la instancia.

    Cuando el estado es PENDING, puedes firmar los desafíos.

  3. Obtén 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.

  4. Para cada desafío que se devolvió en el paso anterior, decodifícalo con basenc --base64url -d y 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, 1 para el primer desafío, 2 para el segundo y así sucesivamente.
    • CHALLENGE_N: Es el contenido del desafío número N del resultado del paso anterior.
    • PRIVATE_KEY_N: Es la ruta de acceso al número de clave privada N, por ejemplo, rsaprivate1.pem para el primer desafío.
  5. 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_LIST por un array con formato JSON de desafíos, 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.

    Después de que subas la cantidad requerida de desafíos firmados, el estado de la propuesta se actualizará a APPROVED.

  6. 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 que se completa la operación, se borra 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?