Valide uma assinatura de pedido aprovada
Cada pedido de aprovação de acesso aprovado é assinado com uma chave criptográfica assimétrica para validar a aprovação. Os pedidos aprovados podem ser assinados com uma Google-owned and managed key ou uma chave do Cloud KMS fornecida pelo cliente.
Quando valida uma assinatura, pode ter a certeza de que a string de bytes do pedido aprovado serializado é válida. Para terminar a validação dos conteúdos da aprovação, tem de desserializar a mensagem e comparar a mensagem desserializada com os conteúdos do pedido aprovado.
Antes de começar
Para garantir que a conta de serviço da aprovação de acesso do seu recurso tem as autorizações necessárias para validar as assinaturas de pedidos aprovados, peça ao seu administrador para conceder à conta de serviço da aprovação de acesso do seu recurso a função do IAM Signer/Verifier do CryptoKey do Cloud KMS (roles/cloudkms.signerVerifier
) na chave, no conjunto de chaves ou no projeto de chaves.
O administrador também pode conceder à conta de serviço da Aprovação de acesso do seu recurso as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Valide um pedido assinado com um Google-owned and managed key
Na Google Cloud consola, aceda à página Aprovação de acesso.
Localize e selecione o pedido de aprovação de acesso aprovado que quer validar. É apresentada a página Detalhes do pedido.
Em Chave pública gerida pela Google, clique em content_copy Copiar.
Abra o Cloud Shell e, em seguida, guarde a chave pública como um novo ficheiro com o nome
public_key
:echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
Substitua
GOOGLE_MANAGED_PUBLIC_KEY
pelo conteúdo do campo chave pública gerida pela Google.Na Google Cloud consola, na página Detalhes do pedido, em Assinatura, clique em content_copy Copiar.
Abra o Cloud Shell e, em seguida, guarde a assinatura como um novo ficheiro com o nome
signature.txt
:echo SIGNATURE > ./signature.txt
Substitua
SIGNATURE
pelo conteúdo do campo Signature (Assinatura).Descodifique a assinatura através do comando
base64
e guarde o resultado comodecoded_signature
:base64 ./signature.txt -d > ./decoded_signature
Na Google Cloud consola, na página Detalhes do pedido, em Pedido de aprovação serializado, clique em content_copy Copiar.
Abra o Cloud Shell e, em seguida, guarde o pedido de aprovação serializado como um novo ficheiro denominado
serialized_approval_request.txt
:echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
Substitua
SERIALIZED_APPROVAL_REQUEST
pelo conteúdo do campo Serialized Approval Request.Descodifique o pedido de aprovação serializado e guarde o resultado como
decoded_serialized_approval_request
:base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
Use o código
openssl
para validar a assinatura:openssl dgst \ -sha256 \ -verify ./public_key \ -signature ./decoded_signature \ ./decoded_serialized_approval_request
Se a assinatura for válida, o resultado deve ser
Verified OK
. Isto confirma que o pedido de aprovação serializado é válido.
Valide um pedido assinado com uma chave fornecida pelo cliente
Na Google Cloud consola, aceda à página Aprovação de acesso.
Localize e selecione o pedido de aprovação de acesso aprovado que quer validar. É apresentada a página Detalhes do pedido.
Na Google Cloud consola, na página Detalhes do pedido, em Assinatura, clique em content_copy Copiar.
Abra o Cloud Shell e, em seguida, guarde a assinatura como um novo ficheiro com o nome
signature.txt
:echo SIGNATURE > ./signature.txt
Substitua
SIGNATURE
pelo conteúdo do campo Signature (Assinatura).Descodifique a assinatura e guarde o resultado como
decoded_signature
:base64 ./signature.txt -d > ./decoded_signature
Na Google Cloud consola, na página Detalhes do pedido, em Pedido de aprovação serializado, clique em content_copy Copiar.
Abra o Cloud Shell e, em seguida, guarde o pedido de aprovação serializado como um novo ficheiro denominado
serialized_approval_request.txt
:echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
Substitua
SERIALIZED_APPROVAL_REQUEST
pelo conteúdo do campo Serialized Approval Request.Descodifique o pedido de aprovação serializado e guarde o resultado como
decoded_serialized_approval_request
:base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
Em Chave gerida pelo cliente, tome nota do identificador de recurso da chave.
Obtenha a chave pública da chave que identificou no passo anterior. Guarde a chave pública transferida no formato PEM como
./public_key
.Use o código
openssl
para validar a assinatura:openssl dgst \ -sha256 \ -verify ./public_key \ -signature ./decoded_signature \ ./decoded_serialized_approval_request
Se a assinatura for válida, o resultado deve ser
Verified OK
. Isto confirma que o pedido de aprovação serializado é válido.