Azure Kubernetes Service'te (AKS) kimlik doğrulaması ve yetkilendirme için en iyi yöntemler

Azure Kubernetes Service'te (AKS) küme dağıtıp bakımını gerçekleştirirken, kaynaklara ve hizmetlere erişimi yönetmenin yollarını uygularsınız. Bu denetimler olmadan:

  • Hesaplar gereksiz kaynaklara ve hizmetlere erişebilir.
  • Değişiklik yapmak için kullanılan kimlik bilgilerini izlemek zor olabilir.

Bu makalede, aks kümelerine yönelik erişimi ve kimliği yönetmek için bir küme operatörünün hangi önerilen uygulamaları izleyebileceklerini ele alıyoruz. Nasıl yapılacağını öğrenin:

  • Microsoft Entra Id ile AKS kümesi kullanıcılarının kimliğini doğrulama.
  • Kubernetes rol tabanlı erişim denetimi (Kubernetes RBAC) ile kaynaklara erişimi denetleme.
  • Azure RBAC kullanarak AKS kaynağına, uygun ölçekte Kubernetes API'sine ve kubeconfigerişimi ayrıntılı olarak denetleyin.
  • Podlarınızdan Azure kaynaklarına erişmek için bir iş yükü kimliği kullanın.

Uyarı

Azure Kubernetes Service'teki açık kaynak Microsoft Entra pod yönetilen kimliği (önizleme) 24.10.2022 itibarıyla kullanım dışı bırakılmıştır.

AKS kümenizde Microsoft Entra pod yönetilen kimliği etkinleştirildiyse veya uygulamayı düşünüyorsanız, kümenizi Microsoft Entra İş Yükü Kimliği kullanacak şekilde ayarlama (önizleme) önerilerimizi ve seçeneklerimizi anlamak için iş yükü kimliğine genel bakış makalesini gözden geçirmenizi öneririz. Bu kimlik doğrulama yöntemi, herhangi bir dış kimlik sağlayıcısıyla federasyon için Kubernetes yerel özellikleriyle tümleşen pod ile yönetilen kimliğin (önizleme) yerini alır.

Microsoft Entra Id kullanma

En iyi yöntem kılavuzu

Microsoft Entra tümleştirmesi ile AKS kümelerini dağıtma. Microsoft Entra ID'nin kullanılması kimlik yönetimi katmanını merkezi hale getirmektedir. Kullanıcı hesabı veya grup durumundaki tüm değişiklikler AKS kümesine erişimde otomatik olarak güncelleştirilir. Rolleri, ClusterRoles'i veya Bağlamaları kullanarak kullanıcıları veya grupları en düşük izin miktarına kadar kapsamlayın.

Kubernetes küme geliştiricilerinizin ve uygulama sahiplerinizin farklı kaynaklara erişmesi gerekir. Kubernetes,kullanıcıların etkileşim kurabileceği kaynakları denetlemeniz için bir kimlik yönetimi çözümüne sahip değil. Bunun yerine, kümenizi kurumsal kullanıma hazır bir kimlik yönetimi çözümü olan Microsoft Entra ID gibi mevcut bir kimlik çözümüyle tümleştirebilirsiniz.

AKS'de Microsoft Entra tümleşik kümeleri ile kaynaklara erişim izinlerini tanımlayan Roller veya ClusterRoles oluşturursunuz. Ardından rolleri Microsoft Entra Id'den kullanıcılara veya gruplara bağlarsınız . Sonraki bölümde bu Kubernetes RBAC hakkında daha fazla bilgi edinin. Microsoft Entra tümleştirmesi ve kaynaklara erişimi nasıl denetlediğiniz aşağıdaki diyagramda görülebilir:

Cluster-level authentication for Microsoft Entra integration with AKS

  1. Geliştirici, Microsoft Entra Kimliği ile kimlik doğrulaması yapar.
  2. Microsoft Entra belirteci verme uç noktası erişim belirtecini döndürür.
  3. Geliştirici, Gibi kubectl create podMicrosoft Entra belirtecini kullanarak bir eylem gerçekleştirir.
  4. Kubernetes, belirteci Microsoft Entra Kimliği ile doğrular ve geliştiricinin grup üyeliklerini getirir.
  5. Kubernetes RBAC ve küme ilkeleri uygulanır.
  6. Geliştiricinin isteği, Microsoft Entra grup üyeliğinin ve Kubernetes RBAC'sinin ve ilkelerinin önceki doğrulamasına bağlı olarak başarılı olur.

