Microsoft Entra ID'yi Azure CLI (eski) kullanarak Azure Kubernetes Service (AKS) ile tümleştirme

Uyarı

Bu belgede açıklanan microsoft entra integration (eski) özelliği 1 Haziran 2023'te kullanım dışı bırakılmıştır. Şu anda, Microsoft Entra Tümleştirmesi (eski) ile yeni küme oluşturulamıyor.

AKS, sunucu veya istemci uygulamalarını yönetmenizi gerektirmeyen, AKS tarafından yönetilen yeni bir Microsoft Entra ID deneyimine sahiptir. Geçiş yapmak istiyorsanız buradaki yönergeleri izleyin.

Azure Kubernetes Service (AKS), kullanıcı kimlik doğrulaması için Microsoft Entra Id kullanacak şekilde yapılandırılabilir. Bu yapılandırmada, Microsoft Entra kimlik doğrulama belirtecini kullanarak AKS kümesinde oturum açabilirsiniz. Küme operatörleri ayrıca kullanıcının kimliğine veya dizin grubu üyeliğine göre Kubernetes rol tabanlı erişim denetimini (Kubernetes RBAC) yapılandırabilir.

Bu makalede gerekli Microsoft Entra bileşenlerini oluşturma, ardından Microsoft Entra ID özellikli bir küme dağıtma ve AKS kümesinde temel bir Kubernetes rolü oluşturma adımları gösterilmektedir.

Sınırlamalar

  • Microsoft Entra Id yalnızca Kubernetes RBAC özellikli kümede etkinleştirilebilir.
  • Microsoft Entra eski tümleştirmesi yalnızca küme oluşturma sırasında etkinleştirilebilir.

Başlamadan önce

Azure CLI sürüm 2.0.61 veya üzerinin yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Cloud Shell'i https://shell.azure.com tarayıcınızda açmak için adresine gidin.

Tutarlılık sağlamak ve bu makaledeki komutları çalıştırmaya yardımcı olmak için, istediğiniz AKS kümesi adı için bir değişken oluşturun. Aşağıdaki örnekte myakscluster adı kullanılır:

aksname="myakscluster"

Microsoft Entra kimlik doğrulamasına genel bakış

Microsoft Entra kimlik doğrulaması, OpenID Bağlan ile AKS kümelerine sağlanır. OpenID Bağlan, OAuth 2.0 protokolünün üzerine kurulmuş bir kimlik katmanıdır. OpenID Bağlan hakkında daha fazla bilgi için OpenID Bağlan belgelerine bakın.

Kimlik doğrulama belirteçlerini doğrulamak için Kubernetes kümesinin içinden Web Kancası Belirteci Kimlik Doğrulaması kullanılır. Web kancası belirteci kimlik doğrulaması AKS kümesinin bir parçası olarak yapılandırılır ve yönetilir. Web kancası belirteci kimlik doğrulaması hakkında daha fazla bilgi için web kancası kimlik doğrulaması belgelerine bakın.

Not

AKS kimlik doğrulaması için Microsoft Entra Id yapılandırılırken iki Microsoft Entra uygulaması yapılandırılır. Bu işlemin bir Azure kiracı yöneticisi tarafından tamamlanması gerekir.

Microsoft Entra sunucu bileşeni oluşturma

AKS ile tümleştirmek için, kimlik istekleri için uç nokta işlevi gören bir Microsoft Entra uygulaması oluşturup kullanırsınız. İhtiyacınız olan ilk Microsoft Entra uygulaması, bir kullanıcı için Microsoft Entra grup üyeliğini alır.

az ad app create komutunu kullanarak sunucu uygulaması bileşenini oluşturun, ardından az ad app update komutunu kullanarak grup üyeliği taleplerini güncelleştirin. Aşağıdaki örnek Başlamadan önce bölümünde tanımlanan aksname değişkenini kullanır ve bir değişken oluşturur

# Create the Azure AD application
serverApplicationId=$(az ad app create \
    --display-name "${aksname}Server" \
    --identifier-uris "https://${aksname}Server" \
    --query appId -o tsv)

# Update the application group membership claims
az ad app update --id $serverApplicationId --set groupMembershipClaims=All

Şimdi az ad sp create komutunu kullanarak sunucu uygulaması için bir hizmet sorumlusu oluşturun . Bu hizmet sorumlusu, Azure platformunda kimliğini doğrulamak için kullanılır. Ardından az ad sp credential reset komutunu kullanarak hizmet sorumlusu gizli dizisini alın ve aşağıdaki adımlardan birinde kullanmak üzere serverApplicationSecret adlı değişkene atayın:

