Gambaran umum manajemen sertifikat di AKS yang diaktifkan oleh Azure Arc

Berlaku untuk: AKS di Azure Stack HCI 22H2, AKS di Windows Server

AKS yang diaktifkan oleh Azure Arc menggunakan kombinasi autentikasi berbasis sertifikat dan token untuk mengamankan komunikasi antara layanan (atau agen) yang bertanggung jawab atas berbagai operasi dalam platform. Autentikasi berbasis sertifikat menggunakan sertifikat digital untuk mengidentifikasi entitas (agen, mesin, pengguna, atau perangkat) sebelum memberikan akses ke sumber daya.

Agen cloud

Saat Anda menyebarkan AKS yang diaktifkan oleh Arc, AKS menginstal agen yang digunakan untuk melakukan berbagai fungsi dalam kluster. Agen ini meliputi:

  • Agen cloud: layanan yang bertanggung jawab atas orkestrasi platform dasar.
  • Agen node: layanan yang berada di setiap node dan melakukan pekerjaan pembuatan komputer virtual, penghapusan, dll. secara aktual.
  • Pod Sistem Manajemen Kunci (Key Management System/KMS): layanan yang bertanggung jawab atas manajemen kunci.
  • Layanan lain: operator cloud, manajer sertifikat, dll.

Layanan agen cloud di AKS bertanggung jawab untuk mengatur operasi buat, baca, perbarui, dan hapus (CRUD) komponen infrastruktur seperti Virtual Machines (VM), antarmuka Virtual Network (VNIC), dan Virtual Network (VNET) dalam kluster.

Komunikasi dengan agen cloud mengharuskan klien menyediakan sertifikat untuk mengamankan komunikasi ini. Setiap klien memerlukan identitas untuk dikaitkan dengannya. Identitas ini menentukan aturan Kontrol Akses Berbasis Peran (Role Based Access Control/RBAC) yang terkait dengan klien. Setiap identitas terdiri dari dua entitas:

  • Token, yang digunakan untuk autentikasi awal, akan menghasilkan sertifikat.
  • Sertifikat, yang diperoleh dari proses masuk di atas, akan digunakan untuk mengautentikasi semua komunikasi.

Setiap entitas memiliki masa berlaku yang standarnya adalah 90 hari. Setelah itu, entitas akan berhenti berlaku. Setiap klien harus memperpanjang sertifikat dan merotasi token apabila ingin tetap mengakses agen cloud.

Jenis sertifikat

Ada dua jenis sertifikat yang digunakan dalam AKS yang diaktifkan oleh Arc:

  • Sertifikat CA agen cloud: sertifikat yang digunakan untuk menandatangani/memvalidasi sertifikat klien. Sertifikat ini berlaku selama 365 hari (1 tahun).
  • Sertifikat klien: sertifikat yang dikeluarkan oleh sertifikat CA agen cloud bagi klien untuk mengautentikasi akses ke agen cloud. Sertifikat ini biasanya berlaku selama 90 hari.

Microsoft menyarankan agar Anda memperbarui kluster dalam waktu 60 hari setelah rilis baru tersedia. Alasannya, selain memastikan sertifikat dan token internal tetap terbaru, pembaruan tersebut juga memastikan Anda dapat menikmati fitur baru, perbaikan bug, serta patch keamanan penting terbaru. Pembaruan bulanan ini akan merotasi token yang tidak dapat dirotasi secara otomatis saat operasi normal kluster. Masa berlaku sertifikat dan token akan diatur ulang menjadi 90 hari sejak tanggal kluster diperbarui.

Komunikasi yang aman dengan sertifikat di AKS diaktifkan oleh Arc

Sertifikat merupakan sarana untuk membangun komunikasi yang aman antar komponen dalam kluster. AKS menyediakan provisi zero-touch, out-of-the-box, dan manajemen sertifikat untuk komponen Kubernetes bawaan. Dalam artikel ini, Anda akan mempelajari cara memprovisikan dan mengelola sertifikat di AKS yang diaktifkan oleh Arc.

Sertifikat dan OS

