Convalida la firma di una richiesta approvata

Ogni richiesta di approvazione di accesso approvata è firmata con una chiave di crittografia asimmetrica per convalidare l'approvazione. Le richieste approvate possono essere firmate con una chiave gestita da Google o con una chiave Cloud KMS fornita dal cliente.

Quando convalidi una firma, puoi avere la certezza che il bytestring del la richiesta serializzata approvata è valida. Per completare la convalida dei contenuti dell'approvazione, devi deserializzare il messaggio e confrontarlo con i contenuti della richiesta approvata.

Prima di iniziare

Per assicurarti che l'account di servizio Access Approval per il tuo ha la necessaria autorizzazioni per verificare le firme delle richieste approvate, chiedi all'amministratore di concedere l'account di servizio Access Approval per il tuo che la risorsa Firmatario/Verificatore CryptoKey Cloud KMS (roles/cloudkms.signerVerifier) Ruolo IAM nella chiave, nel keyring o nel progetto della chiave. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di fornire l'account di servizio Access Approval per il tuo risorsa le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Convalida una richiesta firmata utilizzando una chiave gestita da Google

  1. Nella console Google Cloud, vai alla pagina Access Approval.

    Vai ad Access Approval

  2. Individua e seleziona la richiesta di Access Approval che viene approvata che vuoi convalidare. Viene visualizzata la pagina Dettagli richiesta.

  3. In Chiave pubblica gestita da Google, fai clic su content_copy Copia.

  4. Apri Cloud Shell e salva la chiave pubblica come nuovo file denominato public_key:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    Sostituisci GOOGLE_MANAGED_PUBLIC_KEY con i contenuti di nel campo Chiave pubblica gestita da Google.

  5. Nella console Google Cloud, nella pagina Dettagli richiesta, fai clic su content_copy Copia in Firma.

  6. Apri Cloud Shell, quindi salva la firma come nuovo file denominato signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Sostituisci SIGNATURE con i contenuti del campo Firma.

  7. Decodifica la firma utilizzando il comando base64 e salva il risultato come decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. Nella console Google Cloud, nella pagina Dettagli richiesta, fai clic su content_copy Copia in Richiesta di approvazione serializzata.

  9. Apri Cloud Shell, quindi salva la richiesta di approvazione serializzata come nuovo file denominato serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Sostituisci SERIALIZED_APPROVAL_REQUEST con i contenuti di nel campo Richiesta di approvazione serializzata.

  10. Decodifica la richiesta di approvazione serializzata e salva il risultato come decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. Usa openssl per verificare la firma:

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

    Se la firma è valida, l'output dovrebbe essere Verified OK. Questo conferma che la richiesta di approvazione serializzata è valida.

Convalida una richiesta firmata utilizzando una chiave fornita dal cliente

  1. Nella console Google Cloud, vai alla pagina Approvazione accesso.

    Vai ad Access Approval

  2. Individua e seleziona la richiesta di Access Approval che viene approvata che vuoi convalidare. Viene visualizzata la pagina Dettagli richiesta.

  3. Nella console Google Cloud, nella pagina Dettagli richiesta, fai clic su content_copy Copia in Firma.

  4. Apri Cloud Shell, quindi salva la firma come nuovo file denominato signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Sostituisci SIGNATURE con i contenuti del campo Firma.

  5. Decodifica la firma e salva il risultato come decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. Nella console Google Cloud, nella pagina Dettagli della richiesta, in Richiesta di approvazione serializzata, fai clic su content_copy Copia.

  7. Apri Cloud Shell, quindi salva la richiesta di approvazione serializzata come nuovo file denominato serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Sostituisci SERIALIZED_APPROVAL_REQUEST con i contenuti di nel campo Richiesta di approvazione serializzata.

  8. Decodifica la richiesta di approvazione serializzata e salva il risultato come decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. In Chiave gestita dal cliente, prendi nota dell'identificatore della risorsa della chiave.

  10. Recupera la chiave pubblica per la chiave che identificato nel passaggio precedente. Salva la chiave pubblica scaricata nel formato PEM come ./public_key.

  11. Usa openssl per verificare la firma:

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

    Se la firma è valida, l'output dovrebbe essere Verified OK. Questo conferma che la richiesta di approvazione serializzata è valida.