Microsoft Entra Id kullanan bir AKS kümesi oluşturmak için bkz . Microsoft Entra Id'yi AKS ile tümleştirme.

Kubernetes rol tabanlı erişim denetimini kullanma (Kubernetes RBAC)

En iyi yöntem kılavuzu

Kubernetes RBAC ile küme kaynakları için kullanıcı veya grup izinleri tanımlayın. Gereken en az izin miktarını atayan roller ve bağlamalar oluşturun. Kullanıcı durumu veya grup üyeliği değişikliklerini otomatik olarak güncelleştirmek ve küme kaynaklarına erişimi güncel tutmak için Microsoft Entra Id ile tümleştirin.

Kubernetes'te küme kaynaklarına ayrıntılı erişim denetimi sağlarsınız. İzinleri küme düzeyinde veya belirli ad alanları için tanımlarsınız. Hangi kaynakların yönetilebileceğini ve hangi izinlerle yönetilebileceğini siz belirlersiniz. Ardından bu rolleri bağlaması olan kullanıcılara veya gruplara uygularsınız. Roller, ClusterRoles ve Bağlamalar hakkında daha fazla bilgi için bkz. Azure Kubernetes Service (AKS) için erişim ve kimlik seçenekleri.

Örneğin, aşağıdaki örnek YAML bildiriminde gösterildiği gibi finance-app adlı ad alanında kaynaklara tam erişime sahip bir rol oluşturursunuz:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: finance-app-full-access-role
  namespace: finance-app
rules:
- apiGroups: [""]
  resources: ["*"]
  verbs: ["*"]

Ardından, aşağıdaki YAML bildiriminde gösterildiği gibi bir RoleBinding oluşturup Microsoft Entra kullanıcısını developer1@contoso.com buna bağlarsınız:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: finance-app-full-access-role-binding
  namespace: finance-app
subjects:
- kind: User
  name: developer1@contoso.com
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: finance-app-full-access-role
  apiGroup: rbac.authorization.k8s.io

AKS kümesinde kimlik doğrulaması yapıldığındadeveloper1@contoso.com, finance-app ad alanında kaynaklar üzerinde tam izinlere sahiptir. Bu şekilde, kaynaklara erişimi mantıksal olarak ayırır ve denetlersiniz. Microsoft Entra ID-integration ile Kubernetes RBAC kullanın.

Kubernetes RBAC kullanarak Kubernetes kaynaklarına erişimi denetlemek için Microsoft Entra gruplarını kullanmayı öğrenmek için bkz . AKS'de rol tabanlı erişim denetimini ve Microsoft Entra kimliklerini kullanarak küme kaynaklarına erişimi denetleme.

Azure RBAC kullanma

En iyi yöntem kılavuzu

Bir veya daha fazla abonelikteki AKS kaynakları için gereken en düşük kullanıcı ve grup izinlerini tanımlamak için Azure RBAC kullanın.

AKS kümesini tam olarak çalıştırmak için gereken iki erişim düzeyi vardır:

  • Azure aboneliğinizdeki AKS kaynağına erişin.

    Bu erişim düzeyi şunları yapmanızı sağlar:

    • AKS API'lerini kullanarak kümenizi ölçeklendirmeyi veya yükseltmeyi denetleme
    • öğesini kubeconfigçekin.

    AKS kaynağına ve kubeconfigöğesine erişimi denetlemeyi öğrenmek için bkz . Küme yapılandırma dosyasına erişimi sınırlama.

  • Kubernetes API'sine erişim.

    Bu erişim düzeyi aşağıdakilerden biri tarafından denetlenmektedir:

    • Kubernetes RBAC (geleneksel olarak) veya
    • Azure RBAC'yi kubernetes yetkilendirmesi için AKS ile tümleştirerek.

    Azure RBAC kullanarak Kubernetes API'sine ayrıntılı izinler verme hakkında bilgi edinmek için bkz . Kubernetes yetkilendirmesi için Azure RBAC kullanma.

Pod ile yönetilen kimlikleri kullanma

Uyarı

