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.
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
No console 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 da solicitação é 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 Google Cloud , na página Detalhes da solicitação, 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.Decodifique a assinatura usando o comando
base64
e salve o resultado comodecoded_signature
:base64 ./signature.txt -d > ./decoded_signature
No console do Google Cloud , na página Detalhes da solicitação, 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.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
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
No console 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 da solicitação é aberta.
No console Google Cloud , na página Detalhes da solicitação, 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.Decodifique a assinatura e salve o resultado como
decoded_signature
:base64 ./signature.txt -d > ./decoded_signature
No console do Google Cloud , na página Detalhes da solicitação, 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.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
Em Chave gerenciada pelo cliente, anote o identificador de recurso da chave.
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
.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.