Menggunakan Secret Manager untuk menangani secret di Cloud SQL

Ringkasan

Mengelola informasi sensitif Anda dengan benar adalah bagian penting dalam pembuatan alur kerja pengembangan yang aman. Untuk Cloud SQL, sebaiknya simpan informasi sensitif Anda sebagai secret yang dibuat di dalam Secret Manager. Secret mencakup kunci API, sandi, informasi sensitif, atau kredensial yang mungkin Anda gunakan untuk mengakses sistem rahasia.

Secret Manager memberikan kemudahan dan meningkatkan keamanan. Anda juga dapat menerapkan pembuatan versi ke secret Anda dan membagikannya ke seluruh tim Anda. Untuk mempelajari cara membagikan secret dengan tim lebih lanjut, lihat Kontrol akses (IAM).

Halaman ini menjelaskan empat kasus penggunaan Secret Manager dalam mengelola secret menggunakan Cloud SQL:

Sebelum memulai

Sebelum Anda mulai menggunakan Secret Manager untuk menangani secret di Cloud SQL:

Nama pengguna dan sandi

Menggunakan Secret Manager untuk menyimpan nama pengguna dan sandi akun pengguna Cloud SQL Anda sebagai secret adalah cara yang aman dan andal untuk mengelola informasi sensitif ini.

Pertama, Anda harus membuat pengguna di Cloud SQL. Sebagai bagian dari pembuatan pengguna ini, Anda harus menyediakan nama pengguna dan sandi. Untuk mengetahui informasi lebih lanjut tentang cara membuat pengguna di Cloud SQL, lihat Mengelola pengguna dengan autentikasi bawaan.

Setelah pengguna dibuat, buat secret di Secret Manager untuk menyimpan nama pengguna dan sandi. Hal ini memastikan bahwa informasi sensitif ini tidak akan hilang. Untuk mengetahui informasi selengkapnya tentang cara membuat dan mengakses secret di Secret Manager, lihat Membuat dan mengakses secret.

Instance Cloud SQL

Ketika menghubungkan ke instance Cloud SQL, Anda dapat menggunakan Secret Manager untuk mengelola secret guna membuat alur kerja pengembangan yang aman.

Mulailah dengan menghubungkan ke instance Cloud SQL dari komputer lokal Anda. Setelah instance berjalan, gunakan variabel lingkungan untuk menghubungkannya. Beberapa nilai yang dikaitkan dengan variabel bersifat lebih sensitif, seperti nama koneksi instance. Untuk setiap nilai, Anda dapat membuat secret di dalam Secret Manager untuk menyimpan dan mengelola informasi tersebut. Untuk mempelajari lebih lanjut cara menggunakan variabel lingkungan untuk terhubung ke instance Cloud SQL Anda, lihat Mengonfigurasi dan menjalankan aplikasi contoh.

Anda dapat mengambil nama koneksi instance yang disimpan sebagai secret langsung dari Secret Manager. Hal ini memberikan alur kerja fleksibel yang dapat membantu tim Anda membagikan informasi sensitif ini ke beberapa aplikasi dan mengelolanya dari lokasi terpusat. Untuk mengetahui informasi selengkapnya tentang cara mengambil secret dari Secret Manager, lihat Membuat secret menggunakan Secret Manager.

Aplikasi memerlukan informasi dalam secret untuk memulai. Informasi ini berisi nilai-nilai yang terkait dengan variabel lingkungan yang digunakan untuk terhubung ke aplikasi. Aplikasi Anda mengakses secret saat dimulai, lalu menggunakan secret untuk mengonfigurasi koneksi ke Cloud SQL. Jika secret yang relevan diperbarui di Secret Manager, Anda mungkin harus memulai ulang aplikasi.

Sertifikat SSL/TLS

Jika Anda terhubung ke instance Cloud SQL menggunakan alamat IP publik atau pribadi, Anda harus menggunakan sertifikat Transport Layer Security (TLS) yang mana mengamankan data saat dikirim. Setiap sertifikat TLS menyertakan public key certificate dan kunci pribadi. Untuk informasi selengkapnya tentang cara mengonfigurasi sertifikat TLS, lihat Mengonfigurasi sertifikat SSL/TLS.

Anda dapat menyimpan sertifikat TLS, public key certificate, dan kunci pribadi sebagai secret untuk menjaganya tetap aman dan membagikannya kepada tim Anda. Untuk mengetahui informasi selengkapnya tentang cara membuat dan mengakses secret, lihat Membuat secret dengan Secret Manager. Untuk mengetahui informasi lebih lanjut mengenai berbagi secret, lihat Kontrol akses (IAM).

Skenario pemulihan dari bencana

Jika instance utama dalam Cloud SQL gagal, Anda dapat mempromosikan replika baca ke instance utama tersebut. Setelah replika baca menjadi instance utama, Anda harus memperbarui nama koneksi instance untuk mencerminkan promosi ini. Jika nama koneksi instance disimpan dalam secret, Anda harus memperbarui secret dengan nama instance utama yang baru. Untuk mengetahui informasi selengkapnya, lihat Mengedit secret.

Salah satu cara menggunakan Secret Manager untuk failover adalah dengan menyimpan nama instance utama di dalam secret, lalu mengonfigurasi konektor Cloud SQL agar diperbarui setiap kali secret diperbarui.

Anda dapat menggunakan skrip wrapper bash berikut dengan proxy Auth Cloud SQL untuk mendeteksi kapan nilai untuk nama koneksi instance diperbarui, lalu memulai ulang proxy dengan nilai baru:

#!/bin/bash

SECRET_ID="my-secret-id" # TODO(developer): replace this value
REFRESH_INTERVAL=5
PORT=5432                # TODO(developer): change this port as needed

# Get the latest version of the secret and start the proxy
INSTANCE=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
cloud_sql_proxy -instances="$INSTANCE"=tcp:"$PORT" &
PID=$!

# Every 5s, get the latest version of the secret. If it's changed, restart the
# proxy with the new value.
while true; do
    sleep $REFRESH_INTERVAL
    NEW=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
    if [ "$INSTANCE" != "$NEW" ]; then
        INSTANCE=$NEW
        kill $PID
        wait $PID
        cloud_sql_proxy -instances="$INSTANCE"=tcp:"$PORT" &
        PID=$!
    fi
done

Untuk mengetahui informasi selengkapnya tentang cara membuat dan mengakses secret yang berisi nama koneksi instance replika utama, lihat Membuat secret dengan Secret Manager. Untuk informasi selengkapnya tentang cara menggunakan proxy Auth Cloud SQL, lihat Menghubungkan ke Cloud SQL menggunakan proxy Auth Cloud SQL.

Langkah berikutnya

  • Anda dapat mengintegrasikan Secret Manager dengan produk Google Cloud lainnya, seperti Cloud Run.
  • Untuk mempelajari cara mengintegrasikan Secret Manager dengan lingkungan pengembangan Anda, lihat berbagai contoh yang tersedia di halaman Semua contoh kode Secret Manager.