AKS menghasilkan dan menggunakan Otoritas Sertifikat (CA) dan sertifikat berikut.

CA Kluster

  • Server API memiliki OS Kluster, yang menandatangani sertifikat untuk komunikasi satu arah dari server API ke kubelet.
  • Masing-masing kubelet juga membuat Permintaan Penandatanganan Sertifikat (CSR), yang ditandatangani oleh CA Kluster, untuk komunikasi dari kubelet ke server API.
  • Penyimpanan nilai kunci etcd memiliki sertifikat yang ditandatangani oleh OS Kluster untuk komunikasi dari etcd ke server API.

etcd CA

Penyimpanan nilai kunci etcd memiliki OS etcd yang menandatangani sertifikat untuk mengautentikasi dan mengotorisasi replikasi data antar-replika etcd di kluster.

OS Proksi Depan

OS Proksi Depan mengamankan komunikasi antara server API dan server API ekstensi.

Penyediaan sertifikat

Penyediaan sertifikat untuk kubelet dilakukan menggunakan bootstrapping TLS. Untuk semua sertifikat lainnya, gunakan pembuatan kunci dan sertifikat berbasis YAML.

  • Sertifikat disimpan dalam /etc/kubernetes/pki.
  • Kuncinya adalah RSA 4096, EcdsaCurve: P384

Catatan

Sertifikat akar valid selama 10 tahun. Semua sertifikat non-akar lainnya berumur pendek dan berlaku selama empat hari.

Perpanjangan dan manajemen sertifikat

Sertifikat non-akar diperbarui secara otomatis. Semua sertifikat sarana kontrol untuk Kubernetes kecuali sertifikat berikut dikelola:

  • Sertifikat server Kubelet
  • Sertifikat klien Kubeconfig

Sebagai praktik terbaik keamanan, Anda harus menggunakan akses menyeluruh Active Directory untuk autentikasi pengguna.

Pencabutan sertifikat

Pencabutan sertifikat harus jarang terjadi, dan harus dilakukan pada saat perpanjangan sertifikat.

Setelah Anda memiliki nomor seri sertifikat yang ingin dicabut, gunakan Kubernetes Custom Resource untuk menentukan dan menyimpan informasi pencabutan. Setiap objek pencabutan dapat terdiri dari satu atau lebih entri pencabutan.

Untuk melakukan pencabutan, gunakan salah satu hal berikut:

  • Nomor seri
  • Grup
  • Nama DNS
  • Alamat IP

Waktu notBefore dapat ditentukan untuk mencabut hanya sertifikat yang dikeluarkan sebelum tanda waktu tertentu. notBefore Jika waktu tidak ditentukan, semua sertifikat yang ada dan yang akan datang yang cocok dengan pencabutan akan dicabut.

Catatan

Pencabutan kubelet sertifikat server saat ini tidak tersedia.

Jika Anda menggunakan nomor seri saat melakukan pencabutan, Anda dapat menggunakan Repair-AksHciClusterCerts perintah PowerShell, yang dijelaskan di bawah ini, untuk membuat kluster Anda dalam keadaan berfungsi. Jika Anda menggunakan salah satu bidang lain yang tercantum sebelumnya, pastikan untuk menentukan notBefore waktu.

apiVersion: certificates.microsoft.com/v1 
kind: RenewRevocation 
metadata: 
  name: my-renew-revocation 
  namespace: kube-system 
spec: 
  description: My list of renew revocations 
  revocations: 
  - description: Revoked certificates by serial number 
    kind: serialnumber 
    notBefore: "2020-04-17T17:22:05Z" 
    serialNumber: 77fdf4b1033b387aaace6ce1c18710c2 
  - description: Revoked certificates by group 
    group: system:nodes 
    kind: Group 
  - description: Revoked certificates by DNS 
    dns: kubernetes.default.svc. 
    kind: DNS 
  - description: Revoked certificates by DNS Suffix 
    dns: .cluster.local 
    kind: DNS 
  - description: Revoked certificates by IP 
    ip: 170.63.128.124 
    kind: IP 

Langkah berikutnya