Alibaba Cloud Key Management Service (KMS) memungkinkan Anda mengenkripsi Kubernetes Secrets yang disimpan di etcd kluster ACK Edge Pro, menambahkan lapisan perlindungan di luar kontrol akses bawaan etcd. Topik ini menjelaskan cara mengaktifkan dan mengelola enkripsi Secret untuk kluster ACK Edge Pro.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kunci KMS di wilayah yang sama dengan kluster Anda. Kluster ACK Edge Pro mendukung kunci default, kunci yang dilindungi perangkat lunak, dan kunci yang dilindungi perangkat keras. Untuk informasi selengkapnya, lihat Memulai Key Management dan Penagihan.
Akses jaringan outbound ke 100.64.0.0/10. Saat enkripsi Secret diaktifkan, lapisan kontrol memanggil API KMS untuk mengenkripsi dan mendekripsi Secrets. Aturan keluar grup keamanan atau ACL jaringan VPC Anda harus mengizinkan lalu lintas ke Blok CIDR 100.64.0.0/10. Untuk informasi selengkapnya, lihat Konfigurasi grup keamanan untuk kluster.
Otorisasi yang diperlukan, berdasarkan jenis akun Anda:
Akun Alibaba Cloud: Akun tersebut harus diotorisasi untuk mengasumsikan peran
AliyunCSManagedSecurityRole. Jika belum, Konsol ACK akan meminta Anda memberikan otorisasi saat pengaktifan. Atau, buka halaman Otorisasi Cepat RAM dan selesaikan otorisasi tersebut.Pengguna RAM atau Peran RAM: Harus memiliki izin administrator atau insinyur O&M berbasis Kontrol akses berbasis peran (RBAC) pada kluster (lihat Berikan izin RBAC kepada Pengguna RAM atau Peran RAM) dan harus diberikan izin
AliyunKMSCryptoAdminAccess(lihat Berikan izin kepada Pengguna RAM atau Peran RAM).
Batasan
Jangan menghapus atau menonaktifkan kunci enkripsi. Setelah enkripsi Secret diaktifkan, jangan pernah menggunakan API KMS atau Konsol KMS untuk menonaktifkan atau menghapus kunci tersebut. Jika kunci dihapus, server API tidak dapat mendekripsi Secrets atau objek akun layanan, yang menyebabkan gangguan layanan.
Batasan wilayah. Kunci KMS harus berada di wilayah yang sama dengan kluster ACK Edge Pro.
Cara kerja
Kubernetes Secrets digunakan untuk menyimpan dan mengelola data sensitif, seperti kata sandi aplikasi, Sertifikat Transport Layer Security (TLS), dan kredensial untuk mengunduh gambar Docker. Kluster ACK Edge Pro menggunakan mekanisme penyedia KMS Kubernetes, yang menerapkan Enkripsi amplop untuk Secrets yang disimpan di etcd.
Alur enkripsi:
Saat Secret disimpan, server API menghasilkan kunci enkripsi data (DEK) acak dan menggunakannya untuk mengenkripsi Secret tersebut.
Server API mengirim DEK ke KMS. KMS mengenkripsi DEK menggunakan kunci KMS yang ditentukan dan mengembalikan DEK terenkripsi.
Server API menyimpan Secret terenkripsi dan DEK terenkripsi di etcd.
Alur dekripsi:
Saat Secret dibaca, server API mengirim DEK terenkripsi ke KMS, yang kemudian mendekripsinya menggunakan kunci KMS.
Server API menggunakan DEK teks biasa untuk mendekripsi Secret dan mengembalikan Secret dalam bentuk teks biasa.
Untuk informasi latar belakang tentang mekanisme dasarnya, lihat Penyedia KMS dan Gunakan enkripsi amplop.
Aktifkan enkripsi Secret untuk kluster baru
Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di pojok kanan atas halaman Clusters, klik Create Kubernetes Cluster.
Di halaman Create Cluster, klik tab ACK Edge. Gulir ke bagian bawah tab tersebut dan klik Advanced Options (Optional). Temukan parameter Secret Encryption, klik Select Key, lalu pilih ID kunci dari daftar drop-down. Jika Anda belum membuat kunci KMS, klik create keys untuk membuka Konsol KMS dan membuatnya. Untuk informasi selengkapnya, lihat Buat CMK. Untuk opsi konfigurasi kluster lainnya, lihat Buat kluster ACK Edge.

