All Products
Search
Document Center

Container Service for Kubernetes:Cara menggunakan Alibaba Cloud KMS untuk mengenkripsi secrets saat disimpan di kluster ACK Pro

Last Updated:Jun 21, 2026

Di kluster ACK Pro atau , Anda dapat menggunakan kunci dari Alibaba Cloud Key Management Service (KMS) untuk mengenkripsi secrets Kubernetes. Topik ini menjelaskan cara menggunakan kunci yang dikelola KMS untuk mengenkripsi data secret Kubernetes saat disimpan di kluster ACK Pro.

Prasyarat

Item

Deskripsi

KMS key

Anda telah membuat kunci KMS di Konsol Key Management Service, dan kunci tersebut berada di wilayah yang sama dengan kluster ACK Pro target.

Kluster ACK Pro mendukung kunci default, kunci software, dan kunci hardware. Anda dapat memilih jenis kunci. Untuk informasi lebih lanjut tentang manajemen kunci dan operasi terkait, lihat Panduan cepat manajemen kunci. Untuk detail penagihan KMS, lihat penagihan.

Penting

Setelah Anda mengaktifkan enkripsi saat disimpan, jangan gunakan konsol atau API KMS untuk menonaktifkan atau menghapus kunci yang digunakan untuk enkripsi dan dekripsi secret. Jika tidak, server API kluster akan menjadi tidak tersedia. Akibatnya, Anda tidak dapat mengambil objek seperti secrets dan ServiceAccounts, yang mengganggu aplikasi Anda.

Aturan ACL jaringan kluster

Saat enkripsi saat disimpan diaktifkan, plugin KMS pada lapisan kontrol harus mengakses API Alibaba Cloud KMS untuk mengenkripsi dan mendekripsi secrets. Untuk mengizinkan hal ini, Anda harus menambahkan aturan yang mengizinkan traffic ke blok CIDR 100.64.0.0/10, yang dicadangkan untuk layanan Alibaba Cloud. Pastikan bahwa arah keluar grup keamanan Anda dan aturan arah masuk dan arah keluar ACL jaringan VPC Anda mengizinkan traffic ini. Jika tidak, lapisan kontrol kluster mungkin menjadi tidak tersedia. Untuk informasi lebih lanjut, lihat kelompok keamanan dasar.

Otorisasi

Pastikan izin yang diperlukan telah diberikan sesuai dengan jenis akun Anda.

Cara kerja enkripsi secret

Di kluster Kubernetes, informasi sensitif untuk aplikasi—seperti kata sandi, sertifikat TLS, dan kredensial image Docker—biasanya disimpan dan dikelola menggunakan objek Secret. Kubernetes menyimpan semua data objek Secret di database etcd kluster. Untuk informasi lebih lanjut tentang Secret, lihat Secrets.

Di kluster ACK Pro atau , Anda dapat menggunakan kunci yang dibuat di KMS untuk mengenkripsi secrets Kubernetes. Proses enkripsi ini didasarkan pada mekanisme KMS Encryption Provider di Kubernetes, yang menggunakan enkripsi amplop untuk secara otomatis mengenkripsi dan mendekripsi secrets Kubernetes yang disimpan di etcd. Proses enkripsi dan dekripsi adalah sebagai berikut:

  1. Saat Anda menyimpan Secret menggunakan API Kubernetes, server API mengenkripsi Secret tersebut dengan kunci enkripsi data yang dihasilkan secara acak. Kemudian, kunci enkripsi data tersebut dienkripsi dengan kunci KMS yang Anda tentukan. Secret yang telah dienkripsi dan kunci data yang telah dienkripsi disimpan di etcd.

  2. Saat Anda mengambil Secret, sistem pertama-tama memanggil API KMS Decrypt untuk mendekripsi kunci data yang telah dienkripsi. Lalu, sistem menggunakan kunci teks biasa yang dihasilkan untuk mendekripsi data Secret dan mengembalikan Secret dalam bentuk teks biasa.

Untuk informasi lebih lanjut, lihat Mekanisme KMS Encryption Provider dan Gunakan kunci KMS untuk enkripsi amplop.

KMS v2

Mulai dari Kubernetes 1.31, kluster ACK Pro dan secara default menggunakan API KMS v2 komunitas untuk enkripsi saat disimpan. KMS v2 mendukung lebih banyak Secret dalam kluster dan memberikan kinerja enkripsi dan dekripsi yang lebih baik. Untuk informasi lebih lanjut tentang proses enkripsi dan dekripsi KMS v2, lihat KMS v2.

Untuk meningkatkan kluster Anda dari API KMS v1 ke API KMS v2, lihat Bagaimana cara meningkatkan ke KMS v2 untuk enkripsi secret saat disimpan?

Catatan

Komunitas Kubernetes telah menghentikan dukungan API KMS v1 pada versi 1.27 dan menonaktifkannya secara default pada versi 1.29. Untuk kompatibilitas, kluster ACK Pro dan masih mengaktifkan API KMS v1 melalui fitur gate KMS v1.

Aktifkan enkripsi saat disimpan untuk kluster ACK Pro

Untuk kluster baru

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik Create Kubernetes Cluster.

  3. Di bagian bawah tab ACK Managed Cluster, perluas Advanced Options (Optional). Temukan Secret Encryption, pilih Select Key, lalu pilih ID kunci KMS dari daftar drop-down. Konfigurasikan parameter lain sesuai kebutuhan dan klik Create Kubernetes Cluster.

    Untuk informasi lebih lanjut tentang cara mengonfigurasi kluster ACK Pro, lihat Parameter untuk membuat kluster ACK managed.

