验证已批准的请求签名
每个已获批准的访问权限审批请求都使用不对称加密密钥进行签名,以验证批准。已获批准的请求可以使用 Google-owned and managed key 或客户提供的 Cloud KMS 密钥进行签名。
验证签名时,您可以确定已序列化的已批准请求的字节字符串有效。如需完成批准内容的验证,您必须反序列化消息,并将反序列化的消息与已批准请求的内容进行比较。
准备工作
为确保资源的 Access Approval 服务账号具有验证已获批准请求签名的必要权限,请让您的管理员为资源的 Access Approval 服务账号授予密钥、密钥串或密钥项目的 Cloud KMS CryptoKey Signer/Verifier (roles/cloudkms.signerVerifier
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您的管理员还可以通过自定义角色或其他预定义角色向资源的“访问权限审批”服务账号授予所需的权限。
验证使用 Google-owned and managed key签名的请求
在 Google Cloud 控制台中,前往访问权限审批页面。
找到并选择您要验证的已批准的 Access Approval 请求。系统随即会打开请求详情页面。
在Google 管理的公钥下,点击 content_copy 复制。
打开 Cloud Shell,然后将公钥保存为名为
public_key
的新文件:echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
将
GOOGLE_MANAGED_PUBLIC_KEY
替换为 Google 管理的公钥字段的内容。在 Google Cloud 控制台中,点击 Request details(请求详情)页面中 Signature(签名)下的 content_copy Copy(复制)。
打开 Cloud Shell,然后将签名另存为名为
signature.txt
的新文件:echo SIGNATURE > ./signature.txt
将
SIGNATURE
替换为 Signature 字段的内容。使用
base64
命令解码签名,并将结果另存为decoded_signature
:base64 ./signature.txt -d > ./decoded_signature
在 Google Cloud 控制台中,在请求详情页面的序列化批准请求下,点击 content_copy 复制。
打开 Cloud Shell,然后将序列化的审批请求保存为名为
serialized_approval_request.txt
的新文件:echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
将
SERIALIZED_APPROVAL_REQUEST
替换为 Serialized Approval Request 字段的内容。解码序列化审批请求并将结果保存为
decoded_serialized_approval_request
:base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
使用
openssl
验证签名:openssl dgst \ -sha256 \ -verify ./public_key \ -signature ./decoded_signature \ ./decoded_serialized_approval_request
如果签名有效,输出应为
Verified OK
。这确认序列化审批请求有效。
验证使用客户提供的密钥签名的请求
在 Google Cloud 控制台中,前往访问权限审批页面。
找到并选择您要验证的已批准的 Access Approval 请求。系统随即会打开请求详情页面。
在 Google Cloud 控制台中,点击 Request details(请求详情)页面中 Signature(签名)下的 content_copy Copy(复制)。
打开 Cloud Shell,然后将签名另存为名为
signature.txt
的新文件:echo SIGNATURE > ./signature.txt
将
SIGNATURE
替换为 Signature 字段的内容。解码签名并将结果保存为
decoded_signature
:base64 ./signature.txt -d > ./decoded_signature
在 Google Cloud 控制台中,在请求详情页面的序列化批准请求下,点击 content_copy 复制。
打开 Cloud Shell,然后将序列化的审批请求保存为名为
serialized_approval_request.txt
的新文件:echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
将
SERIALIZED_APPROVAL_REQUEST
替换为 Serialized Approval Request 字段的内容。解码序列化审批请求并将结果保存为
decoded_serialized_approval_request
:base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
在客户管理的密钥下,记下密钥的资源标识符。
检索您在上一步中指定的密钥的公钥。将下载的公钥另存为 PEM 格式的
./public_key
。使用
openssl
验证签名:openssl dgst \ -sha256 \ -verify ./public_key \ -signature ./decoded_signature \ ./decoded_serialized_approval_request
如果签名有效,输出应为
Verified OK
。这确认序列化审批请求有效。