Aracılığıyla paylaş


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:

  1. komutunu kullanarak aks-preview uzantısını az extension add yükleyin.

    az extension add --name aks-preview
    
  2. 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

  1. 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.

  2. komutunu kullanarak az feature show kayıt durumunu doğrulayın.

    az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
    
  3. Durum Kayıtlı olarak yansıtıldığında, komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyinaz 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ında az 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ğundan kube-system emin olun. Ad alanında gizli diziyi kullanarak CA'ların kube-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 kullanarak az 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 kullanarak az 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 deposuna az 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 kullanarak az 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 kullanarak az 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 kullanarak az 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.