全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan Alibaba Cloud KMS untuk mengenkripsi Secrets saat disimpan

更新时间:Jan 16, 2026

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

Prasyarat

Prasyarat

Deskripsi

Kunci KMS

Kunci KMS telah dibuat di Konsol Key Management Service. Kunci tersebut dan kluster ACK Pro tujuan berada di wilayah yang sama.

Kluster ACK Pro mendukung kunci default, kunci yang dilindungi perangkat lunak, dan kunci yang dilindungi perangkat keras. Anda dapat memilih jenis kunci sesuai kebutuhan. Untuk informasi selengkapnya tentang cara mengelola kunci KMS, lihat Memulai manajemen kunci. Untuk informasi selengkapnya tentang penagihan KMS, lihat Penagihan produk.

Penting

Saat Anda mengaktifkan enkripsi saat disimpan, jangan gunakan konsol KMS atau OpenAPI untuk menonaktifkan atau menghapus kunci yang dipilih untuk enkripsi dan dekripsi Secret. Jika tidak, API Server kluster akan menjadi tidak tersedia. Hal ini mencegah Anda mengambil objek seperti Secrets dan ServiceAccounts, serta memengaruhi operasi normal aplikasi Anda.

Konfigurasi aturan ACL jaringan kluster

Saat Anda mengaktifkan enkripsi saat disimpan, plugin KMS pada lapisan kontrol perlu mengakses OpenAPI Alibaba Cloud KMS untuk mengenkripsi dan mendekripsi instance Secret. Oleh karena itu, pastikan aturan outbound grup keamanan dan aturan inbound dan outbound ACL jaringan VPC yang digunakan oleh kluster mengizinkan trafik ke blok CIDR layanan Alibaba Cloud (100.64.0.0/10). Jika tidak, lapisan kontrol kluster akan menjadi tidak tersedia. Untuk informasi selengkapnya, lihat Grup keamanan dasar.

Otorisasi

Pastikan Anda telah menyelesaikan operasi otorisasi berikut berdasarkan jenis akun Anda.

  • Akun Alibaba Cloud: Akun layanan kontainer telah diberikan izin dari role sistem AliyunCSManagedSecurityRole. Jika akun yang Anda gunakan belum diberikan izin tersebut, konsol ACK akan meminta Anda untuk mengotorisasi role keamanan KMS saat Anda mengaktifkan enkripsi saat disimpan untuk Secrets. Anda dapat mengikuti petunjuk di konsol untuk menyelesaikan otorisasi, atau buka Halaman Otorisasi Cepat untuk Access Control untuk menyelesaikan otorisasi.

  • Pengguna RAM atau Peran RAM:

Pengenalan enkripsi Secret

Di kluster Kubernetes, Secrets digunakan untuk menyimpan dan mengelola informasi sensitif aplikasi, seperti kata sandi, sertifikat TLS, dan kredensial untuk mengunduh image Docker. Kubernetes menyimpan semua data objek Secret di etcd kluster. Untuk informasi selengkapnya, lihat Secrets.

Di kluster ACK Pro dan , Anda dapat menggunakan kunci dari KMS untuk mengenkripsi Kubernetes Secrets. Proses enkripsi ini didasarkan pada mekanisme Kubernetes KMS Encryption Provider. Mekanisme ini menggunakan enkripsi amplop untuk secara otomatis mengenkripsi dan mendekripsi Kubernetes Secrets yang disimpan di etcd. Langkah-langkah berikut menjelaskan cara Kubernetes Secrets dienkripsi dan didekripsi.

  1. Saat Anda membuat Secret menggunakan API Kubernetes, API Server mengenkripsi data dengan kunci enkripsi data acak. API Server kemudian menggunakan kunci KMS yang ditentukan untuk mengenkripsi kunci data tersebut. Data yang telah dienkripsi dan kunci data yang telah dienkripsi disimpan di etcd.

  2. Untuk mendekripsi Kubernetes Secret, API Server memanggil operasi OpenAPI KMS Decrypt untuk mendekripsi kunci data yang telah dienkripsi. Kemudian, API Server menggunakan kunci data teks biasa hasil dekripsi tersebut untuk mendekripsi data Secret dan mengembalikan data teks biasa ke klien.

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

KMS v2

Mulai dari Kubernetes 1.31, kluster ACK Pro dan menggunakan API KMS v2 untuk mengimplementasikan enkripsi saat disimpan. KMS v2 mendukung lebih banyak instance Secret dalam satu kluster dan memberikan peningkatan performa enkripsi dan dekripsi. Untuk informasi selengkapnya tentang proses enkripsi dan dekripsi KMS v2, lihat KMS v2.

Untuk meningkatkan API KMS v1 yang digunakan kluster Anda ke API KMS v2, lihat Bagaimana cara meningkatkan penggunaan KMS v2 untuk enkripsi saat disimpan untuk Secrets?

Catatan

Komunitas Kubernetes telah menghentikan dukungan KMS v1 di Kubernetes 1.27 dan menonaktifkan API v1 secara default di Kubernetes 1.29. Untuk memastikan kompatibilitas, kluster ACK Pro dan masih dapat menggunakan API v1 karena fitur gate KMS v1 diaktifkan.

Aktifkan enkripsi saat disimpan untuk Secrets di kluster ACK Pro

