Memvalidasi tanda tangan permintaan yang disetujui

Setiap permintaan Persetujuan Akses yang disetujui ditandatangani dengan kunci kriptografis assimetris untuk memvalidasi persetujuan. Permintaan yang disetujui dapat ditandatangani dengan kunci yang dikelola Google atau kunci Cloud KMS yang disediakan pelanggan.

Saat memvalidasi tanda tangan, Anda dapat yakin bahwa bytestring permintaan yang disetujui dan diserialisasi valid. Untuk menyelesaikan validasi konten persetujuan, Anda harus mendeserialisasi pesan dan membandingkan pesan yang dideserialisasi dengan konten permintaan yang disetujui.

Sebelum memulai

Untuk memastikan bahwa akun layanan Access Approval untuk resource Anda memiliki izin yang diperlukan untuk memverifikasi tanda tangan permintaan yang disetujui, minta administrator untuk memberikan akun layanan Access Approval untuk resource Anda peran IAM Cloud KMS CryptoKey Signer/Verifier (roles/cloudkms.signerVerifier) pada kunci, ring kunci, atau project kunci. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada akun layanan Access Approval untuk resource Anda melalui peran kustom atau peran bawaan lainnya.

Memvalidasi permintaan yang ditandatangani menggunakan kunci yang dikelola Google

  1. Di konsol Google Cloud, buka halaman Access Approval.

    Buka Persetujuan Akses

  2. Cari dan pilih permintaan Persetujuan Akses yang disetujui yang ingin Anda validasi. Halaman Request details akan terbuka.

  3. Di bagian Kunci publik yang dikelola Google, klik content_copy Salin.

  4. Buka Cloud Shell, lalu simpan kunci publik sebagai file baru bernama public_key:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    Ganti GOOGLE_MANAGED_PUBLIC_KEY dengan konten kolom Kunci publik yang dikelola Google.

  5. Di konsol Google Cloud, pada halaman Request details, di bagian Signature, klik content_copy Copy.

  6. Buka Cloud Shell, lalu simpan tanda tangan sebagai file baru bernama signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Ganti SIGNATURE dengan konten kolom Signature.

  7. Dekode tanda tangan menggunakan perintah base64 dan simpan hasilnya sebagai decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. Di konsol Google Cloud, pada halaman Request details, di bagian Serialized Approval Request, klik content_copy Copy.

  9. Buka Cloud Shell, lalu simpan permintaan persetujuan yang diserialisasi sebagai file baru bernama serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Ganti SERIALIZED_APPROVAL_REQUEST dengan konten kolom Permintaan Persetujuan Serialisasi.

  10. Dekode permintaan persetujuan yang diserialisasi dan simpan hasilnya sebagai decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. Gunakan openssl untuk memverifikasi tanda tangan:

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

    Jika tanda tangan valid, outputnya akan berupa Verified OK. Hal ini mengonfirmasi bahwa permintaan persetujuan yang diserialisasi valid.

Memvalidasi permintaan yang ditandatangani menggunakan kunci yang disediakan pelanggan

  1. Di konsol Google Cloud, buka halaman Access Approval.

    Buka Persetujuan Akses

  2. Cari dan pilih permintaan Persetujuan Akses yang disetujui yang ingin Anda validasi. Halaman Request details akan terbuka.

  3. Di konsol Google Cloud, pada halaman Request details, di bagian Signature, klik content_copy Copy.

  4. Buka Cloud Shell, lalu simpan tanda tangan sebagai file baru bernama signature.txt:

    echo SIGNATURE > ./signature.txt
    

    Ganti SIGNATURE dengan konten kolom Signature.

  5. Dekode tanda tangan dan simpan hasilnya sebagai decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. Di konsol Google Cloud, pada halaman Request details, di bagian Serialized Approval Request, klik content_copy Copy.

  7. Buka Cloud Shell, lalu simpan permintaan persetujuan yang diserialisasi sebagai file baru bernama serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    Ganti SERIALIZED_APPROVAL_REQUEST dengan konten kolom Permintaan Persetujuan Serialisasi.

  8. Dekode permintaan persetujuan yang diserialisasi dan simpan hasilnya sebagai decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. Di bagian Kunci yang dikelola pelanggan, catat ID resource kunci.

  10. Ambil kunci publik untuk kunci yang Anda identifikasi di langkah sebelumnya. Simpan kunci publik yang didownload dalam format PEM sebagai ./public_key.

  11. Gunakan openssl untuk memverifikasi tanda tangan:

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

    Jika tanda tangan valid, outputnya akan berupa Verified OK. Hal ini mengonfirmasi bahwa permintaan persetujuan yang diserialisasi valid.