Azure Kubernetes Service'teki açık kaynak Microsoft Entra pod yönetilen kimliği (önizleme) 24.10.2022 itibarıyla kullanım dışı bırakılmıştır.

AKS kümenizde Microsoft Entra pod yönetilen kimliği etkinleştirildiyse veya uygulamayı düşünüyorsanız, kümenizi Microsoft Entra İş Yükü Kimliği kullanacak şekilde ayarlama (önizleme) önerilerimizi ve seçeneklerimizi anlamak için iş yükü kimliğine genel bakış makalesini gözden geçirmenizi öneririz. Bu kimlik doğrulama yöntemi, herhangi bir dış kimlik sağlayıcısıyla federasyon için Kubernetes yerel özellikleriyle tümleşen pod ile yönetilen kimliğin (önizleme) yerini alır.

Maruz kalma veya kötüye kullanım riski altında oldukları için podlar veya kapsayıcı görüntüleri içinde sabit kimlik bilgilerini kullanmayın. Bunun yerine, Microsoft Entra Id kullanarak otomatik olarak erişim istemek için pod kimliklerini kullanın.

Azure Cosmos DB, Key Vault veya Blob depolama gibi diğer Azure kaynaklarına erişmek için pod kimlik doğrulaması kimlik bilgilerine ihtiyaç duyar. Kapsayıcı görüntüsüyle kimlik doğrulama kimlik bilgilerini tanımlayabilir veya bunları Kubernetes gizli dizisi olarak ekleyebilirsiniz. Her iki durumda da bunları el ile oluşturmanız ve atamanız gerekir. Bu kimlik bilgileri genellikle podlar arasında yeniden kullanılır ve düzenli olarak döndürülemez.

Azure kaynakları için pod ile yönetilen kimlikler (önizleme) ile, Microsoft Entra Kimliği aracılığıyla hizmetlere otomatik olarak erişim isteğinde bulunursunuz. Pod tarafından yönetilen kimlikler şu anda AKS için önizleme aşamasındadır. Başlamak için Azure Kubernetes Service'te (Önizleme) Microsoft Entra pod ile yönetilen kimlikleri kullanma belgelerine bakın.

Microsoft Entra pod ile yönetilen kimlik (önizleme) iki işlem modunu destekler:

  • Standart mod: Bu modda AKS kümesine aşağıdaki 2 bileşen dağıtılır:

    • Yönetilen Kimlik Denetleyicisi (MIC):Kubernetes API Sunucusu aracılığıyla podlarda, AzureIdentity'de ve AzureIdentityBinding'de yapılan değişiklikleri izleyen bir Kubernetes denetleyicisi. İlgili bir değişiklik algıladığında, MIC gerektiğinde AzureAssignedIdentity ekler veya siler. Özel olarak, bir pod zamanlandığında, MIC Azure'da yönetilen kimliği oluşturma aşamasında düğüm havuzu tarafından kullanılan temel sanal makine ölçek kümesine atar. Kimliği kullanan tüm podlar silindiğinde, aynı yönetilen kimlik diğer podlar tarafından kullanılmadığı sürece kimliği düğüm havuzunun sanal makine ölçek kümesinden kaldırır. AzureIdentity veya AzureIdentityBinding oluşturulduğunda veya silindiğinde MIC de benzer eylemler gerçekleştirir.

    • Düğüm Yönetilen Kimliği (NMI):AKS kümesindeki her düğümde DaemonSet olarak çalışan bir poddur. NMI, her düğümdeki Azure Örnek Meta Veri Hizmeti'ne yönelik güvenlik belirteci isteklerini durdurur. İstekleri kendisine yönlendirir ve podun belirteç istediği kimliğe erişimi olup olmadığını doğrular ve uygulama adına Microsoft Entra kiracısından belirteci getirir.

  • Yönetilen mod: Bu modda yalnızca NMI vardır. Kimliğin kullanıcı tarafından el ile atanması ve yönetilmesi gerekir. Daha fazla bilgi için bkz . Yönetilen Modda Pod Kimliği. Bu modda, Azure Kubernetes Service (AKS) kümesine pod kimliği eklemek için az aks pod-identity add komutunu kullandığınızda, parametre tarafından --namespace belirtilen ad alanında AzureIdentity ve AzureIdentityBinding oluşturulurken AKS kaynak sağlayıcısı parametresi tarafından --identity-resource-id belirtilen yönetilen kimliği AKS kümesindeki her düğüm havuzunun sanal makine ölçek kümesine atar.

