Lindungi Secrets saat disimpan dengan enkripsi amplop Key Management Service (KMS) di kluster ACK Pro.
Prasyarat
Pastikan Anda memiliki:
Kunci KMS di wilayah yang sama dengan kluster ACK Pro Anda. Jenis yang didukung: default, dilindungi perangkat lunak (software-protected), dan dilindungi perangkat keras (hardware-protected). Lihat Memulai penggunaan kunci dan Penagihan.
Otorisasi untuk mengaktifkan enkripsi Secret:
Akun Alibaba Cloud: memiliki otorisasi untuk mengasumsikan AliyunCSManagedSecurityRole. Konsol ACK akan meminta otorisasi saat Anda mengaktifkan enkripsi Secret, atau kunjungi langsung halaman Otorisasi Akses Sumber Daya Cloud.
Pengguna RAM atau Peran RAM: harus memiliki keduanya:
Izin RBAC sebagai Administrator atau insinyur O&M pada kluster ACK Pro. Lihat Memberikan izin RBAC kepada Pengguna RAM atau Peran RAM.
Diberikan izin sistem AliyunKMSCryptoAdminAccess. Lihat Memberikan izin kepada Pengguna RAM atau Peran RAM.
Batasan
Enkripsi Secret hanya didukung pada kluster ACK Pro dan kluster ACK Serverless Pro.
Setelah mengaktifkan enkripsi Secret, jangan menonaktifkan atau menghapus kunci melalui API atau konsol KMS. Jika kunci tidak tersedia, server API tidak dapat mengambil Secrets atau objek akun layanan, sehingga menyebabkan gangguan layanan.
Untuk menonaktifkan enkripsi Secret, matikan Secret Encryption di tab Basic Information kluster.
Cara kerja
ACK menggunakan penyedia KMS Kubernetes dengan enkripsi amplop untuk melindungi Secrets di etcd. Secret dienkripsi dengan kunci enkripsi data (DEK), dan DEK tersebut dienkripsi dengan kunci enkripsi kunci (KEK) di KMS. Teks biasa DEK tidak pernah disimpan bersama data yang dilindunginya.
Enkripsi:
Saat Anda menyimpan Secret, server API menghasilkan DEK acak dan mengenkripsi Secret dengannya.
Server API mengirim DEK ke KMS, yang mengenkripsinya dengan kunci KMS Anda (KEK) dan mengembalikan DEK terenkripsi.
Server API menyimpan Secret terenkripsi dan DEK terenkripsi di etcd.
Dekripsi:
Server API memanggil operasi
DecryptKMS untuk mendekripsi DEK.Server API menggunakan teks biasa DEK untuk mendekripsi Secret dan mengembalikannya kepada pemanggil.
Untuk informasi selengkapnya, lihat penyedia enkripsi KMS dan Gunakan enkripsi amplop.
KMS v2
Mulai Kubernetes 1.31, kluster ACK Pro dan menggunakan antarmuka KMS v2 komunitas untuk enkripsi saat disimpan. KMS v2 mendukung lebih banyak instans Secret dalam satu kluster dan memberikan kinerja enkripsi serta dekripsi yang lebih baik. Untuk informasi selengkapnya tentang alur enkripsi dan dekripsi KMS v2, lihat KMS v2.
Untuk melakukan peningkatan dari antarmuka KMS v1 ke antarmuka KMS v2, lihat Bagaimana cara meningkatkan ke KMS v2 untuk enkripsi Secret saat disimpan?
Komunitas Kubernetes menandai KMS v1 sebagai usang (deprecated) pada versi 1.27 dan menonaktifkan antarmuka v1 secara default pada versi 1.29. Untuk memastikan kompatibilitas, kluster ACK Pro dan masih mengaktifkan antarmuka v1 dengan mengatur fitur gate KMS v1.
Aktifkan enkripsi saat disimpan untuk Secrets
Kluster ACK Pro baru
Login ke Konsol ACK dan klik Clusters di panel navigasi kiri.
Pada halaman Clusters, klik Cluster Templates. Pada halaman Select Cluster Template, temukan Professional Managed Kubernetes Cluster dan klik Create.
Pada tab Managed Kubernetes, klik Show Advanced Options. Di bagian Secret Encryption, pilih Select Key, lalu pilih kunci yang diinginkan. Konfigurasikan parameter lainnya, kemudian klik Create Cluster. Untuk informasi lebih lanjut, lihat Membuat kluster ACK Pro.

