Memahami Azure Policy untuk kluster Kubernetes

Azure Policy memperluas Gatekeeper v3, webhook pengontrol penerimaan untuk Open Policy Agent (OPA), guna menerapkan penegakan dan perlindungan skala besar pada kluster Anda secara terpusat dan konsisten. Azure Policy memungkinkan mengelola dan melaporkan status kepatuhan kluster Kubernetes dari satu tempat. Add-on memberlakukan fungsi berikut ini:

  • Memeriksa dengan layanan Azure Policy untuk penetapan kebijakan ke kluster.
  • Menyebar definisi kebijakan ke dalam kluster sebagai sumber daya templat batasan dan batasankustom.
  • Melaporkan detail audit dan kepatuhan kembali ke layanan Azure Policy.

Azure Policy untuk Kubernetes mendukung lingkungan kluster berikut:

Penting

Model Helm Add-on Azure Policy dan add-on untuk AKS Engine sudah tidak digunakan lagi. Petunjuk dapat ditemukan di bawah ini untuk penghapusan add-on tersebut.

Gambaran Umum

Untuk mengaktifkan dan menggunakan Azure Policy dengan kluster Kubernetes, ambil tindakan berikut ini:

  1. Konfigurasikan kluster Kubernetes Anda dan instal add-on Azure Kubernetes Service (AKS)

    Catatan

    Untuk masalah umum dengan instalasi, lihat Memecahkan Masalah - Add-on Azure Policy.

  2. Memahami bahasa Azure Policy untuk Kubernetes

  3. Tetapkan definisi ke kluster Kubernetes

  4. Tunggu validasi

Batasan

Pembatasan umum berikut berlaku untuk Add-on Azure Policy untuk kluster Kubernetes:

  • Add-on Azure Policy untuk Kubernetes didukung pada Kubernetes versi 1.14 atau yang lebih tinggi.
  • Add-on Azure Policy untuk Kubernetes hanya dapat disebarkan ke kumpulan simpul Linux.
  • Hanya definisi kebijakan bawaan yang didukung. Definisi kebijakan kustom adalah fitur pratinjau publik.
  • Jumlah pod maksimum yang didukung oleh Add-on Azure Policy: 10.000
  • Jumlah maksimum catatan yang tidak sesuai per kebijakan per kluster: 500
  • Jumlah maksimum catatan yang tidak sesuai per langganan: 1 juta
  • Instalasi Gatekeeper di luar Add-on Azure Policy tidak didukung. Hapus instalasi komponen apa pun yang diinstal oleh instalasi Gatekeeper sebelum mengaktifkan Add-on Azure Policy.
  • Alasan ketidakpatuhan tidak tersedia untuk mode Microsoft.Kubernetes.DataPenyedia Sumber Daya. Gunakan Detail komponen.
  • Pengecualian tingkat komponen tidak didukung untuk mode Penyedia Sumber Daya.

Batasan berikut ini hanya berlaku untuk Add-on Azure Policy untuk AKS:

  • Kebijakan keamanan AKS Pod dan Add-on Azure Policy untuk AKS tidak dapat diaktifkan bersamaan. Untuk informasi lebih lanjut, lihat batasan keamanan AKS pod.
  • Namespaces secara otomatis dikecualikan oleh Add-on Azure Policy untuk evaluasi: kube-system, gatekeeper-system, dan aks-periscope.

Rekomendasi

Berikut ini adalah rekomendasi umum untuk menggunakan Add-on Azure Policy:

  • Add-on Azure Policy mengharuskan tiga komponen Gatekeeper dijalankan: Satu pod audit dan dua replika pod webhook. Komponen-komponen ini mengonsumsi lebih banyak sumber daya karena jumlah sumber daya dan penugasan kebijakan Kubernetes meningkat dalam kluster, yang memerlukan operasi audit dan penegakan.

    • Untuk kurang dari 500 Pod dalam satu kluster dengan maksimal 20 batasan: dua vCPU dan memori 350 MB per komponen.
    • Untuk kurang dari 500 Pod dalam satu kluster dengan maksimal 40 batasan: tiga vCPU dan memori 600 MB per komponen.
  • Pod Windows tidak mendukung konteks keamanan. Dengan demikian, beberapa definisi Azure Policy, seperti melarang hak root, tidak dapat diskalakan di pod Windows dan hanya berlaku untuk pod Linux.