# Create a service principal for the Azure AD application
az ad sp create --id $serverApplicationId

# Get the service principal secret
serverApplicationSecret=$(az ad sp credential reset \
    --name $serverApplicationId \
    --credential-description "AKSPassword" \
    --query password -o tsv)

Microsoft Entra hizmet sorumlusunun aşağıdaki eylemleri gerçekleştirmek için izinlere ihtiyacı vardır:

  • Dizin verilerini okuma
  • Oturum açma ve kullanıcı profilini okuma

az ad app permission add komutunu kullanarak şu izinleri atayın:

az ad app permission add \
    --id $serverApplicationId \
    --api 00000003-0000-0000-c000-000000000000 \
    --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope 06da0dbc-49e2-44d2-8312-53f166ab848a=Scope 7ab1d382-f21e-4acd-a863-ba3e13f7da61=Role

Son olarak, az ad app permission grant komutunu kullanarak sunucu uygulaması için önceki adımda atanan izinleri verin . Geçerli hesap bir kiracı yöneticisi değilse bu adım başarısız olur. Ayrıca az ad app permission admin-consent kullanarak yönetici onayı gerektirebilecek bilgileri istemek için Microsoft Entra uygulamasına yönelik izinler eklemeniz gerekir:

az ad app permission grant --id $serverApplicationId --api 00000003-0000-0000-c000-000000000000
az ad app permission admin-consent --id  $serverApplicationId

Microsoft Entra istemci bileşeni oluşturma

İkinci Microsoft Entra uygulaması, kullanıcı Kubernetes CLI (kubectl) ile AKS kümesinde oturum açtığında kullanılır. Bu istemci uygulaması, kullanıcıdan kimlik doğrulama isteğini alır ve kimlik bilgilerini ve izinlerini doğrular. az ad app create komutunu kullanarak istemci bileşeni için Microsoft Entra uygulamasını oluşturun :

clientApplicationId=$(az ad app create \
    --display-name "${aksname}Client" \
    --native-app \
    --reply-urls "https://${aksname}Client" \
    --query appId -o tsv)

az ad sp create komutunu kullanarak istemci uygulaması için bir hizmet sorumlusu oluşturun :

az ad sp create --id $clientApplicationId

az ad app show komutunu kullanarak iki uygulama bileşeni arasında kimlik doğrulama akışına izin vermek için sunucu uygulamasının oAuth2 kimliğini alın. Bu oAuth2 kimliği sonraki adımda kullanılır.

oAuthPermissionId=$(az ad app show --id $serverApplicationId --query "oauth2Permissions[0].id" -o tsv)

az ad app permission add komutunu kullanarak oAuth2 iletişim akışını kullanmak için istemci uygulaması ve sunucu uygulaması bileşenlerinin izinlerini ekleyin . Ardından, az ad app permission grant komutunu kullanarak istemci uygulamasının sunucu uygulamasıyla iletişim kurmasına izin verin :

az ad app permission add --id $clientApplicationId --api $serverApplicationId --api-permissions ${oAuthPermissionId}=Scope
az ad app permission grant --id $clientApplicationId --api $serverApplicationId

Kümeyi dağıtma

oluşturulan iki Microsoft Entra uygulamasıyla, şimdi AKS kümesinin kendisini oluşturun. İlk olarak az group create komutunu kullanarak bir kaynak grubu oluşturun . Aşağıdaki örnek EastUS bölgesinde kaynak grubunu oluşturur:

Küme için bir kaynak grubu oluşturun:

az group create --name myResourceGroup --location EastUS

az account show komutunu kullanarak Azure aboneliğinizin kiracı kimliğini alın. Ardından az aks create komutunu kullanarak AKS kümesini oluşturun . AKS kümesini oluşturma komutu sunucu ve istemci uygulama kimliklerini, sunucu uygulama hizmet sorumlusu gizli dizisini ve kiracı kimliğinizi sağlar:

tenantId=$(az account show --query tenantId -o tsv)

az aks create \
    --resource-group myResourceGroup \
    --name $aksname \
    --node-count 1 \
    --generate-ssh-keys \
    --aad-server-app-id $serverApplicationId \
    --aad-server-app-secret $serverApplicationSecret \
    --aad-client-app-id $clientApplicationId \
    --aad-tenant-id $tenantId