Aktifkan enkripsi saat disimpan untuk Secrets di kluster ACK Pro baru

  1. Di halaman Clusters, klik Create Cluster.

  2. Di tab ACK Managed Cluster, perluas Advanced Options (Optional). Di bagian Secret Encryption at Rest, pilih kotak centang Select KMS Key, lalu pilih ID kunci KMS dari daftar drop-down. Konfigurasikan parameter lain sesuai kebutuhan. Klik Create Cluster.

    Secret encryption

    Untuk informasi selengkapnya tentang cara mengonfigurasi parameter lain untuk kluster ACK Pro, lihat Parameter untuk membuat kluster ACK yang dikelola.

Masuk ke Konsol ActionTrail. Di panel navigasi sebelah kiri, klik Event Query. Jika halaman Event Query berisi log event untuk operasi enkripsi dan dekripsi yang menggunakan role sistem aliyuncsmanagedsecurityrole, ini menunjukkan bahwa enkripsi saat disimpan untuk Secrets telah diaktifkan untuk kluster tersebut.

Jika Anda tidak lagi memerlukan fitur enkripsi saat disimpan untuk Secrets, Anda dapat mengklik nama kluster di daftar kluster. Di halaman Cluster Information, klik tab Basic Information. Di bagian Security and Auditing, matikan sakelar Secret Encryption at Rest.

Aktifkan enkripsi saat disimpan untuk Secrets di kluster ACK Pro yang sudah ada

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

    Jika Anda mengaktifkan fitur ini untuk pertama kalinya, klik Go to RAM for Authorization sesuai permintaan. Anda akan diarahkan ke halaman Quick Authorization for Access Control. Lalu, klik Confirm Authorization untuk memberikan izin yang diperlukan.

    Catatan
    • Untuk mengaktifkan enkripsi saat disimpan, pastikan Pengguna RAM atau Peran RAM saat ini memiliki izin administrator atau O&M pada kluster yang diberikan menggunakan RBAC. Untuk informasi selengkapnya, lihat Gunakan RBAC untuk memberikan izin pada resource kluster.

    • Untuk memberikan izin kepada role aliyuncsmanagedsecurityrole, pastikan Anda masuk sebagai Akun Alibaba Cloud atau Pengguna RAM atau Peran RAM yang memiliki izin manajemen RAM.

  2. Di kotak dialog Secret Encryption at Rest yang muncul, pilih kunci KMS yang sudah ada dan klik OK.

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

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

    Jika Anda tidak lagi memerlukan fitur enkripsi saat disimpan untuk Secrets, Anda dapat mematikan sakelar Secret Encryption at Rest di bagian Security and Auditing.

Gunakan rotasi kunci otomatis untuk mengaktifkan enkripsi saat disimpan untuk Secrets

Anda dapat menggunakan fitur rotasi kunci otomatis KMS bersamaan dengan enkripsi saat disimpan untuk Secrets. Saat kunci dirotasi secara otomatis, Secrets yang sudah ada tetap dienkripsi dengan versi kunci sebelumnya. Secrets baru dienkripsi dengan versi kunci baru. Untuk informasi selengkapnya tentang rotasi kunci otomatis, lihat Rotasi kunci.

Untuk memastikan Secrets yang sudah ada dienkripsi ulang dengan versi kunci baru, jalankan perintah berikut untuk mengenkripsi ulang semua Secrets yang sudah ada setelah kunci dirotasi 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

Bagaimana cara meningkatkan penggunaan KMS v2 untuk enkripsi saat disimpan untuk Secrets?

Untuk menggunakan KMS v2 untuk enkripsi saat disimpan untuk Secrets, pastikan kluster ACK Pro atau Anda menggunakan versi 1.31 atau lebih baru.

  • Jika enkripsi saat disimpan untuk Secrets belum diaktifkan untuk kluster Anda, lihat Aktifkan enkripsi saat disimpan untuk Secrets di kluster ACK Pro untuk mengaktifkan fitur tersebut. Setelah fitur diaktifkan, instance Secret di kluster akan secara otomatis dienkripsi dan didekripsi menggunakan API KMS v2 saat ditulis ke atau dibaca dari disk.

  • Jika fitur enkripsi saat disimpan untuk Secret sudah diaktifkan untuk kluster Anda, Anda dapat merotasi kunci enkripsi saat disimpan 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 instance Secret menggunakan API KMS v2.

    • Metode 2: Masuk ke Konsol Container Service for Kubernetes. Di halaman Cluster Information, di tab Basic Information, matikan Secret Encryption at Rest. Tindakan ini akan mendekripsi semua instance Secret di kluster. Setelah proses selesai, lihat Aktifkan enkripsi saat disimpan untuk Secrets di kluster ACK Pro untuk mengaktifkan kembali fitur tersebut. Saat fitur diaktifkan kembali, semua instance Secret di kluster akan dienkripsi saat disimpan menggunakan API KMS v2.

Setelah enkripsi saat disimpan diaktifkan, apakah Secret yang diperoleh melalui perintah kubectl berupa ciphertext?

Tidak. Fitur enkripsi saat disimpan mengenkripsi data Secret mentah yang disimpan di etcd. Namun, saat klien mengambil data Secret dengan memanggil API Server, data tersebut didekripsi dan dikembalikan sebagai teks biasa.

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

Anda dapat menyambungkan kebijakan RAM berikut ke Pengguna RAM atau Peran RAM untuk mencegah mereka mengaktifkan atau menonaktifkan fitur enkripsi saat disimpan untuk Secrets di kluster ACK Pro atau yang sudah ada. Untuk informasi selengkapnya, lihat Gunakan RAM untuk memberikan izin akses ke kluster dan resource cloud.

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