Validar a assinatura de uma solicitação aprovada

Cada solicitação de aprovação de acesso aprovada é assinada com uma chave criptográfica assimétrica para validar a aprovação. As solicitações aprovadas podem ser assinadas com uma própria e gerenciada pelo Google Cloud ou uma chave do Cloud KMS fornecida pelo cliente.

Ao validar uma assinatura, você pode ter certeza de que a string de bytes da solicitação aprovada serializada é válida. Para concluir a validação do conteúdo da aprovação, é necessário desserializar a mensagem e comparar a mensagem desserializada com o conteúdo da solicitação aprovada.

Antes de começar

Para garantir que a conta de serviço de aprovação de acesso do seu recurso tenha as permissões necessárias para verificar as assinaturas de solicitações aprovadas, peça ao administrador para conceder à conta de serviço de aprovação de acesso do seu recurso a função de IAM de Assinador/verificador de CryptoKey do Cloud KMS (roles/cloudkms.signerVerifier) na chave, no keyring ou no projeto de chaves. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço de aprovação de acesso do recurso as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

Validar uma solicitação assinada usando uma de propriedade e gerenciada pelo Google do Google Cloud

  1. No console do Google Cloud , acesse a página Access Approval.

    Acessar a Aprovação de acesso

  2. Localize e selecione a solicitação de Aprovação de acesso aprovada que você quer validar. A página Detalhes do pedido é aberta.

  3. Em Chave pública gerenciada pelo Google, clique em content_copy Copiar.

  4. Abra o Cloud Shell e salve a chave pública como um novo arquivo chamado public_key:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    Substitua GOOGLE_MANAGED_PUBLIC_KEY pelo conteúdo do campo Chave pública gerenciada pelo Google.

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

  6. Abra o Cloud Shell e salve a assinatura como um novo arquivo chamado signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Substitua SIGNATURE pelo conteúdo do campo Signature.

  7. Decodificar a assinatura usando o comando base64 e salvar o resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. No console do Google Cloud , na página Detalhes do pedido, em Solicitação de aprovação serializada, clique em content_copy Copiar.

  9. Abra o Cloud Shell e salve a solicitação de aprovação serializada como um novo arquivo chamado serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Substitua SERIALIZED_APPROVAL_REQUEST pelo conteúdo do campo Solicitação de aprovação serializada.

  10. Decodificar a solicitação de aprovação serializada e salvar o resultado como decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. Use openssl para verificar a assinatura:

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

    Se a assinatura for válida, a saída será Verified OK. Isso confirma que a solicitação de aprovação serializada é válida.

Validar uma solicitação assinada usando uma chave fornecida pelo cliente

  1. No console do Google Cloud , acesse a página Access Approval.

    Acessar a Aprovação de acesso

  2. Localize e selecione a solicitação de Aprovação de acesso aprovada que você quer validar. A página Detalhes do pedido é aberta.

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

  4. Abra o Cloud Shell e salve a assinatura como um novo arquivo chamado signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Substitua SIGNATURE pelo conteúdo do campo Signature.

  5. Decodificar a assinatura e salvar o resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. No console do Google Cloud , na página Detalhes do pedido, em Solicitação de aprovação serializada, clique em content_copy Copiar.

  7. Abra o Cloud Shell e salve a solicitação de aprovação serializada como um novo arquivo chamado serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Substitua SERIALIZED_APPROVAL_REQUEST pelo conteúdo do campo Solicitação de aprovação serializada.

  8. Decodificar a solicitação de aprovação serializada e salvar o resultado como decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. Em Chave gerenciada pelo cliente, anote o identificador de recurso da chave.

  10. Recupere a chave pública identificada na etapa anterior. Salve a chave pública salva no formato PEM como ./public_key.

  11. Use openssl para verificar a assinatura:

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

    Se a assinatura for válida, a saída será Verified OK. Isso confirma que a solicitação de aprovação serializada é válida.