Valide uma assinatura de pedido aprovada

Cada pedido de aprovação de acesso aprovado é assinado com uma chave criptográfica assimétrica para validar a aprovação. Os pedidos aprovados podem ser assinados com uma Google-owned and managed key ou uma chave do Cloud KMS fornecida pelo cliente.

Quando valida uma assinatura, pode ter a certeza de que a string de bytes do pedido aprovado serializado é válida. Para terminar a validação dos conteúdos da aprovação, tem de desserializar a mensagem e comparar a mensagem desserializada com os conteúdos do pedido aprovado.

Antes de começar

Para garantir que a conta de serviço da aprovação de acesso do seu recurso tem as autorizações necessárias para validar as assinaturas de pedidos aprovados, peça ao seu administrador para conceder à conta de serviço da aprovação de acesso do seu recurso a função do IAM Signer/Verifier do CryptoKey do Cloud KMS (roles/cloudkms.signerVerifier) na chave, no conjunto de chaves ou no projeto de chaves.

Para mais informações sobre a concessão de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço da Aprovação de acesso do seu recurso as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Valide um pedido assinado com um Google-owned and managed key

  1. Na Google Cloud consola, aceda à página Aprovação de acesso.

    Aceda a Aprovação de acesso

  2. Localize e selecione o pedido de aprovação de acesso aprovado que quer validar. É apresentada a página Detalhes do pedido.

  3. Em Chave pública gerida pela Google, clique em content_copy Copiar.

  4. Abra o Cloud Shell e, em seguida, guarde a chave pública como um novo ficheiro com o nome public_key:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    Substitua GOOGLE_MANAGED_PUBLIC_KEY pelo conteúdo do campo chave pública gerida pela Google.

  5. Na Google Cloud consola, na página Detalhes do pedido, em Assinatura, clique em content_copy Copiar.

  6. Abra o Cloud Shell e, em seguida, guarde a assinatura como um novo ficheiro com o nome signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Substitua SIGNATURE pelo conteúdo do campo Signature (Assinatura).

  7. Descodifique a assinatura através do comando base64 e guarde o resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. Na Google Cloud consola, na página Detalhes do pedido, em Pedido de aprovação serializado, clique em content_copy Copiar.

  9. Abra o Cloud Shell e, em seguida, guarde o pedido de aprovação serializado como um novo ficheiro denominado serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Substitua SERIALIZED_APPROVAL_REQUEST pelo conteúdo do campo Serialized Approval Request.

  10. Descodifique o pedido de aprovação serializado e guarde o resultado como decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. Use o código openssl para validar a assinatura:

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

    Se a assinatura for válida, o resultado deve ser Verified OK. Isto confirma que o pedido de aprovação serializado é válido.

Valide um pedido assinado com uma chave fornecida pelo cliente

  1. Na Google Cloud consola, aceda à página Aprovação de acesso.

    Aceda a Aprovação de acesso

  2. Localize e selecione o pedido de aprovação de acesso aprovado que quer validar. É apresentada a página Detalhes do pedido.

  3. Na Google Cloud consola, na página Detalhes do pedido, em Assinatura, clique em content_copy Copiar.

  4. Abra o Cloud Shell e, em seguida, guarde a assinatura como um novo ficheiro com o nome signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Substitua SIGNATURE pelo conteúdo do campo Signature (Assinatura).

  5. Descodifique a assinatura e guarde o resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. Na Google Cloud consola, na página Detalhes do pedido, em Pedido de aprovação serializado, clique em content_copy Copiar.

  7. Abra o Cloud Shell e, em seguida, guarde o pedido de aprovação serializado como um novo ficheiro denominado serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Substitua SERIALIZED_APPROVAL_REQUEST pelo conteúdo do campo Serialized Approval Request.

  8. Descodifique o pedido de aprovação serializado e guarde o resultado como decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. Em Chave gerida pelo cliente, tome nota do identificador de recurso da chave.

  10. Obtenha a chave pública da chave que identificou no passo anterior. Guarde a chave pública transferida no formato PEM como ./public_key.

  11. Use o código openssl para validar a assinatura:

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

    Se a assinatura for válida, o resultado deve ser Verified OK. Isto confirma que o pedido de aprovação serializado é válido.