Kunci HMAC

Penyiapan

Halaman ini membahas kunci message authentication code (HMAC) berbasis hash, yang dapat Anda gunakan untuk mengautentikasi permintaan ke Cloud Storage XML API. Kunci HMAC berguna saat Anda ingin memindahkan data antara penyedia penyimpanan cloud lainnya dan Cloud Storage, karena kunci HMAC memungkinkan Anda menggunakan kembali kode yang ada untuk mengakses Cloud Storage.

Ringkasan

Kunci HMAC adalah jenis kredensial yang terkait dengan akun, biasanya akun layanan. Anda menggunakan kunci HMAC untuk membuat tanda tangan menggunakan algoritma penandatanganan HMAC-SHA256. Tanda tangan yang Anda buat kemudian disertakan dalam permintaan ke Cloud Storage XML API. Tanda tangan menunjukkan bahwa permintaan tertentu diberi otorisasi oleh akun yang terkait dengan kunci HMAC.

Kunci HMAC memiliki dua bagian utama, ID akses dan secret.

  • ID Akses: String alfanumerik yang ditautkan ke akun tertentu.

    • Jika ditautkan ke akun layanan, panjang string adalah 61 karakter.

    • Jika ditautkan ke akun pengguna, panjang string tersebut adalah 24 karakter.

    Berikut ini contoh ID akses:

    GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Secret: String berenkode Base-64 berisi 40 karakter yang ditautkan ke ID akses tertentu. Secret adalah kunci yang dibagikan sebelumnya, yang hanya diketahui oleh Anda dan Cloud Storage. Anda menggunakan secret untuk membuat tanda tangan sebagai bagian dari proses autentikasi. Berikut ini contoh secret:

    bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

ID akses dan secret mengidentifikasi kunci HMAC secara unik, tetapi secret adalah informasi yang jauh lebih sensitif, karena digunakan untuk membuat tanda tangan.

Secara opsional, Anda dapat mengaktifkan batasan restrictAuthTypes pada resource, yang membatasi akses untuk permintaan yang ditandatangani oleh kunci HMAC.

Menyimpan rahasia

Saat membuat kunci HMAC untuk akun layanan, Anda akan diberi secret ntuk kunci tersebut satu kali. Anda harus menyimpan secret dengan aman, beserta ID akses terkait. Jika Anda kehilangan secret tersebut, secret tersebut tidak dapat diambil oleh Anda atau Google Cloud, dan Anda harus membuat kunci HMAC baru untuk akun layanan agar dapat terus mengautentikasi permintaan.

Untuk membuat kunci HMAC untuk akun pengguna, Anda harus login ke konsol Google Cloud dengan akun pengguna tersebut dan membuka Interoperabilitas di menu Setelan Cloud Storage dari proyek di mana Anda telah memilikiresourcemanager.projects.get Izin IAM. Setelah dibuat, Anda dapat melihat secret kunci tersebut dari tab Interoperabilitas di project apa pun yang izin resourcemanager.projects.get-nya Anda miliki.

Praktik terbaik untuk menyimpan secret

  • Jangan bagikan secret kunci HMAC Anda. Anda harus memperlakukan secret kunci HMAC seperti set kredensial akses.

  • Sebagai praktik terbaik keamanan, Anda harus mengubah kunci secara rutin sebagai bagian dari rotasi kunci.

  • Jika menurut Anda orang lain menggunakan kunci HMAC Anda, Anda harus segera menghapus kunci HMAC yang terpengaruh dan membuat yang baru.

  • Saat mengubah kunci HMAC, Anda harus memperbarui kode dengan kunci HMAC baru sebelum Anda menghapus kunci lama. Saat Anda menghapus kunci HMAC, kunci tersebut langsung menjadi tidak valid dan tidak dapat dipulihkan.

Pembatasan

  • Kunci HMAC hanya dapat digunakan untuk membuat permintaan ke XML API, bukan JSON API.

  • Anda dapat memiliki maksimal 10 kunci HMAC per akun layanan. Kunci yang dihapus tidak dihitung terhadap batas ini.

  • Setelah dibuat, perlu waktu hingga 30 detik agar kunci HMAC akun layanan dapat digunakan. Setelah menghapus akun layanan, kunci HMAC yang dimilikinya mungkin akan terus berfungsi hingga 5 menit. Sebaliknya, kunci HMAC dapat memerlukan waktu hingga 5 menit untuk dapat digunakan kembali setelah membatalkan penghapusan akun layanan yang memilikinya.

  • Jika mengaktifkan batasan restrictAuthTypes pada resource, Anda tidak dapat lagi membuat atau mengaktifkan kunci HMAC untuk jenis akun yang ditentukan di resource tersebut.

Migrasi dari kunci HMAC akun pengguna

Secara umum, mengaitkan kunci HMAC dengan akun layanan adalah opsi yang lebih baik daripada melakukannya dengan akun pengguna, terutama untuk beban kerja produksi:

  • Akun layanan memungkinkan pengawasan administratif yang lebih baik, serta menghilangkan implikasi keamanan dan privasi dari akun yang dimiliki oleh pengguna perorangan.

  • Akun layanan mengurangi risiko pemadaman layanan yang terkait dengan ketergantungan akun pengguna, seperti saat akun pengguna dinonaktifkan karena pengguna keluar dari project atau perusahaan.

Jika saat ini Anda menggunakan kunci HMAC dengan akun pengguna tetapi ingin bermigrasi ke akun layanan, perhatikan hal berikut:

  • Project Anda harus memiliki akun layanan dan memiliki kunci HMAC terkait.

  • Akun layanan harus diberi izin yang diperlukan untuk melakukan tindakan di Cloud Storage.

    Izin yang luas untuk bekerja dengan objek dimuat dalam peran Storage Object Admin, tetapi Anda mungkin ingin memiliki akun layanan terpisah untuk melakukan berbagai tindakan. Misalnya, Anda mungkin menginginkan satu akun layanan untuk membaca, yang akan memiliki peran Storage Object Viewer dan akun layanan kedua untuk menulis, yang akan memiliki peran Storage Object Creator.

  • Anda harus melakukan pengujian untuk memastikan akun layanan berperilaku seperti yang diharapkan sebelum menerapkan update apa pun ke produksi.

  • Setelah transisi tugas produksi ke kunci HMAC akun layanan, Anda harus memeriksa metrik Cloud Monitoring berikut untuk memverifikasi bahwa kunci HMAC yang terkait dengan akun pengguna tidak lagi digunakan:

    Metrik Deskripsi
    storage.googleapis.com/authn/authentication_count Berapa kali kunci HMAC digunakan untuk mengautentikasi permintaan.

    Anda dapat menetapkan label berikut untuk melacak kunci akun pengguna yang masih digunakan selama progres migrasi:

    • access_id: mengidentifikasi ID akses yang membuat permintaan. Anda juga dapat menggunakan access_id selama rotasi kunci untuk melihat traffic berpindah dari satu kunci ke kunci lainnya.

    • authentication_method: mengidentifikasi apakah kunci adalah kunci akun pengguna atau akun layanan.

  • Setelah Anda memverifikasi bahwa kunci HMAC akun pengguna tidak lagi digunakan, Anda harus menghapus kunci HMAC tersebut. Tindakan ini akan mengurangi risiko akses data yang tidak pantas.

  • Jika akun pengguna tidak lagi digunakan untuk mengakses resource Cloud Storage, cabut semua akses ke Cloud Storage yang dimilikinya.

  • Secara opsional, Anda dapat mengaktifkan batasan restrictAuthTypes di kunci HMAC akun pengguna untuk keamanan tambahan.

Langkah selanjutnya