Masuk ke Konsol ActionTrail dan klik Cluster Events Query di panel navigasi sisi kiri. Jika Anda menemukan log event enkripsi dan dekripsi yang menggunakan peran sistem AliyunCSManagedSecurityRole di halaman Cluster Events Query, berarti enkripsi Secret saat disimpan telah diaktifkan untuk kluster tersebut.

Jika Anda tidak lagi memerlukan fitur ini, buka halaman Clusters, klik nama kluster, lalu klik tab Cluster Information. Di halaman Basic Information, matikan sakelar Security and Auditing di bagian Secret Encryption.

Untuk kluster yang sudah ada

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster target. Di halaman detail kluster, klik tab Basic Information. Di bagian Security and Auditing, aktifkan sakelar Secret Encryption.

    Pertama kali Anda mengaktifkan fitur ini, Anda akan diminta untuk memberikan izin. Klik Go to RAM console. Di halaman Cloud Resource Access Authorization untuk Resource Access Management (RAM), klik Confirm.

    Catatan
    • Untuk mengaktifkan enkripsi saat disimpan, pastikan Pengguna RAM atau Peran RAM yang sedang login memiliki izin administrator RBAC atau O&M pada kluster. Untuk informasi lebih lanjut, lihat Otorisasi resource di kluster menggunakan RBAC.

    • Untuk memberikan izin kepada peran AliyunCSManagedSecurityRole, pastikan Anda login dengan akun Alibaba Cloud atau Pengguna RAM/Peran RAM yang memiliki izin manajemen RAM.

  3. Di kotak dialog Secret Encryption, pilih kunci KMS yang sudah ada dan klik OK.

    Jika Anda belum memiliki kunci KMS, klik Create Key untuk membuka Konsol Key Management Service dan buat kunci. Untuk informasi lebih lanjut, lihat Buat kunci.

    Saat status kluster berubah dari Updating menjadi Running, enkripsi Secret saat disimpan telah diaktifkan untuk kluster tersebut.

    Jika Anda tidak lagi memerlukan fitur ini, Anda dapat mematikan sakelar Security and Auditing di bagian Secret Encryption.

Rotasi kunci otomatis

Anda dapat menggunakan fitur rotasi kunci otomatis KMS untuk mengenkripsi secrets saat disimpan. Saat kunci diputar secara otomatis, secrets yang sudah ada tetap dienkripsi dengan versi kunci sebelumnya. Secrets baru dienkripsi dengan versi kunci baru. Untuk informasi lebih lanjut tentang rotasi kunci otomatis, lihat Rotasi kunci.

Untuk memastikan secrets yang sudah ada juga dienkripsi dengan versi kunci baru, jalankan perintah berikut untuk mengenkripsi ulang semua secrets yang ada setelah kunci diputar secara otomatis.

kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - encryption-key-rotation-time="$(date -u +'%Y-%m-%dT%H:%M:%S%z')"

FAQ

Tingkatkan ke KMS v2

Untuk menggunakan KMS v2 guna mengenkripsi secrets saat disimpan, pastikan kluster ACK Pro atau Anda berada pada versi 1.31 atau lebih baru.

  • Jika enkripsi saat disimpan belum diaktifkan untuk kluster Anda, aktifkan dengan mengikuti petunjuk di Aktifkan enkripsi saat disimpan untuk kluster ACK Pro. Setelah diaktifkan, kluster secara otomatis menggunakan API KMS v2 untuk mengenkripsi dan mendekripsi secrets.

  • Jika enkripsi saat disimpan sudah diaktifkan untuk kluster Anda, Anda dapat beralih ke metode enkripsi KMS v2 selama jam sepi dengan 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: Masuk ke Konsol Container Service for Kubernetes (ACK). Di tab Cluster Information pada halaman Basic Information, temukan dan matikan Secret Encryption. Hal ini akan memicu proses pengenkripsian ulang untuk semua secrets di kluster. Setelah beberapa saat, aktifkan kembali fitur tersebut dengan mengikuti petunjuk di Aktifkan enkripsi saat disimpan untuk kluster ACK Pro. Setelah fitur diaktifkan kembali, semua secrets di kluster akan dienkripsi saat disimpan menggunakan API KMS v2.

Apakah secrets yang diambil melalui kubectl dienkripsi?

Tidak. Enkripsi saat disimpan mengenkripsi data secret mentah di etcd, yang kemudian disimpan sebagai ciphertext. Namun, saat Anda menggunakan Secret API melalui server API, Anda menerima data secret dalam bentuk teks biasa.

Cara mencegah Pengguna RAM atau Peran RAM mengaktifkan atau menonaktifkan enkripsi Secret saat disimpan di kluster ACK Pro yang sudah ada

Anda dapat menyambungkan kebijakan izin RAM yang secara eksplisit menolak aksi cs:UpdateKMSEncryption ke Pengguna RAM atau Peran RAM tersebut. Hal ini mencegah Pengguna RAM atau Peran RAM tersebut mengaktifkan atau menonaktifkan enkripsi saat disimpan untuk kluster ACK Pro atau yang sudah ada. Untuk informasi lebih lanjut, lihat Gunakan RAM untuk memberikan izin untuk kluster dan sumber daya cloud.

  {
      "Action": [
          "cs:UpdateKMSEncryption"
      ],
      "Effect": "Deny",
      "Resource": [
          "*"
      ]
  }