Rekomendasi berikut ini hanya berlaku untuk AKS dan Add-on Azure Policy:

  • Gunakan kumpulan node sistem dengan taint CriticalAddonsOnly untuk menjadwalkan pod Gatekeeper. Untuk informasi selengkapnya, lihat Menggunakan kumpulan node sistem.
  • Amankan lalu lintas keluar dari kluster AKS Anda. Untuk informasi selengkapnya, lihat Mengontrol lalu lintas keluar untuk node kluster.
  • Jika kluster telah aad-pod-identity diaktifkan, Identitas yang Dikelola Simpul (Node-Managed Identity/NMI) memodifikasi simpul iptables untuk mencegat panggilan ke titik akhir Metadata Instans Azure. Konfigurasi ini berarti setiap permintaan yang dibuat pada titik akhir Metadata disadap oleh NMI meskipun pod tidak menggunakan aad-pod-identity. AzurePodIdentityException CRD dapat dikonfigurasi untuk memberi tahu aad-pod-identity bahwa setiap permintaan ke titik akhir Metadata yang berasal dari pod yang cocok dengan label yang ditentukan dalam CRD harus diproksikan tanpa pemrosesan apa pun di NMI. Pod sistem dengan label kubernetes.azure.com/managedby: aks dalam namespace layanan kube-system harus dikecualikan dalam aad-pod-identity dengan mengonfigurasi AzurePodIdentityException CRD. Untuk informasi lebih lanjut, lihat Menonaktifkan aad-pod-identity untuk pod atau aplikasi tertentu. Untuk mengonfigurasi pengecualian, instal YAML pengecualian mikrofon.

Menginstal Add-on Azure Policy untuk AKS

Sebelum menginstal Add-on Azure Policy atau mengaktifkan fitur layanan apa pun, langganan Anda harus mengaktifkan penyedia sumber daya Microsoft.PolicyInsights.

  1. Anda memerlukan Azure CLI versi 2.12.0 atau yang lebih baru terinstal dan terkonfigurasi. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, Pasang Azure CLI.

  2. Daftarkan penyedia sumber daya dan fitur pratinjau.

    • portal Microsoft Azure:

      Daftarkan penyedia sumber daya Microsoft.PolicyInsights. Untuk langkah-langkah, lihat Penyedia dan jenis.

    • Azure CLI:

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace Microsoft.PolicyInsights
      
  3. Jika definisi kebijakan pratinjau terbatas diinstal, hapus add-on dengan tombol Nonaktifkan pada kluster AKS Anda di bawah halaman Kebijakan.

  4. Kluster AKS harus versi 1.14 atau lebih tinggi. Gunakan skrip berikut untuk memvalidasi versi kluster AKS Anda:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  5. Instal Azure CLI versi 2.12.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat Pasang CLI Azure.

Setelah langkah-langkah prasyarat di atas selesai, instal Add-on Azure Policy di kluster AKS yang ingin Anda kelola.

  • Portal Azure

    1. Luncurkan layanan AKS di portal Azure dengan memilih Semua layanan, lalu cari dan pilih layanan Kubernetes.

    2. Pilih salah satu kluster AKS Anda.

    3. Pilih Kebijakan di sisi kiri halaman layanan Kubernetes.

    4. Di halaman utama, pilih tombol Aktifkan add-on.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks enable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Untuk memvalidasi bahwa instalasi add-on berhasil dan bahwa pod azure-policy dan gatekeeper berjalan, jalankan perintah berikut:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Terakhir, verifikasi bahwa add-on terbaru diinstal dengan menjalankan perintah Azure CLI ini, dengan mengganti <rg> dengan nama grup sumber daya Anda dan <cluster-name> dengan nama kluster AKS Anda: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. Hasilnya akan terlihat mirip dengan output berikut ini:

{
        "config": null,
        "enabled": true,
        "identity": null
}

Menginstal Ekstensi Azure Policy untuk Kubernetes dengan dukungan Azure Arc

Azure Policy untuk Kube memungkinkan pengelolaan dan pelaporan status kepatuhan kluster Kubernetes dari satu tempat.

Artikel ini menjelaskan cara untuk membuat, menampilkan status ekstensi, dan menghapus Azure Policy untuk ekstensi Kubernetes.

Untuk gambaran umum platform ekstensi, lihat ekstensi kluster Azure Arc.

Prasyarat

Catatan: Jika Anda telah menyebarkan Azure Policy untuk Kubernetes pada kluster Azure Arc menggunakan Helm secara langsung tanpa ekstensi, ikuti instruksi yang tercantum untuk menghapus bagan Helm. Setelah penghapusan selesai, Anda kemudian dapat melanjutkannya.

  1. Pastikan klaster Kubernetes Anda adalah distribusi yang didukung.

    Catatan: Azure Policy untuk ekstensi Arc didukung pada distribusi Kube berikut.

  2. Pastikan Anda telah memenuhi semua prasyarat umum untuk ekstensi Kube yang tercantum di sini termasuk menghubungkan kluster Anda ke Azure Arc.

    Catatan: Ekstensi Azure Policy didukung untuk kluster Kubernetes dengan Arc aktif di wilayah ini.

  3. Buka port untuk ekstensi Azure Policy. Ekstensi Azure Policy menggunakan domain dan port ini untuk mengambil definisi kebijakan dan penugasan serta melaporkan kepatuhan kluster kembali ke Azure Policy.

    Domain Port
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. Sebelum menginstal ekstensi Azure Policy atau mengaktifkan fitur layanan apa pun, langganan Anda harus mengaktifkan penyedia sumber Microsoft.PolicyInsights.

    Catatan: Untuk mengaktifkan penyedia sumber, ikuti langkah-langkah di Penyedia dan jenis sumber atau jalankan perintah Azure CLI atau Azure PowerShell:

    • Azure CLI

      # Log in first with az login if you're not using Cloud Shell
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      

Buat ekstensi Azure Policy

Perhatikan hal-hal berikut untuk pembuatan ekstensi Azure Policy:

  • Peningkatan otomatis diaktifkan secara default yang akan memperbarui versi kecil ekstensi Azure Policy jika ada perubahan baru yang diterapkan.
  • Setiap variabel proksi yang disahkan sebagai parameter connectedk8s akan disebarkan ke ekstensi Azure Policy untuk mendukung proksi keluar.

Agar dapat membuat instans ekstensi, untuk kluster dengan Arc aktif, jalankan perintah berikut dengan mengganti <> dengan nilai Anda:

az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>

Contoh:

az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy

Contoh Output:

