承認済みリクエストの署名を検証する

承認されたアクセス承認リクエストは、非対称暗号鍵で署名され、承認が検証されます。承認されたリクエストは、Google 管理の鍵またはお客様指定の Cloud KMS 鍵で署名できます。

署名を検証すると、シリアル化された承認済みリクエストのバイト文字列が有効であることを確認できます。承認の内容の検証を完了するには、メッセージをシリアル化解除し、シリアル化解除されたメッセージを承認されたリクエストの内容と比較する必要があります。

始める前に

リソースの Access Approval サービス アカウントに、承認済みリクエストの署名を検証するために必要な権限を付与するには、リソースの Access Approval サービス アカウントに、鍵、キーリング、または鍵プロジェクトに対する Cloud KMS 暗号鍵の署名者/検証者 roles/cloudkms.signerVerifier)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、リソースのアクセス承認サービス アカウントに必要な権限を付与することもできます。

Google が管理する鍵を使用して署名されたリクエストを検証する

  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 [コピー] をクリックします。

  9. Cloud Shell を開き、シリアル化された承認リクエストを serialized_approval_request.txt という名前の新しいファイルとして保存します。

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    SERIALIZED_APPROVAL_REQUEST は、[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 [コピー] をクリックします。

  7. Cloud Shell を開き、シリアル化された承認リクエストを serialized_approval_request.txt という名前の新しいファイルとして保存します。

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    SERIALIZED_APPROVAL_REQUEST は、[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 になります。これにより、シリアル化された承認リクエストが有効であることが確認されます。