Menetapkan tanggal habis masa berlaku untuk secret

Topik ini menunjukkan cara menetapkan tanggal habis masa berlaku untuk secret di Secret Manager. Topik ini juga menjelaskan cara memperbarui atau menghapus tanggal habis masa berlaku yang ditetapkan untuk secret.

Ringkasan

Secara default, secret yang disimpan di Secret Manager akan ada hingga pengguna menghapusnya. Jika secret hanya boleh disimpan selama jangka waktu tertentu yang diketahui, Anda dapat melampirkan waktu habis masa berlaku ke secret tersebut. Pada waktu habis masa berlaku yang dikonfigurasi, secret akan otomatis dihapus.

Jika Anda tidak memiliki persyaratan bahwa secret harus dihapus, pertimbangkan untuk menggunakan Kondisi IAM atau status versi Dinonaktifkan untuk mencabut akses dengan cara yang aman.

Anda dapat memasukkan waktu habis masa berlaku sebagai stempel waktu atau durasi. Saat metadata rahasia diambil, masa berlakunya selalu ditampilkan sebagai stempel waktu, terlepas dari cara pemberiannya.

Masa berlaku dapat ditambahkan, diperbarui, atau dihapus dari secret kapan saja.

Batasan

  • Masa berlaku secret hanya tersedia di Secret Manager v1 API dan alat command line gcloud.

  • Masa berlaku secret tidak boleh kurang dari 60 detik atau lebih dari 100 tahun.

Menggunakan secret yang akan habis masa berlakunya dengan aman

Jika masa berlaku secret di Secret Manager berakhir, secret tersebut akan dihapus secara irreversibel. Cara terbaik untuk mendeteksi secret yang akan segera berakhir masa berlakunya adalah dengan menggunakan Kondisi IAM untuk menghapus izin dari akun yang menggunakan secret sebelum masa berlakunya berakhir.

Untuk melakukannya, saat memberikan izin pada secret, lampirkan kondisi berbasis waktu ke binding. Masa berlaku binding akan berakhir setelah secret diperkirakan tidak akan digunakan lagi, tetapi cukup awal sehingga izin yang dihapus akan diketahui sebelum secret berakhir masa berlakunya. Jika alur kerja yang dianggap tidak lagi menggunakan jeda rahasia setelah izin dicabut, izin dapat ditambahkan kembali untuk mitigasi yang cepat. Jika diperlukan waktu lebih lama, masa berlaku secret dapat diperbarui atau bahkan dihapus.

Misalnya, akun layanan diharapkan mengakses secret setiap hari selama periode 30 hari. Masa berlaku secret kemudian dapat ditetapkan ke 60 hari sejak pembuatan dan binding IAM bersyarat dapat digunakan untuk memberikan peran Secret Accessor ke akun layanan selama 45 hari. Jika akun layanan mencoba mengakses secret setelah 45 hari, error Izin Ditolak akan ditampilkan dan alur kerja yang memerlukan secret akan rusak. Kemudian, administrator dapat memberikan kembali peran Secret Accessor ke akun layanan untuk melakukan mitigasi dengan cepat selama penyelidikan, karena secret itu sendiri tidak akan dihapus selama 15 hari lagi.

Selain itu, Anda dapat membuat pemberitahuan berdasarkan log yang memperingatkan secret yang masa berlakunya akan segera berakhir. Lihat Logging masa berlaku untuk mengetahui informasi selengkapnya.

Menentukan stempel waktu dan durasi

  • Nilai stempel waktu harus diformat sebagai RFC 3339, misalnya 2100-01-01T09:00:00-05:00.

  • Nilai durasi harus diformat sebagai jumlah detik termasuk akhiran "dtk", misalnya 86400s.

Membuat secret yang akan berakhir masa berlakunya

Buat secret yang akan berakhir masa berlakunya menggunakan stempel waktu:

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --expire-time "TIMESTAMP"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "expire_time": "TIMESTAMP"
}
EOF

Buat secret yang akan berakhir masa berlakunya menggunakan durasi:

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --ttl "DURATION"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "ttl": "DURATION"
}
EOF

Memperbarui masa berlaku secret

Setiap secret dapat memiliki masa berlaku baru yang diterapkan, terlepas dari apakah secret tersebut sudah memilikinya atau belum. Setiap secret hanya dapat memiliki satu masa berlaku yang dikonfigurasi dalam satu waktu. Memperbarui masa berlaku secret yang sudah memiliki masa berlaku akan menimpa masa berlaku yang ada.

Perbarui masa berlaku secret menggunakan stempel waktu:

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets update "SECRET_ID" \
    --expire-time "TIMESTAMP"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "expire_time": "TIMESTAMP"
}
EOF

Perbarui masa berlaku secret menggunakan durasi:

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets update "SECRET_ID" \
    --ttl "DURATION"

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "ttl": "DURATION"
}
EOF

Menghapus masa berlaku secret

gcloud

Untuk menggunakan Secret Manager di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi 378.0.0 atau yang lebih tinggi. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

gcloud secrets update "SECRET_ID" \
    --remove-expiration

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

Menyertakan expire_time atau ttl dalam updateMask sekaligus memberikan nilai untuk keduanya tidak akan menghapus masa berlaku.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary '{}'

Logging masa berlaku

Cloud Audit Logs tidak dihasilkan saat masa berlaku Secret berakhir secara otomatis. Sebagai gantinya, Secret Manager menulis log ke resource Secret Secret Manager pada interval tertentu yang mengarah ke masa berlaku secret.

Pengaturan Waktu Log Jenis Peristiwa Rahasia
30 hari sebelum habis masa berlaku EXPIRES_IN_30_DAYS
7 hari sebelum habis masa berlaku EXPIRES_IN_7_DAYS
1 hari sebelum habis masa berlaku EXPIRES_IN_1_DAY
6 jam sebelum habis masa berlaku EXPIRES_IN_6_HOURS
1 jam sebelum habis masa berlaku EXPIRES_IN_1_HOUR
saat habis masa berlaku EXPIRED

Lihat Panduan Memulai Logging untuk mengetahui informasi tentang cara melihat log ini. Anda dapat membuat Metrik berbasis log dan menggunakannya untuk membuat pemberitahuan tentang masa berlaku yang akan berakhir.

Langkah selanjutnya