Validar uma assinatura de 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 Google-owned and managed key ou uma chave do Cloud KMS fornecida pelo cliente.

Ao validar uma assinatura, você pode ter certeza de que a bytestring 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 da 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 da aprovação de acesso do seu recurso o papel do IAM Assinante/verificador de CryptoKey do Cloud KMS (roles/cloudkms.signerVerifier) na chave, no keyring ou no projeto da chave.

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 da aprovação de acesso para seu recurso as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

Validar uma solicitação assinada usando um Google-owned and managed key

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

    Acesse 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 da solicitação é 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 Google Cloud , na página Detalhes da solicitação, 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. Decodifique a assinatura usando o comando base64 e salve o resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. No console do Google Cloud , na página Detalhes da solicitação, 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. Decodifique o pedido de aprovação serializado e salve 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 o pedido de aprovação serializado é válido.

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

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

    Acesse 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 da solicitação é aberta.

  3. No console Google Cloud , na página Detalhes da solicitação, 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. Decodifique a assinatura e salve o resultado como decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. No console do Google Cloud , na página Detalhes da solicitação, 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. Decodifique o pedido de aprovação serializado e salve 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 da chave que você identificou na etapa anterior. Salve a chave pública baixada 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 o pedido de aprovação serializado é válido.