Validar a assinatura de uma solicitação aprovada

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

Ao validar uma assinatura, você pode ter certeza de que a string de bytes do 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 do Access Approval do seu tem as informações necessárias permissões para verificar assinaturas de solicitações aprovadas; peça para o administrador conceder a conta de serviço do Access Approval para o recurso Papel do IAM Signatário/verificador de CryptoKey do Cloud KMS (roles/cloudkms.signerVerifier) na chave, no keyring ou no projeto de 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 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 chave gerenciada pelo Google

  1. No console do Google Cloud, acesse a página Aprovação de acesso.

    Acessar a Aprovação de acesso

  2. Localize e selecione a solicitação de Access Approval 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 do 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. 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 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 a solicitação de aprovação serializada 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 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 Aprovação de acesso.

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

  3. No console do 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 da Assinatura. .

  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 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. 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 do a chave.

  10. Recupere a chave pública identificada na etapa anterior. Salve a chave pública baixada no 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.