Memvalidasi tanda tangan permintaan yang disetujui

Setiap permintaan Persetujuan Akses yang disetujui ditandatangani dengan kunci kriptografi asimetris untuk memvalidasi persetujuan. Permintaan yang disetujui dapat ditandatangani dengan kunci Cloud KMS Google-owned and managed key atau yang disediakan pelanggan.

Saat memvalidasi tanda tangan, Anda dapat memastikan bahwa string byte dari permintaan yang disetujui yang diserialisasi valid. Untuk menyelesaikan validasi konten persetujuan, Anda harus melakukan deserialisasi pesan dan membandingkan pesan yang telah dideserialisasi dengan konten permintaan yang disetujui.

Sebelum memulai

Untuk memastikan bahwa akun layanan Persetujuan Akses untuk resource Anda memiliki izin yang diperlukan untuk memverifikasi tanda tangan permintaan yang disetujui, minta administrator untuk memberikan peran IAM Penanda Tangan/Pemverifikasi CryptoKey Cloud KMS (roles/cloudkms.signerVerifier) pada kunci, ring kunci, atau project kunci kepada akun layanan Persetujuan Akses untuk resource Anda.

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada akun layanan Persetujuan Akses untuk resource Anda melalui peran khusus atau peran bawaan lainnya.

Memvalidasi permintaan yang ditandatangani menggunakan Google-owned and managed key

  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 Detail permintaan, di bagian Tanda tangan, klik content_copy Salin.

  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 , di halaman Detail permintaan, di bagian Permintaan Persetujuan yang Diserialisasi, klik content_copy Salin.

  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 Serialized Approval Request.

  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 harus Verified OK. Tindakan 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 Detail permintaan, di bagian Tanda tangan, klik content_copy Salin.

  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 , di halaman Detail permintaan, di bagian Permintaan Persetujuan yang Diserialisasi, klik content_copy Salin.

  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 Serialized Approval Request.

  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 harus Verified OK. Tindakan ini mengonfirmasi bahwa permintaan persetujuan yang diserialisasi valid.