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
kubeconfig
eriş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:
- Geliştirici, Microsoft Entra Kimliği ile kimlik doğrulaması yapar.
- Microsoft Entra belirteci verme uç noktası erişim belirtecini döndürür.
- Geliştirici, Gibi
kubectl create pod
Microsoft Entra belirtecini kullanarak bir eylem gerçekleştirir. - Kubernetes, belirteci Microsoft Entra Kimliği ile doğrular ve geliştiricinin grup üyeliklerini getirir.
- Kubernetes RBAC ve küme ilkeleri uygulanır.
- 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 standard
aş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 veManaged Identity Operator
kullanıcı tarafından atanan yönetilen kimlikler üzerinde izin gerektirir. içindemanaged 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.
NMI sunucusu:
- Uzak adreslerine göre Azure kaynaklarına erişim isteyen podları tanımlar.
- Azure Kaynak Sağlayıcısı'nı sorgular.
Azure Kaynak Sağlayıcısı, AKS kümesinde Azure kimlik eşlemelerini denetler.
NMI sunucusu, pod'un kimlik eşlemesine göre Microsoft Entra Id'den erişim belirteci istemektedir.
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:
- Küme operatörü, podlar kaynaklara erişim istediğinde kimlikleri eşlemek için bir hizmet hesabı oluşturur.
- 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.
- Geliştirici, NMI sunucusu üzerinden erişim belirteci isteyen yönetilen kimliğe sahip bir pod dağıtır.
- 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:
- Microsoft Entra Id'yi AKS ile tümleştirme
- Azure Kubernetes Service'te Microsoft Entra pod ile yönetilen kimlikleri kullanma (önizleme)
AKS'deki küme işlemleri hakkında daha fazla bilgi için aşağıdaki en iyi yöntemlere bakın:
Azure Kubernetes Service