Container Registry (ACR), Key Management Service (KMS), Security Center ve kritis-validation-hook eklentisi, konteyner görüntüsü imzalarını otomatik olarak doğrular. Bu sayede yalnızca güvenilir otoriteler tarafından imzalanan konteyner görüntüleri dağıtılır ve ortamda istenmeyen veya kötü amaçlı kod bulunma riski azaltılır.
Önkoşullar
-
Security Center etkinleştirilmiş olmalıdır:
Subscription: Ultimate (Mevcut sürümünüz bu özelliği desteklemiyorsa yükseltin).
Pay-as-you-go: Host and Container Security kullandıkça öde hizmeti etkinleştirilmiş olmalıdır (Etkinleştirilmemişse satın alın).
-
Asimetrik şifreleme algoritması kullanan bir KMS anahtarı oluşturun. Daha fazla bilgi için bkz. Anahtarları yönetme.
ÖnemliKonteyner imzalama işlemi asimetrik bir anahtar gerektirir. KMS anahtarını oluştururken Key Type değerini RSA_2048 ve Key Usage değerini Sign/Verify olarak ayarlayın. KMS anahtar algoritmaları hakkında daha fazla bilgi için bkz. Key Management Service'a genel bakış.
Advanced teknik özelliklere sahip bir ACR Enterprise Edition örneği mevcut olmalıdır.
1. Adım: kritis-validation-hook'u yükleme
ACK konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Components and Add-ons öğesine tıklayın.
Add-ons sayfasında Security sekmesine tıklayın, kritis-validation-hook eklentisini bulun ve Install seçeneğine tıklayın.
-
kritis-validation-hook eklentisine erişmek için gerekli izinleri verin.
Kümenin, kritis-validation-hook bileşenini çalıştırmak için gereken izinlere sahip olduğundan emin olun. Daha fazla bilgi için bkz. Kaynaklar için erişim izinlerini yapılandırma.
2. Adım: Görüntü imzalama için bir KMS anahtarı oluşturma
Bir Müşteri Ana Anahtarı (CMK) oluşturmak için bkz. Anahtarları yönetme.
Anahtarı oluştururken Key Type değerini RSA_2048 ve Key Usage değerini Sign/Verify olarak ayarlayın.
3. Adım: Security Center'da bir tanık oluşturma
Security Center konsolu üzerinde oturum açın.
Sol gezinme bölmesinde seçeneklerini belirleyin.
-
Witness sekmesinde Create Witness seçeneğine tıklayın. Parametreleri yapılandırdıktan sonra OK seçeneğine tıklayın.
Parameter
Description
Witness Name
Konteyner imzalama güvenlik ilkesini yapılandırırken, konteyner görüntüleri için güvenilir yetkilendirme sağlamak amacıyla bir tanık seçilir. Açıklayıcı bir ad kullanın.
Select Certificate
Sertifika listesinden daha önce oluşturduğunuz KMS anahtarını seçin.
Description
Tanık için bir açıklama girin.
4. Adım: ACR'de otomatik görüntü imzalamayı etkinleştirme
Container Registry konsolu üzerinde oturum açın.
Üst gezinme çubuğunda bir bölge seçin.
Sol gezinme bölmesinde Instances seçeneğine tıklayın.
-
Instance sayfasında Enterprise Edition örneğini bulun ve adına tıklayın veya Actions sütunundaki Manage seçeneğine tıklayın.
NotBir Enterprise Edition örneği oluşturmak için Create ACR EE seçeneğine tıklayın. Specification değerini Advanced olarak ayarlayın.
-
Örnek ayrıntıları sayfasının sol gezinme bölmesinde seçeneklerini belirleyin.
Ad alanındaki tüm konteyner görüntüleri için imzalamayı etkinleştirmek üzere bir ad alanı oluşturun. Daha fazla bilgi için bkz. Ad alanlarında temel işlemler.
-
Daha önce oluşturduğunuz ad alanı için otomatik görüntü imzalamayı etkinleştirin.
İmza kuralı eklerken, 3. Adımda Security Center'da oluşturduğunuz tanığı seçin.
Örnek ayrıntıları sayfasının sol gezinme bölmesinde seçeneklerini belirleyin.
-
Image Signature sekmesinde Create a signature rule seçeneğine tıklayın.
Daha fazla bilgi için bkz. Otomatik görüntü imzalama için kural yapılandırma.
5. Adım: Security Center'da imza doğrulamayı etkinleştirme
Belirli bir Kubernetes ad alanı için konteyner görüntüsü imza doğrulamasını zorlamak amacıyla Security Center'da bir güvenlik ilkesi oluşturun ve etkinleştirin.
Security Center konsolu üzerinde oturum açın.
Sol gezinme bölmesinde seçeneklerini belirleyin.
-
Security Policy sekmesinde Create Policy seçeneğine tıklayın. İlkeyi yapılandırdıktan sonra OK seçeneğine tıklayın.
Parameter
Description
Policy Name
İmza güvenlik ilkesini yapılandırırken, hedef kümenize güvenilir yetkilendirme sağlamak için bir tanık seçmeniz gerekir.
Kolayca tanımlanabilen açıklayıcı bir ilke adı girin.
Witness
Daha önce oluşturduğunuz tanığı seçin.
Application Cluster
İmza doğrulaması gerektiren küme grubuna tıklayın ve hedef Cluster Namespace seçeneğini belirleyin.
Policy Status
İlkeyi hemen etkinleştirmek için bu seçeneği etkinleştirin.
Notİlke varsayılan olarak devre dışıdır. Bir ilkenin etkili olabilmesi için onu etkinleştirmeniz gerekir.
Description
Güvenlik ilkesi için bir açıklama girin.
6. Adım: Otomatik imza doğrulamayı doğrulama
Görüntü etiketi değiştirilemezliği etkinleştirilmemişse, özet biçimli bir görüntü başvurusu kullanın. Daha fazla bilgi için bkz. Görüntü etiketi değiştirilemezliğini etkinleştirme.
İmza doğrulamanın beklendiği gibi çalıştığını doğrulamak için aşağıdaki komutları çalıştırın.
-
İmza doğrulamanın etkin olduğu ad alanında, imzasız konteyner görüntülerini dağıtma girişimleri reddedilir.
Etiket biçimli bir görüntü başvurusu kullanın:
kubectl -n default create deployment not-sign --image=alpine:3.11 -- sleep 10Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine:3.11 is not attestedÖzet biçimli bir görüntü başvurusu kullanın:
kubectl -n default create deployment not-sign --image=alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 is not attested -
Otomatik imzalamanın etkin olduğu ACR ad alanına bir görüntü gönderin ve ardından imzalı konteyner görüntüsünün dağıtılabilip dağıtılmadığını doğrulayın.
docker push kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine:3.11The push refers to repository [kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine] 5216338b40a7: Pushed 3.11: digest: sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 size: 528Otomatik olarak imzalanmış konteyner görüntüsünü dağıtın:
kubectl -n default create deployment is-signed --image=kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10deployment.apps/is-signed created
İlgili belgeler
kritis-validation-hook bileşenine genel bakış için bkz. kritis-validation-hook bileşenine genel bakış.
kritis-validation-hook bileşeninin sürüm notları için bkz. kritis-validation-hook.