Jangan menonaktifkan atau menghapus kunci KMS setelah mengaktifkan enkripsi Secret. Jika kunci tidak tersedia, server API tidak dapat mengambil Secrets atau objek akun layanan, sehingga menyebabkan gangguan layanan.
Verifikasi: Login ke Konsol ActionTrail. Klik Event Detail Query di panel navigasi. Jika operasi enkripsi dan dekripsi dari role aliyuncsmanagedsecurityrole muncul, berarti enkripsi Secret aktif.
Kluster ACK Pro yang sudah ada
Masuk ke Konsol ACK, lalu klik Clusters di panel navigasi sebelah kiri.
Pada halaman Clusters, klik nama kluster target. Buka tab Basic Information. Di bagian Security and Audit, aktifkan Secret Encryption. Jika diminta otorisasi, klik Go to RAM console, lalu klik Confirm Authorization Policy.
Pengguna RAM atau role harus memiliki peran RBAC administrator atau insinyur O&M pada kluster. Untuk menetapkan AliyunCSManagedSecurityRole, login dengan Akun Alibaba Cloud atau identitas RAM yang memiliki izin manajemen RAM.
Pada kotak dialog Secret Encryption, pilih kunci lalu klik OK. Jika tidak ada kunci yang tersedia, klik create keys di Konsol KMS. Lihat Membuat CMK. Saat status kluster berubah dari Updating menjadi Running, enkripsi Secret telah diaktifkan.
Jangan menonaktifkan atau menghapus kunci KMS setelah mengaktifkan enkripsi Secret. Jika kunci tidak tersedia, server API tidak dapat mengambil Secrets atau objek akun layanan, sehingga menyebabkan gangguan layanan.
Untuk menonaktifkan: Di bagian Security and Audit halaman detail kluster, matikan Secret Encryption.
Rotasi kunci enkripsi
Rotasi kunci otomatis KMS mengenkripsi Secrets baru dengan kunci yang telah dirotasi. Secrets yang sudah ada tetap dienkripsi dengan kunci asli hingga Anda secara eksplisit mengenkripsi ulang.
Enkripsi ulang manual: Setelah rotasi selesai, enkripsi ulang semua Secrets yang ada dengan kunci baru:
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - encryption-key-rotation-time="$(date -u +'%Y-%m-%dT%H:%M:%S%z')"Lihat Mengonfigurasi rotasi kunci untuk pengaturan rotasi kunci otomatis.
FAQ
Bagaimana cara meningkatkan ke KMS v2 untuk enkripsi Secret saat disimpan?
Untuk menggunakan KMS v2 guna enkripsi Secret saat disimpan, pastikan kluster ACK Pro atau Anda berada pada versi 1.31 atau lebih baru.
Jika Anda belum mengaktifkan enkripsi Secret saat disimpan pada kluster Anda, lihat Aktifkan enkripsi saat disimpan untuk Secrets untuk mengaktifkannya. Setelah enkripsi diaktifkan, Secrets di kluster secara otomatis dienkripsi menggunakan API KMS v2 saat ditulis ke disk dan didekripsi saat dibaca.
Jika Anda telah mengaktifkan enkripsi Secret saat disimpan pada kluster Anda, Anda dapat melakukan rotasi kunci enkripsi selama jam sepi menggunakan salah satu metode berikut.
Metode 1: Jalankan perintah
kubectl get secrets --all-namespaces -o json | kubectl replace -f -. Perintah ini mengenkripsi ulang semua Secrets yang ada menggunakan API KMS v2.Metode 2: Login ke Konsol ACK. Pada halaman Cluster Information, buka tab Basic Information, temukan Secret Encryption, lalu matikan. Proses ini memicu rotasi kunci untuk semua Secrets di disk. Setelah beberapa saat, lihat Aktifkan enkripsi saat disimpan untuk Secrets untuk mengaktifkan kembali enkripsi pada kluster. Setelah enkripsi diaktifkan kembali, semua Secrets di kluster dienkripsi ulang saat disimpan menggunakan API KMS v2.
Apakah kubectl mengembalikan ciphertext setelah enkripsi Secret diaktifkan?
Tidak. Secrets disimpan sebagai ciphertext di etcd. Saat diakses melalui kubectl, server API mendekripsinya sebelum mengembalikan hasil, sehingga kubectl selalu menampilkan teks biasa.
Bagaimana cara mencegah Pengguna RAM atau Peran RAM mengaktifkan atau menonaktifkan enkripsi Secret untuk kluster ACK Serverless Pro yang sudah ada?
Tambahkan kebijakan deny untuk aksi cs:UpdateKMSEncryption ke Pengguna RAM atau Peran RAM tersebut. Lihat Membuat kebijakan RAM kustom.
{
"Action": [
"cs:UpdateKMSEncryption"
],
"Effect": "Deny",
"Resource": [
"*"
]
}