Valider la signature d'une demande approuvée

Chaque demande d'approbation d'accès approuvée est signée avec une clé de chiffrement asymétrique pour valider l'approbation. Les requêtes approuvées peuvent être signées avec une Google-owned and managed key ou une clé Cloud KMS fournie par le client.

Lorsque vous validez une signature, vous pouvez être sûr que la chaîne d'octets de la requête approuvée sérialisée est valide. Pour terminer la validation du contenu de l'approbation, vous devez désérialiser le message et le comparer au contenu de la requête approuvée.

Avant de commencer

Pour vous assurer que le compte de service d'approbation des accès de votre ressource dispose des autorisations nécessaires pour valider les signatures de requêtes approuvées, demandez à votre administrateur d'accorder au compte de service d'approbation des accès de votre ressource le rôle IAM Signataire/Valideur de clés de chiffrement Cloud KMS (roles/cloudkms.signerVerifier) sur la clé, le trousseau de clés ou le projet de clé. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Votre administrateur peut également attribuer au compte de service d'approbation des accès de votre ressource les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Valider une requête signée à l'aide d'un Google-owned and managed key

  1. Dans la console Google Cloud, accédez à la page Approbation de l'accès.

    Accéder à Access Approval

  2. Recherchez et sélectionnez la demande Access Approval approuvée que vous souhaitez valider. La page Détails de la demande s'ouvre.

  3. Sous Clé publique gérée par Google, cliquez sur content_copy Copier.

  4. Ouvrez Cloud Shell, puis enregistrez la clé publique dans un nouveau fichier nommé public_key:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    Remplacez GOOGLE_MANAGED_PUBLIC_KEY par le contenu du champ Clé publique gérée par Google.

  5. Dans la console Google Cloud, sur la page Détails de la requête, sous Signature, cliquez sur content_copy Copier.

  6. Ouvrez Cloud Shell, puis enregistrez la signature en tant que nouveau fichier nommé signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Remplacez SIGNATURE par le contenu du champ Signature.

  7. Décodez la signature à l'aide de la commande base64 et enregistrez le résultat sous forme de decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. Dans la console Google Cloud, sur la page Détails de la demande, sous Demande d'approbation sérialisée, cliquez sur content_copy Copier.

  9. Ouvrez Cloud Shell, puis enregistrez la requête d'approbation sérialisée en tant que nouveau fichier nommé serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Remplacez SERIALIZED_APPROVAL_REQUEST par le contenu du champ Serialized Approval Request (Requête d'approbation sérialisée).

  10. Décodez la demande d'approbation sérialisée et enregistrez le résultat en tant que decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. Utilisez openssl pour valider la signature:

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

    Si la signature est valide, le résultat doit être Verified OK. Cela confirme que la demande d'approbation sérialisée est valide.

Valider une requête signée à l'aide d'une clé fournie par le client

  1. Dans la console Google Cloud, accédez à la page Approbation de l'accès.

    Accéder à Access Approval

  2. Recherchez et sélectionnez la demande Access Approval approuvée que vous souhaitez valider. La page Détails de la demande s'ouvre.

  3. Dans la console Google Cloud, sur la page Détails de la requête, sous Signature, cliquez sur content_copy Copier.

  4. Ouvrez Cloud Shell, puis enregistrez la signature en tant que nouveau fichier nommé signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Remplacez SIGNATURE par le contenu du champ Signature.

  5. Décodez la signature et enregistrez le résultat sous la forme decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. Dans la console Google Cloud, sur la page Détails de la demande, sous Demande d'approbation sérialisée, cliquez sur content_copy Copier.

  7. Ouvrez Cloud Shell, puis enregistrez la requête d'approbation sérialisée en tant que nouveau fichier nommé serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Remplacez SERIALIZED_APPROVAL_REQUEST par le contenu du champ Serialized Approval Request (Requête d'approbation sérialisée).

  8. Décodez la demande d'approbation sérialisée et enregistrez le résultat en tant que decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. Sous Clé gérée par le client, notez l'identifiant de ressource de la clé.

  10. Récupérez la clé publique pour la clé que vous avez identifiée à l'étape précédente. Enregistrez la clé publique téléchargée au format PEM sous la forme ./public_key.

  11. Utilisez openssl pour valider la signature:

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

    Si la signature est valide, le résultat doit être Verified OK. Cela confirme que la demande d'approbation sérialisée est valide.