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.
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
En la consola de Google Cloud, ve a la página Aprobación de acceso. Google Cloud
Busca y selecciona la solicitud de Aprobación de acceso aprobada que quieras validar. Se abrirá la página Detalles de la solicitud.
En Clave pública gestionada por Google, haz clic en content_copy Copiar.
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.En la Google Cloud consola, en la página Detalles de la solicitud, vaya a Firma y haga clic en content_copy Copiar.
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.Decodifica la firma con el comando
base64
y guarda el resultado comodecoded_signature
:base64 ./signature.txt -d > ./decoded_signature
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.
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.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
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
En la consola de Google Cloud, ve a la página Aprobación de acceso. Google Cloud
Busca y selecciona la solicitud de Aprobación de acceso aprobada que quieras validar. Se abrirá la página Detalles de la solicitud.
En la Google Cloud consola, en la página Detalles de la solicitud, vaya a Firma y haga clic en content_copy Copiar.
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.Decodifica la firma y guarda el resultado como
decoded_signature
:base64 ./signature.txt -d > ./decoded_signature
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.
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.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
En Clave gestionada por el cliente, anota el identificador de recurso de la clave.
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
.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.