Menetapkan tanggal habis masa berlaku untuk secret

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

Ringkasan

Secara default, secret yang disimpan di Secret Manager tetap ada hingga pengguna menghapusnya. Jika secret hanya boleh disimpan selama waktu terbatas yang diketahui, Anda dapat menambahkan waktu habis masa berlaku. Pada waktu kedaluwarsa yang telah dikonfigurasi secara otomatis, rahasia itu dihapus.

Jika Anda tidak memiliki persyaratan bahwa rahasia harus dihapus, pertimbangkan untuk menggunakan Kondisi IAM atau Status versi Nonaktif untuk mencabut akses dengan cara yang aman.

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

Masa berlaku dapat ditambahkan, diperbarui, atau dihapus dari suatu rahasia 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 lagi.

Rahasia yang akan habis masa berlakunya dengan aman

Jika masa berlaku rahasia berakhir di Secret Manager, rahasia tersebut tidak dapat dipulihkan. Cara terbaik untuk mendeteksi rahasia yang akan segera berakhir adalah dengan menggunakan Kondisi IAM untuk menghapus izin dari akun yang menggunakan rahasia tersebut sebelum masa berlakunya habis.

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

Misalnya, akun layanan diharapkan untuk mengakses secret setiap hari selama periode 30 hari. Masa berlaku secret dapat ditetapkan ke 60 hari sejak pembuatan dan binding IAM bersyarat dapat digunakan untuk memberikan peran Secret Accessor kepada 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 tersebut akan pecah. Administrator kemudian dapat memberikan peran Secret Accessor kembali ke akun layanan untuk memitigasinya dengan cepat saat menyelidiki, karena rahasia itu sendiri tidak akan dihapus selama 15 hari lagi.

Selain itu, Anda dapat membuat pemberitahuan berdasarkan log peringatan secret yang akan segera habis masa berlakunya. Lihat Logging masa berlaku untuk 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 yang mencakup akhiran "s", misalnya 86400s.

Membuat secret yang akan segera berakhir

Buat secret yang akan habis masa berlakunya menggunakan stempel waktu:

gcloud

Untuk menggunakan Secret Manager di command line, Instal atau upgrade Google Cloud CLI ke versi 378.0.0 atau yang lebih baru. 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 mendemonstrasikan 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 menggunakan durasi:

gcloud

Untuk menggunakan Secret Manager di command line, Instal atau upgrade Google Cloud CLI ke versi 378.0.0 atau yang lebih baru. 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 mendemonstrasikan 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 rahasia

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

Perbarui masa berlaku rahasia menggunakan stempel waktu:

gcloud

Untuk menggunakan Secret Manager di command line, Instal atau upgrade Google Cloud CLI ke versi 378.0.0 atau yang lebih baru. 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 mendemonstrasikan 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 akhir masa berlaku rahasia menggunakan durasi:

gcloud

Untuk menggunakan Secret Manager di command line, Instal atau upgrade Google Cloud CLI ke versi 378.0.0 atau yang lebih baru. 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 mendemonstrasikan 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 rahasia

gcloud

Untuk menggunakan Secret Manager di command line, Instal atau upgrade Google Cloud CLI ke versi 378.0.0 atau yang lebih baru. 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 mendemonstrasikan 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 di 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 '{}'

Pencatatan masa berlaku

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

Catat Waktu Jenis Peristiwa Rahasia
30 hari sebelum masa berlaku habis EXPIRES_IN_30_DAYS
7 hari sebelum masa berlaku habis EXPIRES_IN_7_DAYS
1 hari sebelum masa berlaku habis EXPIRES_IN_1_DAY
6 jam sebelum masa berlaku habis EXPIRES_IN_6_HOURS
1 jam sebelum masa berlaku habis EXPIRES_IN_1_HOUR
saat kedaluwarsa 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 tanggal habis masa berlaku yang akan datang.

Langkah selanjutnya