驗證已核准要求的簽章

每項核准的「存取核准」要求都會以非對稱加密編譯金鑰簽署,以驗證核准。核准的要求可使用 Google-owned and managed key 或客戶提供的 Cloud KMS 金鑰簽署。

驗證簽章後,您就能確定已核准要求的序列化位元組字串有效。如要完成驗證核准內容,您必須將訊息還原序列化,並與核准要求內容進行比較。

事前準備

為確保資源的存取核准服務帳戶具備驗證核准要求簽章的必要權限,請管理員授予資源的存取核准服務帳戶金鑰、金鑰環或金鑰專案的「Cloud KMS CryptoKey Signer/Verifier」(Cloud KMS 加密編譯金鑰簽署者/驗證者) (roles/cloudkms.signerVerifier) IAM 角色。

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

管理員或許也能透過自訂角色或其他預先定義的角色,將必要權限授予資源的存取核准服務帳戶。

驗證使用 Google-owned and managed key簽署的要求

  1. 前往 Google Cloud 控制台的「存取核准」頁面。

    前往「存取權核准」

  2. 找出並選取要驗證的已核准 Access Approval 要求。「要求詳細資料」頁面隨即開啟。

  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 改成「簽章」欄位的內容。

  7. 使用 base64 指令解碼簽章,並將結果儲存為 decoded_signature

    base64 ./signature.txt -d > ./decoded_signature
    
  8. 在 Google Cloud 控制台的「要求詳細資料」頁面中,按一下「序列化核准要求」下方的「content_copy」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 控制台的「存取核准」頁面。

    前往「存取權核准」

  2. 找出並選取要驗證的已核准 Access Approval 要求。「要求詳細資料」頁面隨即開啟。

  3. 在 Google Cloud 控制台的「要求詳細資料」頁面中,按一下「簽章」下方的「複製」content_copy

  4. 開啟 Cloud Shell,然後將簽章儲存為名為 signature.txt 的新檔案:

    echo SIGNATURE > ./signature.txt
    

    SIGNATURE 改成「簽章」欄位的內容。

  5. 解碼簽章,並將結果儲存為 decoded_signature

    base64 ./signature.txt -d > ./decoded_signature
    
  6. 在 Google Cloud 控制台的「要求詳細資料」頁面中,按一下「序列化核准要求」下方的「content_copy」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. 在「客戶管理的金鑰」下方,記下金鑰的資源 ID。

  10. 擷取公開金鑰,該金鑰就是您在上一個步驟中識別的金鑰。將下載的公開金鑰儲存為 PEM 格式,並命名為 ./public_key

  11. 使用 openssl 驗證簽章:

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

    如果簽名有效,輸出內容應為 Verified OK。這表示序列化的核准要求有效。