Azure Kubernetes Service'te (AKS) özel sertifika yetkilisi (CA) (önizleme)
AKS aşağıdaki sertifikaları, Sertifika Yetkililerini (CA' lar) ve Hizmet Hesaplarını (SA) oluşturur ve kullanır:
- AKS API sunucusu, Küme CA'sı adlı bir CA oluşturur.
- API sunucusunda, API sunucusundan kubelet'lere tek yönlü iletişim için sertifikaları imzalayan bir Küme CA'sı vardır.
- Her kubelet, kubelet'ten API sunucusuna iletişim için Küme CA'sı tarafından imzalanan bir Sertifika İmzalama İsteği (CSR) de oluşturur.
- API toplayıcısı, diğer API'lerle iletişim için sertifikalar vermek üzere Küme CA'sını kullanır. API toplayıcısı, bu sertifikaların verilmesi için kendi CA'sına da sahip olabilir, ancak şu anda Küme CA'sını kullanır.
- Her düğüm, Küme CA'sı tarafından imzalanan bir SA belirteci kullanır.
- İstemcinin
kubectl
AKS kümesiyle iletişim kurmak için bir sertifikası vardır.
Ayrıca, Azure Kubernetes Service (AKS) kümelerinizle özel kayıt defterleri, proxy'ler ve güvenlik duvarları gibi iş yükleri arasında güven oluşturmanıza olanak tanıyan özel sertifika yetkilileri de oluşturabilirsiniz. Kubernetes gizli dizisi sertifika yetkilisinin bilgilerini depolar ve ardından kümedeki tüm düğümlere geçirilir. Bu özellik düğüm havuzu başına uygulandığı için yeni ve mevcut düğüm havuzlarında etkinleştirmeniz gerekir.
Bu makalede özel CA'ların nasıl oluşturulacağı ve AKS kümelerinize nasıl uygulanacağı gösterilmektedir.
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturun.
- Azure CLI yüklü (sürüm 2.43.0 veya üzeri).
- Base64 ile kodlanmış bir sertifika dizesi veya sertifika içeren bir metin dosyası.
Sınırlamalar
- Bu özellik şu anda Windows düğüm havuzları için desteklenmiyor.
Azure CLI uzantısını aks-preview
yükleme
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. AKS önizlemeleri, müşteri desteği tarafından kısmen en iyi çaba temelinde ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
komutunu kullanarak aks-preview uzantısını
az extension add
yükleyin.az extension add --name aks-preview
komutunu kullanarak uzantının en son sürümüne güncelleştirin
az extension update
.az extension update --name aks-preview
Özellik bayrağını CustomCATrustPreview
kaydetme
CustomCATrustPreview
komutunu kullanarak özellik bayrağınıaz feature register
kaydedin.az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.
komutunu kullanarak
az feature show
kayıt durumunu doğrulayın.az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
Durum Kayıtlı olarak yansıtıldığında, komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin
az provider register
.az provider register --namespace Microsoft.ContainerService
AKS düğüm havuzlarında özel CA yüklemesi
AKS düğüm havuzlarına CA yükleme
Ortamınız doğru sağlama için düğüm güven deposuna özel CA'larınızın eklenmesini gerektiriyorsa, veya
az aks update
işlemleri sırasındaaz aks create
en fazla 10 boş satırla ayrılmış sertifika içeren bir metin dosyası geçirmeniz gerekir. Örnek metin dosyası:-----BEGIN CERTIFICATE----- cert1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- cert2 -----END CERTIFICATE-----
Düğüm havuzu oluşturma sırasında CA'ları yükleme
komutunu kullanarak
az aks create
ve parametresi için--custom-ca-trust-certificates
metin dosyanızı belirterek düğüm havuzu oluşturma sırasında CA'ları yükleyin.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
Düğüm havuzu önyüklemesi sırasında kullanılabilirlik için CA döndürme
Önyükleme sırasında kümenize geçirilen CA'ları komutunu kullanarak
az aks update
ve parametresi için metin dosyanızı belirterek güncelleştirin--custom-ca-trust-certificates
.az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates pathToFileWithCAs
Not
Bu işlem bir model güncelleştirmesini tetikleyerek yeni düğümlerin doğru sağlama için gereken en yeni CA'lara sahip olmasını sağlar. AKS ek düğümler oluşturur, mevcut düğümleri boşaltıp siler ve bunları yeni CA kümesinin yüklü olduğu düğümlerle değiştirir.
Düğüm havuzu oluşturulduktan sonra CA'ları yükleme
Ortamınız özel CA'larınız olmadan başarıyla sağlanabilirse, ad alanına bir gizli dizi dağıtarak CA'ları kube-system
sağlayabilirsiniz. Bu yaklaşım, düğüm rekreasyona gerek kalmadan sertifika döndürmeye olanak tanır.
alanında base64 kodlanmış sertifika dizenizle
data
bir Kubernetes gizli YAML bildirimi oluşturun.apiVersion: v1 kind: Secret metadata: name: custom-ca-trust-secret namespace: kube-system type: Opaque data: ca1.crt: | {base64EncodedCertStringHere} ca2.crt: | {anotherBase64EncodedCertStringHere}
Bu gizli dizideki veriler tüm düğümlerdeki CA'ları güncelleştirmek için kullanılır. Gizli dizinin ad alanında adlandırılıp
custom-ca-trust-secret
oluşturulduğundankube-system
emin olun. Ad alanında gizli diziyi kullanarak CA'larınkube-system
yüklenmesi, düğüm rekreasyona gerek kalmadan CA döndürmesine olanak tanır. CA'yı güncelleştirmek veya kaldırmak için YAML bildirimini düzenleyebilir ve uygulayabilirsiniz. Küme değişiklikleri yoklar ve düğümleri uygun şekilde güncelleştirir. Değişikliklerin uygulanması birkaç dakika sürebilir.Not
CA'ların düzgün bir şekilde alınması için düğümde kapsayıcılı yeniden başlatma gerekebilir. CA'lar düğümünüzün güven deposuna doğru şekilde eklenmemiş gibi görünüyorsa, düğümün kabuğundan aşağıdaki komutu kullanarak yeniden başlatma tetikleyebilirsiniz:
systemctl restart containerd
Özel CA kullanmak için yeni bir AKS kümesi yapılandırma
parametresiyle
--enable-custom-ca-trust
komutunu kullanarakaz aks create
özel CA kullanmak için yeni bir AKS kümesi yapılandırın.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --generate-ssh-keys
Yeni bir AKS kümesini, düğüm önyüklemeden önce CA'lar yüklü özel ca kullanacak şekilde yapılandırma
ve
--custom-ca-trust-certificates
parametreleriyle--enable-custom-ca-trust
komutunu kullanarakaz aks create
düğüm önyüklemeden önce yüklü CA'larla özel CA kullanacak şekilde yeni bir AKS kümesi yapılandırın.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
Mevcut aks kümesini, düğüm önyüklemeden önce özel CA'ları yükleyecek şekilde yapılandırma
parametresiyle
--custom-ca-trust-certificates
komutunu kullanarak önyüklemeden önce özel CA'larınızın düğümün güven deposunaaz aks update
eklenmesini sağlamak için var olan bir AKS kümesini yapılandırın.az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates pathToFileWithCAs
Özel CA kullanmak için yeni bir düğüm havuzu yapılandırma
parametresiyle
--enable-custom-ca-trust
komutunu kullanarakaz aks nodepool add
özel ca kullanmak için yeni bir düğüm havuzu yapılandırın.az aks nodepool add \ --cluster-name <cluster-name> \ --resource-group <resource-group-name> \ --name <node-pool-name> \ --enable-custom-ca-trust \ --os-type Linux
Özelliği etkinleştirilmiş başka düğüm havuzu yoksa, değişikliklerin etkili olması için kümenin ayarlarını uzlaştırması gerekir. Bu işlem, AKS'nin mutabakat döngüsünün bir parçası olarak otomatik olarak gerçekleşir. İşlemden önce kümede daemon kümesi ve podlar görünmez. komutunu kullanarak
az aks update
hemen bir mutabakat işlemi tetikleyebilirsiniz. Güncelleştirme tamamlandıktan sonra daemon kümesi ve podlar görüntülenir.
Var olan bir düğüm havuzunu özel CA kullanacak şekilde yapılandırma
parametresiyle
--enable-custom-ca-trust
komutunu kullanarakaz aks nodepool update
özel ca kullanmak için mevcut düğüm havuzunu yapılandırın.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --enable-custom-ca-trust
Özelliği etkinleştirilmiş başka düğüm havuzu yoksa, değişikliklerin etkili olması için kümenin ayarlarını uzlaştırması gerekir. Bu işlem, AKS'nin mutabakat döngüsünün bir parçası olarak otomatik olarak gerçekleşir. İşlemden önce kümede daemon kümesi ve podlar görünmez. komutunu kullanarak
az aks update
hemen bir mutabakat işlemi tetikleyebilirsiniz. Güncelleştirme tamamlandıktan sonra daemon kümesi ve podlar görüntülenir.
Düğüm havuzunda özel CA'yi devre dışı bırakma
parametresiyle
--disable-custom-ca-trust
komutunu kullanarakaz aks nodepool update
mevcut düğüm havuzunda özel CA özelliğini devre dışı bırakın.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --disable-custom-ca-trust
Sorun giderme
Özellik etkinleştirilir ve CA'larla gizli dizi eklenir, ancak bilinmeyen yetkili tarafından imzalanan X.509 Sertifikası hatasıyla işlemler başarısız oluyor
Gizli dizide yanlış biçimlendirilmiş sertifikalar geçirildi
AKS, kullanıcı tarafından oluşturulan gizli dizide geçirilen sertifikaların düzgün biçimlendirilmesi ve base64 kodlaması gerektirir. Geçirilen CA'ların düzgün şekilde base64 kodlanmış olduğundan ve CA'ları olan dosyaların CRLF satır sonları olmadığından emin olun.
geçirilen --custom-ca-trust-certificates
sertifikaların base64 kodlanmış olmaması gerekir.
containerd yeni sertifikaları almamış
Düğümün kabuğundan komutunu çalıştırın systemctl restart containerd
. Kapsayıcı yeniden başlatıldıktan sonra, yeni sertifikalar kapsayıcı çalışma zamanı tarafından düzgün bir şekilde alınır.
Sonraki adımlar
AKS güvenlik en iyi yöntemleri hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) küme güvenliği ve yükseltmeleri için en iyi yöntemler.
Azure Kubernetes Service