Son olarak az aks get-credentials komutunu kullanarak küme yöneticisi kimlik bilgilerini alın. Aşağıdaki adımlardan birinde, Microsoft Entra kimlik doğrulama akışının nasıl çalıştığını görmek için normal kullanıcı kümesi kimlik bilgilerini alırsınız.

az aks get-credentials --resource-group myResourceGroup --name $aksname --admin

Kubernetes RBAC bağlaması oluşturma

Bir Microsoft Entra hesabının AKS kümesiyle kullanılabilmesi için önce bir rol bağlaması veya küme rol bağlaması oluşturulması gerekir. Roller vermek için izinleri tanımlar ve bağlamalar bunları istenen kullanıcılara uygular. Bu atamalar belirli bir ad alanına veya kümenin tamamına uygulanabilir. Daha fazla bilgi için bkz . Kubernetes RBAC yetkilendirmesini kullanma.

az ad signed-in-user show komutunu kullanarak oturum açmış olan kullanıcının kullanıcı asıl adını (UPN) alın. Bu kullanıcı hesabı, sonraki adımda Microsoft Entra tümleştirmesi için etkinleştirilmiştir.

az ad signed-in-user show --query userPrincipalName -o tsv

Önemli

Kubernetes RBAC bağlamasını sağladığınız kullanıcı aynı Microsoft Entra kiracısındaysa, userPrincipalName temelinde izinleri atayın. Kullanıcı farklı bir Microsoft Entra kiracısındaysa, bunun yerine objectId özelliğini sorgulayıp kullanın.

adlı basic-azure-ad-binding.yaml bir YAML bildirimi oluşturun ve aşağıdaki içeriği yapıştırın. Son satırda, userPrincipalName_or_objectId değerini önceki komutun UPN veya nesne kimliği çıkışıyla değiştirin:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: contoso-cluster-admins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: userPrincipalName_or_objectId

kubectl apply komutunu kullanarak ClusterRoleBinding'i oluşturun ve YAML bildiriminizin dosya adını belirtin:

kubectl apply -f basic-azure-ad-binding.yaml

Microsoft Entra Id ile kümeye erişme

Şimdi AKS kümesi için Microsoft Entra kimlik doğrulaması tümleştirmesini test edelim. Yapılandırma bağlamını kubectl normal kullanıcı kimlik bilgilerini kullanacak şekilde ayarlayın. Bu bağlam, tüm kimlik doğrulama isteklerini Microsoft Entra Kimliği aracılığıyla geri geçirir.

az aks get-credentials --resource-group myResourceGroup --name $aksname --overwrite-existing

Şimdi tüm ad alanları genelinde podları görüntülemek için kubectl get pods komutunu kullanın:

kubectl get pods --all-namespaces

Web tarayıcısı kullanarak Microsoft Entra kimlik bilgilerini kullanarak kimlik doğrulaması yapmak için bir oturum açma istemi alırsınız. Kimlik doğrulaması başarıyla tamamlandıktan sonra komut, kubectl aşağıdaki örnek çıktıda gösterildiği gibi AKS kümesindeki podları görüntüler:

kubectl get pods --all-namespaces
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code BYMK7UXVD to authenticate.

NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
kube-system   coredns-754f947b4-2v75r                 1/1     Running   0          23h
kube-system   coredns-754f947b4-tghwh                 1/1     Running   0          23h
kube-system   coredns-autoscaler-6fcdb7d64-4wkvp      1/1     Running   0          23h
kube-system   heapster-5fb7488d97-t5wzk               2/2     Running   0          23h
kube-system   kube-proxy-2nd5m                        1/1     Running   0          23h
kube-system   kube-svc-redirect-swp9r                 2/2     Running   0          23h
kube-system   kubernetes-dashboard-847bb4ddc6-trt7m   1/1     Running   0          23h
kube-system   metrics-server-7b97f9cd9-btxzz          1/1     Running   0          23h
kube-system   tunnelfront-6ff887cffb-xkfmq            1/1     Running   0          23h

için kubectl alınan kimlik doğrulama belirteci önbelleğe alınır. Yalnızca belirtecin süresi dolduğunda veya Kubernetes yapılandırma dosyası yeniden oluşturulduğunda oturum açmanız gerekir.

