验证已批准的请求签名

每个已获批准的 Access Approval 请求都使用非对称签名 加密密钥以验证批准。已获批准的请求可以使用 Google 管理的密钥或客户提供的 Cloud KMS 密钥进行签名。

验证签名时,您可以确保 已获批准的序列化请求有效。若要完成对 则必须将消息反序列化,然后将反序列化 消息,其中包含已批准的请求的内容。

准备工作

为了确保您服务账号的 Access Approval 服务账号 拥有必要的 拥有验证已批准的请求签名的权限 请让管理员为您的 提供 针对密钥、密钥环或密钥项目的 Cloud KMS CryptoKey Signer/Verifier (roles/cloudkms.signerVerifier) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您的管理员还可以通过自定义角色或其他预定义角色向资源的“访问权限审批”服务账号授予所需的权限。

验证使用 Google 管理的密钥签名的请求

  1. 在 Google Cloud 控制台中,前往 Access Approval 页面。

    前往“Access Approval”页面

  2. 找到并选择 需要验证。系统会打开请求详情页面。

  3. Google 管理的公钥下,点击 content_copy 复制

  4. 打开 Cloud Shell,然后将公钥保存为名为 public_key 的新文件:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    GOOGLE_MANAGED_PUBLIC_KEY 替换为 Google 管理的公钥字段中。

  5. 在 Google Cloud 控制台的请求详情页面上的 签名,点击 content_copy 复制

  6. 打开 Cloud Shell,然后将签名另存为名为 signature.txt 的新文件:

    echo SIGNATURE > ./signature.txt
    

    SIGNATURE 替换为 Signature 字段的内容。

  7. 使用 base64 命令解码签名,并将结果另存为 decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. 在 Google Cloud 控制台中,点击请求详情页面中的序列化批准请求下方的 content_copy 复制

  9. 打开 Cloud Shell,然后将序列化的审批请求保存为名为 serialized_approval_request.txt 的新文件:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    SERIALIZED_APPROVAL_REQUEST 替换为 序列化审批请求字段。

  10. 对序列化审批请求进行解码,并将结果保存为 decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. 使用 openssl 验证签名:

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    如果签名有效,则输出应为 Verified OK。这确认序列化审批请求有效。

验证使用客户提供的密钥签名的请求

  1. 在 Google Cloud 控制台中,前往 Access Approval 页面。

    前往“Access Approval”页面

  2. 找到并选择您要验证的已批准的 Access Approval 请求。系统随即会打开请求详情页面。

  3. 在 Google Cloud 控制台的请求详情页面上的 签名,点击 content_copy 复制

  4. 打开 Cloud Shell,然后将签名另存为名为 signature.txt 的新文件:

    echo SIGNATURE > ./signature.txt
    

    SIGNATURE 替换为 Signature 的内容 字段。

  5. 解码签名并将结果保存为 decoded_signature

    base64 ./signature.txt -d > ./decoded_signature
    
  6. 在 Google Cloud 控制台的请求详情页面上的 序列化审批请求,点击 content_copy 复制

  7. 打开 Cloud Shell,然后将序列化的审批请求保存为名为 serialized_approval_request.txt 的新文件:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    SERIALIZED_APPROVAL_REQUEST 替换为 序列化审批请求字段。

  8. 解码序列化审批请求并将结果保存为 decoded_serialized_approval_request

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. 客户管理的密钥下,记下密钥的资源标识符。

  10. 检索您要创建的密钥的公钥 您在上一步中确定的。将下载的公钥保存在 PEM 格式为 ./public_key

  11. 使用 openssl 验证签名:

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    如果签名有效,输出应为 Verified OK。这个 确认序列化批准请求有效。