Not

Bunun yerine AKS kümesi eklentisini kullanarak Microsoft Entra pod yönetilen kimliğini yüklemeye karar verirseniz kurulum modu managed kullanır.

modu managed , 'a göre standardaşağıdaki avantajları sağlar:

  • Düğüm havuzunun sanal makine ölçek kümesinde kimlik ataması 40-60'ları kaplayabilir. Kimliğe erişim gerektiren ve atama gecikmesini tolere etmeyen cronjobs veya uygulamalarla, kimlik düğüm havuzunun sanal makine ölçek kümesine önceden atandığından modu kullanmak managed en iyisidir. El ile veya az aks pod-identity add komutunu kullanarak.
  • Modda standard MIC, AKS kümesi tarafından kullanılan sanal makine ölçek kümesinde yazma izinleri ve Managed Identity Operator kullanıcı tarafından atanan yönetilen kimlikler üzerinde izin gerektirir. içinde managed modeçalıştırılırken, MIC olmadığından rol atamaları gerekli değildir.

Podlar için kimlik bilgilerini el ile tanımlamak yerine pod ile yönetilen kimlikler, yalnızca atanan kaynaklarına erişmek için kullanarak gerçek zamanlı olarak erişim belirteci istemektedir. AKS'de, podların yönetilen kimlikleri kullanmasına izin vermek için işlemleri işleyen iki bileşen vardır:

  • Düğüm Yönetim Kimliği (NMI) sunucusu , AKS kümesindeki her düğümde DaemonSet olarak çalışan bir poddur. NMI sunucusu, Azure hizmetlerine yönelik pod isteklerini dinler.
  • Azure Kaynak Sağlayıcısı Kubernetes API sunucusunu sorgular ve pod'a karşılık gelen bir Azure kimlik eşlemesi olup olmadığını denetler.

Podlar Bir Azure kaynağına erişmek için Microsoft Entra Id'den bir güvenlik belirteci istediğinde, ağ kuralları trafiği NMI sunucusuna yönlendirir.

  1. NMI sunucusu:

    • Uzak adreslerine göre Azure kaynaklarına erişim isteyen podları tanımlar.
    • Azure Kaynak Sağlayıcısı'nı sorgular.
  2. Azure Kaynak Sağlayıcısı, AKS kümesinde Azure kimlik eşlemelerini denetler.

  3. NMI sunucusu, pod'un kimlik eşlemesine göre Microsoft Entra Id'den erişim belirteci istemektedir.

  4. Microsoft Entra Id, pod'a döndürülen NMI sunucusuna erişim sağlar.

    • Bu erişim belirteci pod tarafından daha sonra Azure'daki kaynaklara erişim istemek için kullanılabilir.

Aşağıdaki örnekte bir geliştirici, Azure SQL Veritabanı erişim istemek için yönetilen kimlik kullanan bir pod oluşturur:

Pod identities allow a pod to automatically request access to other resources.

  1. Küme operatörü, podlar kaynaklara erişim istediğinde kimlikleri eşlemek için bir hizmet hesabı oluşturur.
  2. NMI sunucusu, erişim belirteçleri için Azure Kaynak Sağlayıcısı ile birlikte tüm pod isteklerini Microsoft Entra Id'ye aktarmak üzere dağıtılır.
  3. Geliştirici, NMI sunucusu üzerinden erişim belirteci isteyen yönetilen kimliğe sahip bir pod dağıtır.
  4. Belirteç pod'a döndürülür ve Azure SQL Veritabanı erişmek için kullanılır

Pod ile yönetilen kimlikleri kullanmak için bkz . Azure Kubernetes Service'te (önizleme) Microsoft Entra pod ile yönetilen kimlikleri kullanma.

Sonraki adımlar

Kümeniz ve kaynaklarınız için kimlik doğrulaması ve yetkilendirmeye odaklanan bu en iyi yöntemler makalesi. Bu en iyi uygulamalardan bazılarını uygulamak için aşağıdaki makalelere bakın:

AKS'deki küme işlemleri hakkında daha fazla bilgi için aşağıdaki en iyi yöntemlere bakın: