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
No console do Google Cloud , acesse a página Access Approval.
Localize e selecione a solicitação de Aprovação de acesso aprovada que você quer validar. A página Detalhes do pedido é aberta.
Em Chave pública gerenciada pelo Google, clique em content_copy Copiar.
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.No console do Google Cloud , na página Detalhes do pedido, em Assinatura, clique em content_copy Copiar.
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.Decodificar a assinatura usando o comando
base64
e salvar o resultado comodecoded_signature
:base64 ./signature.txt -d > ./decoded_signature
No console do Google Cloud , na página Detalhes do pedido, em Solicitação de aprovação serializada, clique em content_copy Copiar.
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.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
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
No console do Google Cloud , acesse a página Access Approval.
Localize e selecione a solicitação de Aprovação de acesso aprovada que você quer validar. A página Detalhes do pedido é aberta.
No console do Google Cloud , na página Detalhes do pedido, em Assinatura, clique em content_copy Copiar.
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.Decodificar a assinatura e salvar o resultado como
decoded_signature
:base64 ./signature.txt -d > ./decoded_signature
No console do Google Cloud , na página Detalhes do pedido, em Solicitação de aprovação serializada, clique em content_copy Copiar.
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.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
Em Chave gerenciada pelo cliente, anote o identificador de recurso da chave.
Recupere a chave pública identificada na etapa anterior. Salve a chave pública salva no formato PEM como
./public_key
.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.