Aşağıdaki örnek çıktıda olduğu gibi bir web tarayıcısı kullanarak başarıyla oturum açtıktan sonra bir yetkilendirme hata iletisi görürseniz, aşağıdaki olası sorunları denetleyin:

error: You must be logged in to the server (Unauthorized)
  • Kullanıcı hesabının aynı Microsoft Entra kiracısında olup olmadığını bağlı olarak uygun nesne kimliğini veya UPN'yi tanımlamışsınız.
  • Kullanıcı 200'den fazla grubun üyesi değil.
  • Sunucu için uygulama kaydında tanımlanan gizli dizi, kullanılarak yapılandırılan değerle eşleşir --aad-server-app-secret
  • Makinenizde aynı anda yalnızca bir kubectl sürümünün yüklü olduğundan emin olun. Çakışan sürümler yetkilendirme sırasında sorunlara neden olabilir. En son sürümü yüklemek için az aks install-cli kullanın.

Microsoft Entra Integration'dan AKS tarafından yönetilen Microsoft Entra Id'ye geçiş hakkında sık sorulan sorular

1. Geçiş planı nedir?

Microsoft Entra Integration (eski) 1 Haziran 2023'te kullanımdan kaldırılacaktır. Bu tarihten sonra Microsoft Entra Id (eski) ile yeni küme oluşturamazsınız. 1 Ağustos 2023'ten itibaren tüm Microsoft Entra Integration (eski) AKS kümelerini AKS tarafından yönetilen Microsoft Entra ID'ye otomatik olarak geçireceğiz. Etkilenen abonelik yöneticilerine geçişi anımsatmak için iki haftada bir bildirim e-postaları göndeririz.

2. Herhangi bir işlem yapmazsam ne olur?

Microsoft Entra Integration (eski) AKS kümeleriniz 1 Haziran 2023'e kadar çalışmaya devam edecektir. Kümelerinizi 1 Ağustos 2023'ten itibaren AKS tarafından yönetilen Microsoft Entra Id'ye otomatik olarak geçireceğiz. Geçiş sırasında API sunucusu kapalı kalma süresiyle karşılaşabilirsiniz.

Geçiş sonrasında kubeconfig içeriği değişir. kullanarak yeni kimlik bilgilerini kubeconfig dosyasıyla az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name>birleştirmeniz gerekir.

AKS kümenizi 1 Ağustos'dan önce AKS tarafından yönetilen Microsoft Entra ID'ye el ile güncelleştirmenizi öneririz. Bu şekilde, daha uygun olduğunda iş dışı saatlerde kapalı kalma süresini yönetebilirsiniz.

3. El ile geçiş sonrasında neden hala bildirim e-postasını alıyorum?

E-postanın gönderilmesi birkaç gün sürer. E-posta gönderme işlemini başlatmadan önce kümeniz geçirilmezse bir bildirim almaya devam edebilirsiniz.

4. Kümemin AKS tarafından yönetilen Microsoft Entra Kimliği'ne geçirilip geçirilmediğini nasıl denetleyebilirim?

komutunu kullanarak AKS kümenizin AKS tarafından yönetilen Microsoft Entra Kimliği'ne az aks show geçirildiğini onaylayın.

az aks show -g <RGName> -n <ClusterName>  --query "aadProfile"

Kümeniz AKS tarafından yönetilen Microsoft Entra Kimliğini kullanıyorsa çıktı şunu gösterir managed : true. Örneğin:

    {
      "adminGroupObjectIDs": [
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      ],
      "adminUsers": null,
      "clientAppId": null,
      "enableAzureRbac": null,
      "managed": true,
      "serverAppId": null,
      "serverAppSecret": null,
      "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }

Sonraki adımlar

Bu makalede gösterilen komutları içeren betiğin tamamı için BKZ örnekleri deposundaki [Microsoft Entra tümleştirme betiği][complete-script].

Küme kaynaklarına erişimi denetlemek için Microsoft Entra kullanıcılarını ve gruplarını kullanmak için bkz . Aks'de Kubernetes rol tabanlı erişim denetimini ve Microsoft Entra kimliklerini kullanarak küme kaynaklarına erişimi denetleme.

Kubernetes kümelerinin güvenliğini sağlama hakkında daha fazla bilgi için bkz . AKS için erişim ve kimlik seçenekleri).

Kimlik ve kaynak denetimiyle ilgili en iyi yöntemler için bkz . AKS'de kimlik doğrulaması ve yetkilendirme için en iyi yöntemler.