Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Kubernetes Service (AKS) dan model kontainer yang mendasarnya memberikan peningkatan skalabilitas dan pengelolaan untuk aplikasi asli cloud. Dengan AKS, Anda dapat meluncurkan aplikasi perangkat lunak fleksibel sesuai dengan kebutuhan runtime sistem Anda. Namun, fleksibilitas ini dapat memperkenalkan tantangan baru.
Di lingkungan aplikasi ini, menggunakan gambar kontainer yang ditandatangani membantu memverifikasi bahwa penyebaran Anda dibangun dari entitas tepercaya dan gambar tersebut belum dirusak sejak pembuatannya. Integritas Gambar adalah layanan yang memungkinkan Anda menambahkan definisi bawaan Azure Policy untuk memverifikasi bahwa hanya gambar yang ditandatangani yang disebarkan ke kluster AKS Anda.
Nota
Integritas Gambar adalah fitur berdasarkan Ratify. Pada kluster AKS, nama fitur dan nama properti adalah ImageIntegrity, sementara nama Pod Integritas Gambar yang relevan berisi Ratify.
Penting
Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Pratinjau AKS sebagian didukung oleh dukungan pelanggan berdasarkan upaya terbaik yang dapat dilakukan. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:
Prasyarat
Sebuah langganan Azure. Jika Anda tidak memiliki langganan Azure, Anda dapat membuat akun gratis.
Azure CLI atau Azure PowerShell.
aks-previewEkstensi CLI versi 0.5.96 atau yang lebih baru.Pastikan add-on Azure Policy untuk AKS diaktifkan di kluster Anda. Jika Anda tidak menginstal add-on ini, lihat Menginstal add-on Azure Policy untuk AKS.
Kluster AKS yang diaktifkan dengan Issuer OIDC. Untuk membuat kluster baru atau memperbarui kluster yang ada, lihat Mengonfigurasi kluster AKS dengan Pengeluar Sertifikat OIDC.
Flag fitur
EnableImageIntegrityPreviewyang terdaftar pada langganan Azure Anda. Daftarkan bendera fitur menggunakan perintah berikut:Daftarkan flag fitur
EnableImageIntegrityPreviewmenggunakan perintahaz feature register.# Register the EnableImageIntegrityPreview feature flag az feature register --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview" It may take a few minutes for the status to show as *Registered*.Verifikasi status pendaftaran menggunakan
az feature showperintah .# Verify the EnableImageIntegrityPreview feature flag registration status az feature show --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview"Setelah status menunjukkan Terdaftar, perbarui pendaftaran penyedia sumber daya menggunakan perintah
Microsoft.ContainerService.az provider register --namespace Microsoft.ContainerService
Pertimbangan dan keterbatasan
- Kluster AKS Anda harus menjalankan Kubernetes versi 1.26 atau lebih tinggi.
- Anda sebaiknya tidak menggunakan fitur ini untuk registri produksi atau beban kerja pada Azure Container Registry (ACR).
- Integritas Gambar mendukung maksimal 200 tanda tangan unik secara bersamaan di seluruh kluster.
- Notasi adalah satu-satunya pemverifikasi yang didukung.
- Audit adalah satu-satunya efek kebijakan verifikasi yang didukung.
Cara kerja Integritas Gambar
Integritas Gambar menggunakan Ratify, Azure Policy, dan Gatekeeper untuk memvalidasi gambar yang ditandatangani sebelum menyebarkannya ke kluster AKS Anda. Mengaktifkan Integritas Gambar pada kluster Anda menyebarkan Ratify pod. Pod ini Ratify melakukan tugas-tugas berikut:
- Mendamaikan sertifikat dari Azure Key Vault sesuai konfigurasi yang Anda siapkan melalui
RatifyCRD. - Mengakses gambar yang disimpan di ACR saat permintaan validasi berasal dari Azure Policy. Untuk mengaktifkan pengalaman ini, Azure Policy memperluas kemampuan Gatekeeper, yang merupakan webhook pengontrol penerimaan untuk Open Policy Agent (OPA).
- Menentukan apakah gambar target ditandatangani dengan sertifikasi tepercaya dan karenanya dianggap tepercaya.
-
AzurePolicydanGatekeepergunakan hasil validasi sebagai status kepatuhan untuk memutuskan apakah akan mengizinkan permintaan penyebaran.
Mengaktifkan Integritas Gambar pada kluster AKS Anda
Nota
Verifikasi tanda tangan gambar adalah skenario berorientasi tata kelola dan memanfaatkan Azure Policy untuk memverifikasi tanda tangan gambar pada kluster AKS dalam skala besar. Sebaiknya gunakan inisiatif Azure Policy bawaan untuk Integritas Gambar AKS, yang tersedia di pustaka definisi bawaan Azure Policy.
Buat penetapan kebijakan dengan menggunakan inisiatif kebijakan AKS
[Preview]: Use Image Integrity to ensure only trusted images are deployedmenggunakan perintahaz policy assignment create.export SCOPE="/subscriptions/${SUBSCRIPTION}/resourceGroups/${RESOURCE_GROUP}" export LOCATION=$(az group show --name ${RESOURCE_GROUP} --query location -o tsv) az policy assignment create --name 'deploy-trustedimages' --policy-set-definition 'af28bf8b-c669-4dd3-9137-1e68fdc61bd6' --display-name 'Audit deployment with unsigned container images' --scope ${SCOPE} --mi-system-assigned --role Contributor --identity-scope ${SCOPE} --location ${LOCATION}Pod
Ratifydikerahkan setelah Anda mengaktifkan fitur.
Nota
Kebijakan ini menyebarkan fitur Integritas Gambar pada kluster Anda saat mendeteksi operasi pembaruan apa pun pada kluster. Jika Anda ingin segera mengaktifkan fitur ini, Anda perlu membuat penyelesaian kebijakan menggunakan perintah az policy remediation create.
assignment_id=$(az policy assignment show --name 'deploy-trustedimages' --scope ${SCOPE} --query id -o tsv)
az policy remediation create --policy-assignment "$assignment_id" --definition-reference-id deployAKSImageIntegrity --name remediation --resource-group ${RESOURCE_GROUP}
Menyiapkan konfigurasi verifikasi
Agar Integritas Gambar memverifikasi gambar yang ditandatangani target dengan benar, Anda perlu menyiapkan Ratify konfigurasi melalui CRD K8s menggunakan kubectl.
Dalam artikel ini, kami menggunakan sertifikasi CA yang ditandatangani sendiri dari dokumentasi resmi Ratify untuk menyiapkan konfigurasi verifikasi. Untuk contoh selengkapnya, lihat Meratifikasi CRD.
Buat
VerifyConfigfile bernamaverify-config.yamldan salin YAML berikut ini:apiVersion: config.ratify.deislabs.io/v1beta1 kind: KeyManagementProvider metadata: name: certstore-inline spec: provider: inline parameters: value: | -----BEGIN CERTIFICATE----- MIIDQzCCAiugAwIBAgIUDxHQ9JxxmnrLWTA5rAtIZCzY8mMwDQYJKoZIhvcNAQEL BQAwKTEPMA0GA1UECgwGUmF0aWZ5MRYwFAYDVQQDDA1SYXRpZnkgU2FtcGxlMB4X DTIzMDYyOTA1MjgzMloXDTMzMDYyNjA1MjgzMlowKTEPMA0GA1UECgwGUmF0aWZ5 MRYwFAYDVQQDDA1SYXRpZnkgU2FtcGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAshmsL2VM9ojhgTVUUuEsZro9jfI27VKZJ4naWSHJihmOki7IoZS8 3/3ATpkE1lGbduJ77M9UxQbEW1PnESB0bWtMQtjIbser3mFCn15yz4nBXiTIu/K4 FYv6HVdc6/cds3jgfEFNw/8RVMBUGNUiSEWa1lV1zDM2v/8GekUr6SNvMyqtY8oo ItwxfUvlhgMNlLgd96mVnnPVLmPkCmXFN9iBMhSce6sn6P9oDIB+pr1ZpE4F5bwa gRBg2tWN3Tz9H/z2a51Xbn7hCT5OLBRlkorHJl2HKKRoXz1hBgR8xOL+zRySH9Qo 3yx6WvluYDNfVbCREzKJf9fFiQeVe0EJOwIDAQABo2MwYTAdBgNVHQ4EFgQUKzci EKCDwPBn4I1YZ+sDdnxEir4wHwYDVR0jBBgwFoAUKzciEKCDwPBn4I1YZ+sDdnxE ir4wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAgQwDQYJKoZIhvcNAQEL BQADggEBAGh6duwc1MvV+PUYvIkDfgj158KtYX+bv4PmcV/aemQUoArqM1ECYFjt BlBVmTRJA0lijU5I0oZje80zW7P8M8pra0BM6x3cPnh/oZGrsuMizd4h5b5TnwuJ hRvKFFUVeHn9kORbyQwRQ5SpL8cRGyYp+T6ncEmo0jdIOM5dgfdhwHgb+i3TejcF 90sUs65zovUjv1wa11SqOdu12cCj/MYp+H8j2lpaLL2t0cbFJlBY6DNJgxr5qync cz8gbXrZmNbzC7W5QK5J7fcx6tlffOpt5cm427f9NiK2tira50HU7gC3HJkbiSTp Xw10iXXMZzSbQ0/Hj2BF4B40WfAkgRg= -----END CERTIFICATE----- --- apiVersion: config.ratify.deislabs.io/v1beta1 kind: Store metadata: name: store-oras spec: name: oras # If you want to you use Workload Identity for Ratify to access Azure Container Registry, # uncomment the following lines, and fill the proper ClientID: # See more: https://ratify.dev/docs/reference/oras-auth-provider # parameters: # authProvider: # name: azureWorkloadIdentity # clientID: XXX --- apiVersion: config.ratify.deislabs.io/v1beta1 kind: Verifier metadata: name: verifier-notary-inline spec: name: notation artifactTypes: application/vnd.cncf.notary.signature parameters: verificationCertStores: # certificates for validating signatures certs: # name of the trustStore - certstore-inline # name of the certificate store CRD to include in this trustStore trustPolicyDoc: # policy language that indicates which identities are trusted to produce artifacts version: "1.0" trustPolicies: - name: default registryScopes: - "*" signatureVerification: level: strict trustStores: - ca:certs trustedIdentities: - "*"Terapkan
VerifyConfigke kluster Anda menggunakan perintahkubectl apply.kubectl apply -f verify-config.yaml
Menyebarkan gambar sampel ke kluster AKS Anda
Sebarkan gambar yang ditandatangani menggunakan
kubectl run demoperintah .kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signedContoh output berikut menunjukkan bahwa Integritas Gambar memungkinkan penyebaran:
ghcr.io/deislabs/ratify/notary-image:signed pod/demo-signed created
Jika Anda ingin menggunakan gambar Anda sendiri, lihat panduan untuk penandatanganan gambar.
Nonaktifkan Integritas Gambar
Menghapus inisiatif kebijakan
Pertama, Anda harus menghapus inisiatif kebijakan menggunakan
az policy assignment deleteperintah .az policy assignment delete --name 'deploy-trustedimages'
Add-on dapat dinonaktifkan
Kemudian nonaktifkan add-on Integritas Gambar pada kluster Anda menggunakan perintah
az aks update, dengan opsi--disable-image-integrity.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
Langkah selanjutnya
Dalam artikel ini, Anda mempelajari cara menggunakan Integritas Gambar untuk memvalidasi gambar yang ditandatangani sebelum menyebarkannya ke kluster Azure Kubernetes Service (AKS). Jika Anda ingin mempelajari cara menandatangani kontainer Anda sendiri, lihat Membangun, menandatangani, dan memverifikasi gambar kontainer menggunakan Notaris dan Azure Key Vault (Pratinjau).