{
  "aksAssignedIdentity": null,
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": {},
  "configurationSettings": {},
  "customLocationSettings": null,
  "errorInfo": null,
  "extensionType": "microsoft.policyinsights",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-test-rg/providers/Microsoft.Kubernetes/connectedClusters/my-test-cluster/providers/Microsoft.KubernetesConfiguration/extensions/azurepolicy",
 "identity": {
    "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tenantId": null,
    "type": "SystemAssigned"
  },
  "location": null,
  "name": "azurepolicy",
  "packageUri": null,
  "provisioningState": "Succeeded",
  "releaseTrain": "Stable",
  "resourceGroup": "my-test-rg",
  "scope": {
    "cluster": {
      "releaseNamespace": "kube-system"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": {
    "createdAt": "2021-10-27T01:20:06.834236+00:00",
    "createdBy": null,
    "createdByType": null,
    "lastModifiedAt": "2021-10-27T01:20:06.834236+00:00",
    "lastModifiedBy": null,
    "lastModifiedByType": null
  },
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "1.1.0"
}

Tampilkan ekstensi Azure Policy

Untuk memastikan pembuatan instans ekstensi berhasil, dan memeriksa metadata ekstensi, jalankan perintah berikut dengan menggantikan <> dengan nilai Anda:

az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Contoh:

az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy

Untuk memvalidasi bahwa pemasangan ekstensi berhasil dan pod Azure-policy dan gatekeeper berjalan, jalankan perintah berikut:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Hapus ekstensi Azure Policy

Untuk menghapus instans ekstensi, jalankan perintah berikut dengan mengganti <> dengan nilai Anda:

az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Bahasa kebijakan

Struktur bahasa Azure Policy untuk mengelola Kubernetes mengikuti definisi kebijakan yang ada. Dengan mode Penyedia Sumber Daya dari Microsoft.Kubernetes.Data, audit efek dan tolak digunakan untuk mengelola kluster Kubernetes. Audit dan tolak harus menyediakan properti detail khusus untuk bekerja dengan Kerangka Kerja Batasan OPA dan Gatekeeper v3.

Sebagai bagian dari properti details.templateInfo, details.constraint, atau details.constraintTemplate dalam definisi kebijakan, Azure Policy akan meneruskan URI atau nilai Base64Encoded CustomResourceDefinitions (CRD) ini ke add-on. Rego adalah bahasa yang didukung OPA dan Gatekeeper untuk memvalidasi permintaan ke kluster Kubernetes. Dengan mendukung standar yang ada untuk manajemen Kubernetes, Azure Policy memungkinkan untuk menggunakan kembali aturan yang ada dan memasangkannya dengan Azure Policy untuk pengalaman pelaporan kepatuhan cloud terpadu. Untuk informasi selengkapnya, lihat Apa itu Rego?.

Menetapkan definisi kebijakan

Untuk menetapkan definisi kebijakan ke kluster Kubernetes, Anda harus diberi operasi penetapan kebijakan kontrol akses berbasis peran Azure (Azure RBAC) yang sesuai. Peran bawaan Azure Kontributor Kebijakan Sumber Daya dan Pemilik memiliki operasi ini. Untuk mempelajari selengkapnya, lihat Izin Azure RBAC di Azure Policy.

Temukan definisi kebijakan bawaan untuk mengelola kluster Anda menggunakan portal Microsoft Azure dengan langkah-langkah berikut. Jika menggunakan definisi kebijakan kustom, cari berdasarkan nama atau kategori yang Anda buat.

  1. Mulai layanan Azure Policy di portal Azure. Pilih Semua layanan di panel kiri lalu cari dan pilih Kebijakan.

  2. Di panel kiri halaman Azure Policy, pilih Definisi.

  3. Dari kotak daftar dropdown Kategori, gunakan Pilih semua untuk menghapus filter, lalu pilih Kubernetes.

  4. Pilih definisi kebijakan, lalu pilih tombol Tetapkan.

  5. Atur Cakupan ke grup manajemen, langganan, atau grup sumber daya dari kluster Kubernetes tempat penetapan kebijakan akan berlaku.

    Catatan

    Ketika menetapkan Azure Policy untuk definisi Kubernetes, Cakupan harus menyertakan sumber daya kluster.

  6. Berikan penetapan kebijakan Nama dan Deskripsi yang dapat Anda gunakan untuk mengidentifikasinya dengan mudah.

  7. Tetapkan Penegakan kebijakan ke salah satu nilai di bawah ini.

    • Diaktifkan - Tegakkan kebijakan pada kluster. Permintaan penerimaan Kubernetes dengan pelanggaran ditolak.

    • Dinonaktifkan - Jangan tegakkan kebijakan pada kluster. Permintaan penerimaan Kubernetes dengan pelanggaran tidak ditolak. Hasil penilaian kepatuhan masih tersedia. Saat meluncurkan definisi kebijakan baru untuk menjalankan kluster, opsi Dinonaktifkan sangat membantu untuk menguji definisi kebijakan karena permintaan penerimaan dengan pelanggaran tidak ditolak.

  8. Pilih Selanjutnya.

  9. Menetapkan nilai parameter

    • Untuk mengecualikan namespace Kubernetes dari evaluasi kebijakan, tentukan daftar namespace dalam parameter Namespace exclusions. Disarankan untuk mengecualikan: kube-system, gatekeeper-system, dan azure-arc.
  10. Pilih Tinjau + buat.

Secara bergantian, gunakan mulai cepat Tetapkan kebijakan - Portal untuk menemukan dan menetapkan kebijakan Kubernetes. Cari definisi kebijakan Kubernetes, bukan contoh 'audit vms'.

Penting

Definisi kebijakan bawaan tersedia untuk kluster Kubernetes dalam kategori Kubernetes. Untuk daftar definisi kebijakan bawaan, lihat sampel Kubernetes.

Evaluasi kebijakan

Add-on memeriksa dengan layanan Azure Policy untuk perubahan dalam penetapan kebijakan setiap 15 menit. Selama siklus refresh ini, add-on memeriksa perubahan. Perubahan ini memicu membuat, memperbarui, atau menghapus templat dan batasan.

Dalam cluster Kubernetes, jika namespace memiliki label yang sesuai dengan cluster, permintaan masuk dengan pelanggaran tidak akan ditolak. Hasil penilaian kepatuhan masih tersedia.

  • Kluster Kubernetes yang mendukung Azure Arc: admission.policy.azure.com/ignore
  • Kluster Layanan Azure Kubernetes: control-plane

Catatan

Meskipun admin kluster mungkin memiliki izin untuk membuat dan memperbarui templat batasan dan batasan sumber daya yang diinstal oleh Add-on Azure Policy, ini tidak didukung skenario karena pembaruan manual ditimpa. Gatekeeper terus mengevaluasi kebijakan yang ada sebelum menginstal add-on dan menetapkan definisi kebijakan Azure Policy.

Setiap 15 menit, add-on memanggil pemindaian penuh kluster. Setelah mengumpulkan detail pemindaian penuh dan evaluasi real-time oleh Gatekeeper tentang perubahan yang dicoba pada kluster, add-on melaporkan hasilnya kembali ke Azure Policy untuk dimasukkan dalam detail kepatuhan seperti penugasan Azure Policy apa pun. Hanya hasil untuk penetapan kebijakan aktif yang dikembalikan selama siklus audit. Hasil audit juga dapat dilihat sebagai pelanggaran yang tercantum dalam bidang status dari kendala yang gagal. Untuk detail tentang sumber daya yang tidak sesuai, lihat Detail komponen untuk mode Penyedia Sumber Daya.

Catatan

Setiap laporan kepatuhan dalam Azure Policy untuk kluster Kubernetes mencakup semua pelanggaran dalam 45 menit terakhir. Tanda waktu menunjukkan kapan pelanggaran terjadi.

Beberapa pertimbangan lain:

  • Jika langganan kluster terdaftar di Microsoft Defender untuk Cloud, kebijakan Microsoft Defender untuk Cloud Kubernetes diterapkan pada kluster secara otomatis.

  • Ketika kebijakan tolak diterapkan pada kluster dengan sumber daya Kubernetes yang ada, sumber daya apa pun yang sudah ada sebelumnya yang tidak sesuai dengan kebijakan baru terus berjalan. Ketika sumber daya yang tidak patuh akan dijadwal ulang pada node yang berbeda, Gatekeeper memblokir pembuatan sumber daya.

  • Ketika kluster memiliki kebijakan penolakan yang memvalidasi sumber daya, pengguna tidak akan melihat pesan penolakan saat membuat penyebaran. Misalnya, pertimbangkan penyebaran Kubernetes yang berisi replicaset dan pod. Saat mengeksekusi kubectl describe deployment $MY_DEPLOYMENT, pengguna tidak mengembalikan pesan penolakan sebagai bagian dari peristiwa. Namun, kubectl describe replicasets.apps $MY_DEPLOYMENT mengembalikan peristiwa yang terkait dengan penolakan.

Catatan

Kontainer init dapat disertakan selama evaluasi kebijakan. Untuk melihat apakah kontainer init disertakan, tinjau CRD untuk deklarasi berikut atau serupa:

input_containers[c] {
   c := input.review.object.spec.initContainers[_]
}

Konflik templat batasan

Jika templat batasan memiliki nama metadata sumber daya yang sama, tetapi definisi kebijakan merujuk sumber di lokasi yang berbeda, definisi kebijakan dianggap bertentangan. Contoh: Dua definisi kebijakan merujuk file template.yaml yang sama yang disimpan di lokasi sumber yang berbeda seperti penyimpanan templat Azure Policy (store.policy.core.windows.net) dan GitHub.

Jika definisi kebijakan dan templat batasannya ditetapkan tetapi belum diinstal pada kluster dan bertentangan, mereka dilaporkan sebagai konflik dan tidak akan diinstal ke dalam kluster sampai konflik diselesaikan. Demikian juga, setiap definisi kebijakan yang ada dan templat batasan kendala mereka yang sudah ada di kluster yang bertentangan dengan definisi kebijakan yang baru ditetapkan terus berfungsi secara normal. Jika tugas yang ada diperbarui dan ada kegagalan untuk menyinkronkan templat batasan, kluster juga ditandai sebagai konflik. Untuk semua pesan konflik, lihat alasan kepatuhan mode Penyedia Sumber AKS

Pencatatan

Sebagai controller/container Kubernetes, pod azure-policy maupun dan gatekeeper menyimpan log di kluster Kubernetes. Log dapat diekspos di halaman Insights dari kluster Kubernetes. Untuk informasi lebih lanjut, lihat Memantau kinerja kluster Kubernetes dengan Azure Monitor untuk kontainer.

Untuk melihat log add-on, gunakan kubectl:

# Get the azure-policy pod name installed in kube-system namespace
kubectl logs <azure-policy pod name> -n kube-system

# Get the gatekeeper pod name installed in gatekeeper-system namespace
kubectl logs <gatekeeper pod name> -n gatekeeper-system

Untuk informasi selengkapnya, lihat Debugging Gatekeeper di dokumentasi Gatekeeper.

Lihat artefak Gatekeeper

Setelah add-on mengunduh penugasan kebijakan dan menginstal templat batasan dan batasan pada kluster, itu akan menganotasi informasi Azure Policy seperti ID penugasan kebijakan dan ID definisi kebijakan. Untuk mengonfigurasikan klien Anda untuk menampilkan artefak terkait add-on, gunakan langkah-langkah berikut:

  1. Siapkan kubeconfig untuk kluster.

    Untuk kluter Azure Kubernetes Service, gunakan Azure CLI berikut:

    # Set context to the subscription
    az account set --subscription <YOUR-SUBSCRIPTION>
    
    # Save credentials for kubeconfig into .kube in your home folder
    az aks get-credentials --resource-group <RESOURCE-GROUP> --name <CLUSTER-NAME>
    
  2. Tes koneksi kluster.

    Jalankan perintah kubectl cluster-info. Eksekusi yang sukses memiliki setiap layanan yang sesuai dengan URL tempatnya berjalan.

Menampilkan templat batasan add-on

Untuk melihat templat batasan yang diunduh oleh add-on, jalankan kubectl get constrainttemplates. Batasan templat yang diawali dengan k8sazure adalah yang diinstal oleh add-on.

Dapatkan pemetaan Azure Policy

Untuk mengidentifikasi pemetaan antara templat batasan yang diunduh ke kluster dan definisi kebijakan, gunakan kubectl get constrainttemplates <TEMPLATE> -o yaml. Hasilnya tampak mirip dengan output berikut:

apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
    annotations:
    azure-policy-definition-id: /subscriptions/<SUBID>/providers/Microsoft.Authorization/policyDefinitions/<GUID>
    constraint-template-installed-by: azure-policy-addon
    constraint-template: <URL-OF-YAML>
    creationTimestamp: "2021-09-01T13:20:55Z"
    generation: 1
    managedFields:
    - apiVersion: templates.gatekeeper.sh/v1beta1
    fieldsType: FieldsV1
...

<SUBID> adalah ID langganan dan <GUID> adalah ID dari definisi kebijakan yang dipetakan. <URL-OF-YAML> adalah lokasi sumber dari templat batasan diunduh add-on untuk diinstal pada kluster.

Setelah Anda memiliki nama templat batasan yang diunduh add-on, Anda dapat menggunakan nama untuk melihat batasan terkait. Gunakan kubectl get <constraintTemplateName> untuk mendapatkan daftar. Batasan yang dipasang oleh add-on diawali dengan azurepolicy-.

Melihat detail batasan

Batasan memiliki detail mengenai pelanggaran dan pemetaan untuk definisi dan penugasan kebijakan. Untuk melihat detailnya, gunakan kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml. Hasilnya tampak mirip dengan output berikut:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAzureContainerAllowedImages
metadata:
  annotations:
    azure-policy-assignment-id: /subscriptions/<SUB-ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Authorization/policyAssignments/<ASSIGNMENT-GUID>
    azure-policy-definition-id: /providers/Microsoft.Authorization/policyDefinitions/<DEFINITION-GUID>
    azure-policy-definition-reference-id: ""
    azure-policy-setdefinition-id: ""
    constraint-installed-by: azure-policy-addon
    constraint-url: <URL-OF-YAML>
  creationTimestamp: "2021-09-01T13:20:55Z"
spec:
  enforcementAction: deny
  match:
    excludedNamespaces:
    - kube-system
    - gatekeeper-system
    - azure-arc
  parameters:
    imageRegex: ^.+azurecr.io/.+$
status:
  auditTimestamp: "2021-09-01T13:48:16Z"
  totalViolations: 32
  violations:
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hello-world-78f7bfd5b8-lmc5b
    namespace: default
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hellow-world-89f8bfd6b9-zkggg

Pemecahan masalah add-on

Untuk informasi lebih lanjut tentang pemecahan masalah Add-on untuk Kubernetes, lihat bagian Kubernetes pada artikel pemecahan masalah Azure Policy.

Untuk masalah terkait ekstensi Azure Policy untuk ekstensi Arc, silakan lihat:

Untuk masalah terkait Azure Policy, silakan lihat:

Menghapus add-on

Menghapus add-on dari AKS

Untuk menghapus Add-on Azure Policy dari kluster AKS Anda, gunakan portal Azure atau Azure CLI:

  • Portal Azure

    1. Luncurkan layanan AKS di portal Azure dengan memilih Semua layanan, lalu cari dan pilih layanan Kubernetes.

    2. Pilih kluster AKS tempat Anda ingin menonaktifkan Add-on Azure Policy.

    3. Pilih Kebijakan di sisi kiri halaman layanan Kubernetes.

    4. Di halaman utama, pilih tombol Nonaktifkan add-on.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks disable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Menghapus add-on dari Kubernetes dengan dukungan Azure Arc

Catatan

Azure Policy model Helm Add-on sekarang tidak digunakan lagi. Silakan pilih Ekstensi Azure Policy untuk Kube dengan Azure Arc aktif sebagai gantinya.

Untuk menghapus Add-on Azure Policy dan Gatekeeper dari kluster Kubernetes dengan dukungan Azure Arc, jalankan perintah Helm berikut:

helm uninstall azure-policy-addon

Menghapus add-on dari Mesin AKS

Catatan

Produk Mesin AKS sekarang tidak digunakan lagi untuk pelanggan cloud publik Azure. Harap pertimbangkan untuk menggunakan Azure Kubernetes Service (AKS) untuk Kubernetes terkelola atau Penyedia API Kluster Azure untuk Kubernetes yang dikelola sendiri. Tidak ada fitur baru yang direncanakan; proyek ini hanya akan diperbarui untuk CVE & yang serupa, dengan Kubernetes 1.24 sebagai versi akhir untuk menerima pembaruan.

Untuk menghapus Add-on Azure Policy dan Gatekeeper dari kluster Mesin AKS Anda, gunakan metode yang selaras dengan cara add-on diinstal:

  • Jika diinstal dengan mengatur properti addons dalam definisi kluster untuk Mesin AKS:

    Sebar ulang definisi kluster ke Mesin AKS setelah mengubah properti addons untuk azure-policy ke false:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    

    Untuk informasi selengkapnya, lihat Mesin AKS - Nonaktifkan Add-on Azure Policy.

  • Jika diinstal dengan Helm Charts, jalankan perintah Helm berikut:

    helm uninstall azure-policy-addon
    

Data diagnostik yang dikumpulkan oleh Add-on Azure Policy

Add-on Azure Policy untuk Kubernetes mengumpulkan data diagnostik kluster terbatas. Data diagnostik ini adalah data teknis penting yang terkait dengan perangkat lunak dan kinerja. Ini dapat digunakan dengan cara-cara berikut:

  • Selalu pertahankan Add-on Azure Policy tetap terbarui
  • Menjaga Add-on Azure Policy tetap aman, andal, dan berkinerja
  • Meningkatkan Add-on Azure Policy - melalui analisis agregat penggunaan add-on

Informasi yang dikumpulkan oleh add-on bukanlah data pribadi. Rincian berikut saat ini dikumpulkan:

  • Versi agen Add-on Azure Policy
  • Jenis kluster
  • Wilayah kluster
  • Grup sumber daya kluster
  • ID sumber daya kluster
  • ID langganan kluster
  • OS Kluster (Contoh: Linux)
  • Kota kluster (Contoh: Jakarta)
  • Negara bagian atau provinsi kluster (Contoh: DKI Jakarta)
  • Negara atau kawasan kluster (Contoh: Amerika Serikat)
  • Pengecualian/kesalahan yang ditemui oleh Add-on Azure Policy selama instalasi agen pada evaluasi kebijakan
  • Jumlah definisi kebijakan Gatekeeper yang tidak diinstal oleh Add-on Azure Policy

Langkah berikutnya