Validar la firma de una solicitud aprobada

Cada solicitud de aprobación de acceso aprobada se firma con una clave criptográfica asimétrica para validar la aprobación. Las solicitudes aprobadas se pueden firmar con una Google-owned and managed key o con una clave de Cloud KMS proporcionada por el cliente.

Cuando validas una firma, puedes tener la certeza de que la cadena de bytes de la solicitud aprobada serializada es válida. Para terminar de validar el contenido de la aprobación, debes deserializar el mensaje y compararlo con el contenido de la solicitud aprobada.

Antes de empezar

Para asegurarte de que la cuenta de servicio de Aprobación de acceso de tu recurso tiene los permisos necesarios para verificar las firmas de las solicitudes aprobadas, pide a tu administrador que le conceda el rol de gestión de identidades y accesos Firmante o verificador de CryptoKey de Cloud KMS (roles/cloudkms.signerVerifier) en la clave, el conjunto de claves o el proyecto de claves.

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda conceder los permisos necesarios a la cuenta de servicio de aprobación de acceso de tu recurso mediante roles personalizados u otros roles predefinidos.

Validar una solicitud firmada con un Google-owned and managed key

  1. En la consola de Google Cloud, ve a la página Aprobación de acceso. Google Cloud

    Ir a Aprobación de acceso

  2. Busca y selecciona la solicitud de Aprobación de acceso aprobada que quieras validar. Se abrirá la página Detalles de la solicitud.

  3. En Clave pública gestionada por Google, haz clic en content_copy Copiar.

  4. Abre Cloud Shell y guarda la clave pública en un archivo nuevo llamado public_key:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    Sustituye GOOGLE_MANAGED_PUBLIC_KEY por el contenido del campo Clave pública gestionada por Google.

  5. En la Google Cloud consola, en la página Detalles de la solicitud, vaya a Firma y haga clic en content_copy Copiar.

  6. Abre Cloud Shell y guarda la firma en un archivo nuevo llamado signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Sustituye SIGNATURE por el contenido del campo Firma.

  7. Decodifica la firma con el comando base64 y guarda el resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. En la Google Cloud consola, en la página Detalles de la solicitud, en Solicitud de aprobación serializada, haz clic en content_copy Copiar.

  9. Abre Cloud Shell y guarda la solicitud de aprobación serializada en un archivo nuevo llamado serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Sustituye SERIALIZED_APPROVAL_REQUEST por el contenido del campo Solicitud de aprobación serializada.

  10. Decodifica la solicitud de aprobación serializada y guarda el resultado como decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. Usa openssl para verificar la firma:

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    Si la firma es válida, el resultado debe ser Verified OK. Esto confirma que la solicitud de aprobación serializada es válida.

Validar una solicitud firmada con una clave proporcionada por el cliente

  1. En la consola de Google Cloud, ve a la página Aprobación de acceso. Google Cloud

    Ir a Aprobación de acceso

  2. Busca y selecciona la solicitud de Aprobación de acceso aprobada que quieras validar. Se abrirá la página Detalles de la solicitud.

  3. En la Google Cloud consola, en la página Detalles de la solicitud, vaya a Firma y haga clic en content_copy Copiar.

  4. Abre Cloud Shell y guarda la firma en un archivo nuevo llamado signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Sustituye SIGNATURE por el contenido del campo Firma.

  5. Decodifica la firma y guarda el resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. En la Google Cloud consola, en la página Detalles de la solicitud, en Solicitud de aprobación serializada, haz clic en content_copy Copiar.

  7. Abre Cloud Shell y guarda la solicitud de aprobación serializada en un archivo nuevo llamado serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Sustituye SERIALIZED_APPROVAL_REQUEST por el contenido del campo Solicitud de aprobación serializada.

  8. Decodifica la solicitud de aprobación serializada y guarda el resultado como decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. En Clave gestionada por el cliente, anota el identificador de recurso de la clave.

  10. Obtén la clave pública de la clave que has identificado en el paso anterior. Guarda la clave pública descargada en formato PEM como ./public_key.

  11. Usa openssl para verificar la firma:

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    Si la firma es válida, el resultado debe ser Verified OK. Esto confirma que la solicitud de aprobación serializada es válida.