Verifikasi bahwa enkripsi Secret aktif dengan memeriksa ActionTrail. Login ke Konsol ActionTrail. Di panel navigasi kiri, pilih Events > Event Query. Di halaman Event Query, pastikan peran sistem
aliyuncsmanagedsecurityrolemuncul dalam log event enkripsi dan dekripsi.
Aktifkan enkripsi Secret untuk kluster yang sudah ada
Setelah Anda mengaktifkan enkripsi Secret, jangan gunakan API KMS atau Konsol KMS untuk menonaktifkan atau menghapus kunci yang digunakan untuk mengenkripsi dan mendekripsi Secrets. Jika tidak, server API menjadi tidak tersedia dan tidak dapat mengambil Secrets atau objek akun layanan, sehingga menyebabkan gangguan layanan.
Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster ACK Edge Pro Anda. Di halaman detail kluster, klik tab Basic Information. Di bagian Basic Information, aktifkan Secret Encryption. Jika ini pertama kalinya Anda mengaktifkan enkripsi Secret, ikuti petunjuk di layar dan klik Go to RAM console untuk membuka halaman Otorisasi Akses Resource Cloud. Klik Confirm Authorization Policy.
Untuk mengaktifkan enkripsi Secret, Pengguna RAM atau Peran RAM yang Anda gunakan harus memiliki peran RBAC administrator atau insinyur O&M pada kluster. Untuk menetapkan peran
AliyunCSManagedSecurityRole, login dengan Akun Alibaba Cloud atau Pengguna RAM atau Peran RAM yang memiliki izin manajemen RAM.Di kotak dialog Secret Encryption, pilih kunci yang sudah ada dan klik OK. Jika tidak ada kunci yang tersedia, klik create keys untuk membuat kunci di Konsol KMS. Untuk informasi selengkapnya, lihat Buat CMK.
Tunggu hingga status kluster berubah dari Updating menjadi Running. Enkripsi Secret kini aktif.
Untuk menonaktifkan enkripsi Secret, matikan Secret Encryption di bagian Basic Information.
Rotasi kunci enkripsi
KMS mendukung rotasi kunci otomatis. Selama rotasi, Secrets yang sudah ada tetap dienkripsi dengan kunci asli. Secrets baru dienkripsi dengan kunci baru.
Untuk memaksa semua Secrets yang sudah ada dienkripsi ulang dengan kunci baru setelah rotasi, jalankan:
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - encryption-key-rotation-time="$(date -u +'%Y-%m-%dT%H:%M:%S%z')"Untuk informasi selengkapnya tentang pengaturan rotasi kunci otomatis, lihat Konfigurasi rotasi kunci.
FAQ
Apakah kubectl mengembalikan ciphertext setelah saya mengaktifkan enkripsi Secret?
Tidak. kubectl selalu mengembalikan teks biasa saat melakukan kueri terhadap Secret. Enkripsi Secret beroperasi di lapisan etcd — Secrets disimpan sebagai ciphertext di etcd, tetapi server API mendekripsinya sebelum mengembalikan hasil ke kubectl.
Apakah Secrets yang sudah ada secara otomatis dienkripsi ulang setelah rotasi kunci?
Tidak. Selama rotasi kunci, Secrets yang sudah ada tetap dienkripsi dengan versi kunci asli. Hanya Secrets baru yang menggunakan kunci baru. Untuk mengenkripsi ulang semua Secrets yang sudah ada dengan kunci baru, jalankan perintah di Rotasi kunci enkripsi.
Bagaimana cara mencegah Pengguna RAM atau Peran RAM mengaktifkan atau menonaktifkan enkripsi Secret?
Lampirkan kebijakan tolak berikut ke Pengguna RAM atau Peran RAM tersebut. Untuk informasi selengkapnya, lihat Berikan akses ke kluster dan resource cloud menggunakan RAM.
{
"Action": [
"cs:UpdateKMSEncryption"
],
"Effect": "Deny",
"Resource": [
"*"
]
}