Azure CLı 'yı kullanarak Azure Kubernetes hizmeti ile Azure Active Directory tümleştirme (eski)Integrate Azure Active Directory with Azure Kubernetes Service using the Azure CLI (legacy)

Azure Kubernetes hizmeti (AKS), Kullanıcı kimlik doğrulaması için Azure Active Directory (AD) kullanacak şekilde yapılandırılabilir.Azure Kubernetes Service (AKS) can be configured to use Azure Active Directory (AD) for user authentication. Bu yapılandırmada, bir Azure AD kimlik doğrulama belirteci kullanarak bir AKS kümesinde oturum açabilirsiniz.In this configuration, you can log into an AKS cluster using an Azure AD authentication token. Küme işleçleri Ayrıca, Kubernetes rol tabanlı erişim denetimini (Kubernetes RBAC) bir kullanıcının kimliğine veya dizin grubu üyeliğine göre de yapılandırabilir.Cluster operators can also configure Kubernetes role-based access control (Kubernetes RBAC) based on a user's identity or directory group membership.

Bu makalede, gerekli Azure AD bileşenlerini oluşturma, ardından Azure AD özellikli bir kümeyi dağıtma ve AKS kümesinde temel bir Kubernetes rolü oluşturma işlemlerinin nasıl yapılacağı gösterilir.This article shows you how to create the required Azure AD components, then deploy an Azure AD-enabled cluster and create a basic Kubernetes role in the AKS cluster.

Bu makalede kullanılan tam örnek betik için bkz. Azure CLI örnekleri-Azure AD Ile AKS tümleştirmesi.For the complete sample script used in this article, see Azure CLI samples - AKS integration with Azure AD.

Önemli

AKS, sunucu veya istemci uygulamasını yönetmenizi gerektirmeyen, geliştirilmiş, gelişmiş bir Azure AD deneyimine sahiptir.AKS has a new improved AKS-managed Azure AD experience that doesn't require you to manage server or client application. Geçirmek istiyorsanız buradakiyönergeleri izleyin.If you want to migrate follow the instructions here.

Aşağıdaki sınırlamalar geçerlidir:The following limitations apply:

  • Azure AD yalnızca Kubernetes RBAC etkin kümesinde etkinleştirilebilir.Azure AD can only be enabled on Kubernetes RBAC-enabled cluster.
  • Azure AD eski tümleştirmesi, yalnızca küme oluşturma sırasında etkinleştirilebilir.Azure AD legacy integration can only be enabled during cluster creation.

Başlamadan önceBefore you begin

Azure CLı sürüm 2.0.61 veya sonraki bir sürümün yüklü ve yapılandırılmış olması gerekir.You need the Azure CLI version 2.0.61 or later installed and configured. Sürümü bulmak için az --version komutunu çalıştırın.Run az --version to find the version. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.If you need to install or upgrade, see Install Azure CLI.

https://shell.azure.comTarayıcınızda Cloud Shell açmak için bölümüne gidin.Go to https://shell.azure.com to open Cloud Shell in your browser.

Tutarlılık için 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.For consistency and to help run the commands in this article, create a variable for your desired AKS cluster name. Aşağıdaki örnek myakscluster adını kullanır:The following example uses the name myakscluster:

aksname="myakscluster"

Azure AD kimlik doğrulamasına genel bakışAzure AD authentication overview

Azure AD kimlik doğrulaması, OpenID Connect ile AKS kümelerine sağlanır.Azure AD authentication is provided to AKS clusters with OpenID Connect. OpenID Connect, OAuth 2,0 protokolünün üstünde oluşturulmuş bir kimlik katmanıdır.OpenID Connect is an identity layer built on top of the OAuth 2.0 protocol. OpenID Connect hakkında daha fazla bilgi için bkz. Açık kimlik bağlantısı belgeleri.For more information on OpenID Connect, see the Open ID connect documentation.

Kubernetes kümesinin içinden, kimlik doğrulama belirteçlerini doğrulamak için Web kancası belirteci kimlik doğrulaması kullanılır.From inside of the Kubernetes cluster, Webhook Token Authentication is used to verify authentication tokens. Web kancası belirteci kimlik doğrulaması, AKS kümesinin bir parçası olarak yapılandırılır ve yönetilir.Webhook token authentication is configured and managed as part of the AKS cluster. Web kancası belirteci kimlik doğrulaması hakkında daha fazla bilgi için bkz. Web kancası kimlik doğrulaması belgeleri.For more information on Webhook token authentication, see the webhook authentication documentation.

Not

Azure AD 'yi AKS kimlik doğrulaması için yapılandırırken iki Azure AD uygulaması yapılandırılır.When configuring Azure AD for AKS authentication, two Azure AD applications are configured. Bu işlemin bir Azure kiracı yöneticisi tarafından tamamlanması gerekir.This operation must be completed by an Azure tenant administrator.

Azure AD Server bileşeni oluşturmaCreate Azure AD server component

AKS ile tümleştirme için, kimlik istekleri için uç nokta görevi gören bir Azure AD uygulaması oluşturup kullanırsınız.To integrate with AKS, you create and use an Azure AD application that acts as an endpoint for the identity requests. İhtiyacınız olan ilk Azure AD uygulaması, bir kullanıcı için Azure AD grup üyeliğini alır.The first Azure AD application you need gets Azure AD group membership for a user.

Az ad App Create komutunu kullanarak sunucu uygulama bileşenini oluşturun, sonra az ad App Update komutunu kullanarak Grup üyeliği taleplerini güncelleştirin.Create the server application component using the az ad app create command, then update the group membership claims using the az ad app update command. 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ştururThe following example uses the aksname variable defined in the Before you begin section, and creates a variable

# 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.Now create a service principal for the server app using the az ad sp create command. Bu hizmet sorumlusu, Azure platformunda kimliğini doğrulamak için kullanılır.This service principal is used to authenticate itself within the Azure platform. Ardından, az ad SP kimlik bilgisi sıfırlama komutunu kullanarak hizmet sorumlusu gizliliğini alın ve aşağıdaki adımlardan birinde kullanmak üzere serverapplicationsecret adlı değişkene atayın:Then, get the service principal secret using the az ad sp credential reset command and assign to the variable named serverApplicationSecret for use in one of the following steps:

# 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)

Azure AD hizmet sorumlusu, aşağıdaki eylemleri gerçekleştirmek için izinlere ihtiyaç duyuyor:The Azure AD service principal needs permissions to perform the following actions:

  • Dizin verilerini okuRead directory data
  • Oturum açma ve kullanıcı profilini okumaSign in and read user profile

Az ad App Permission Add komutunu kullanarak bu izinleri atayın:Assign these permissions using the az ad app permission add command:

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 uygulama izni verme komutunu kullanarak sunucu uygulaması için önceki adımda atanan izinleri verin.Finally, grant the permissions assigned in the previous step for the server application using the az ad app permission grant command. Geçerli hesap bir kiracı yöneticisi değilse bu adım başarısız olur. Alternatif olarak, az ad uygulama izin yöneticisi-onayıkullanılarak yönetici onayı gerektirmeyen bilgiler Istemek IÇIN Azure AD uygulaması için izinler eklemeniz gerekir:This step fails if the current account is not a tenant admin. You also need to add permissions for Azure AD application to request information that may otherwise require administrative consent using the az ad app permission admin-consent:

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

Azure AD istemci bileşeni oluşturmaCreate Azure AD client component

İkinci Azure AD uygulaması, bir Kullanıcı AKS kümesine Kubernetes CLı () ile oturum açtığında kullanılır kubectl .The second Azure AD application is used when a user logs to the AKS cluster with the Kubernetes CLI (kubectl). Bu istemci uygulaması kullanıcıdan kimlik doğrulama isteğini alır ve kimlik bilgilerini ve izinlerini doğrular.This client application takes the authentication request from the user and verifies their credentials and permissions. Az ad App Create komutunu kullanarak istemci bileşeni IÇIN Azure AD uygulamasını oluşturun:Create the Azure AD app for the client component using the az ad app create command:

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:Create a service principal for the client application using the az ad sp create command:

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 üzere sunucu UYGULAMASıNıN oAuth2 kimliğini alın.Get the oAuth2 ID for the server app to allow the authentication flow between the two app components using the az ad app show command. Bu oAuth2 KIMLIĞI bir sonraki adımda kullanılır.This oAuth2 ID is used in the next step.

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şenlerine ilişkin izinleri ekleyin.Add the permissions for the client application and server application components to use the oAuth2 communication flow using the az ad app permission add command. Daha sonra, az ad uygulama izni verme komutunu kullanarak istemci uygulaması için sunucu uygulamasıyla iletişim kurmak için izin verin:Then, grant permissions for the client application to communication with the server application using the az ad app permission grant command:

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ğıtmaDeploy the cluster

İki Azure AD uygulaması oluşturulmuş olarak, şimdi AKS kümesinin kendisini oluşturun.With the two Azure AD applications created, now create the AKS cluster itself. İlk olarak, az Group Create komutunu kullanarak bir kaynak grubu oluşturun.First, create a resource group using the az group create command. Aşağıdaki örnek EastUS bölgesinde kaynak grubunu oluşturur:The following example creates the resource group in the EastUS region:

Küme için bir kaynak grubu oluşturun:Create a resource group for the cluster:

az group create --name myResourceGroup --location EastUS

Az Account Show komutunu kullanarak Azure ABONELIĞINIZIN Kiracı kimliğini alın.Get the tenant ID of your Azure subscription using the az account show command. Ardından, az aks Create komutunu kullanarak aks kümesini oluşturun.Then, create the AKS cluster using the az aks create command. AKS kümesini oluşturma komutu sunucu ve istemci uygulama kimliklerini, sunucu uygulama hizmeti asıl gizli anahtarını ve kiracı KIMLIĞINIZI sağlar:The command to create the AKS cluster provides the server and client application IDs, the server application service principal secret, and your tenant ID:

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.Finally, get the cluster admin credentials using the az aks get-credentials command. Aşağıdaki adımlardan birinde, Azure AD kimlik doğrulama akışını eylemde görmek için normal Kullanıcı kümesi kimlik bilgilerini alırsınız.In one of the following steps, you get the regular user cluster credentials to see the Azure AD authentication flow in action.

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

Kubernetes RBAC bağlaması oluşturmaCreate Kubernetes RBAC binding

Bir Azure Active Directory hesabının AKS kümesiyle kullanılabilmesi için önce bir rol bağlama veya küme rolü bağlamasının oluşturulması gerekir.Before an Azure Active Directory account can be used with the AKS cluster, a role binding or cluster role binding needs to be created. Roller , verilecek izinleri tanımlar ve bağlamalar onları istenen kullanıcılara uygular.Roles define the permissions to grant, and bindings apply them to desired users. Bu atamalar, belirli bir ad alanına veya tüm küme genelinde uygulanabilir.These assignments can be applied to a given namespace, or across the entire cluster. Daha fazla bilgi için bkz. Kubernetes RBAC yetkilendirmesini kullanma.For more information, see Using Kubernetes RBAC authorization.

Az ad oturum açan kullanıcı göster komutunu kullanarak şu anda oturum açmış olan kullanıcının Kullanıcı asıl adını (UPN) alın.Get the user principal name (UPN) for the user currently logged in using the az ad signed-in-user show command. Bu Kullanıcı hesabı, bir sonraki adımda Azure AD tümleştirmesi için etkinleştirilmiştir.This user account is enabled for Azure AD integration in the next step.

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

Önemli

İçin Kubernetes RBAC bağlamaya verdiğiniz kullanıcı aynı Azure AD kiracısında ise, userPrincipalName temelinde izinleri atayın.If the user you grant the Kubernetes RBAC binding for is in the same Azure AD tenant, assign permissions based on the userPrincipalName. Kullanıcı farklı bir Azure AD kiracısında ise, için sorgulama yapın ve onun yerine ObjectID özelliğini kullanın.If the user is in a different Azure AD tenant, query for and use the objectId property instead.

Adlı bir YAML bildirimi oluşturun basic-azure-ad-binding.yaml ve aşağıdaki içeriği yapıştırın.Create a YAML manifest named basic-azure-ad-binding.yaml and paste the following contents. Son satırda, userPrincipalName_or_objectId ÖNCEKI komutun UPN veya nesne kimliği çıkışıyla değiştirin:On the last line, replace userPrincipalName_or_objectId with the UPN or object ID output from the previous command:

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 oluşturun ve YAML bildiriminizde dosya adını belirtin:Create the ClusterRoleBinding using the kubectl apply command and specify the filename of your YAML manifest:

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

Azure AD ile küme erişimiAccess cluster with Azure AD

Şimdi AKS kümesi için Azure AD kimlik doğrulaması tümleştirmesini test edelim.Now let's test the integration of Azure AD authentication for the AKS cluster. kubectlYapılandırma bağlamını normal kullanıcı kimlik bilgilerini kullanacak şekilde ayarlayın.Set the kubectl config context to use regular user credentials. Bu bağlam, tüm kimlik doğrulama isteklerini Azure AD aracılığıyla geri geçirir.This context passes all authentication requests back through Azure AD.

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

Şimdi kubectl Get Pod komutunu kullanarak tüm ad alanları genelinde Pod 'leri görüntüleyin:Now use the kubectl get pods command to view pods across all namespaces:

kubectl get pods --all-namespaces

Bir Web tarayıcısı kullanarak Azure AD kimlik bilgilerini kullanarak kimlik doğrulaması gerçekleştirmek için bir oturum açma istemi alırsınız.You receive a sign in prompt to authenticate using Azure AD credentials using a web browser. Kimliği başarıyla doğrulandıktan sonra, kubectl komut aşağıdaki örnek çıktıda gösterildiği gibi aks kümesindeki Pod 'leri görüntüler:After you've successfully authenticated, the kubectl command displays the pods in the AKS cluster, as shown in the following example output:

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

İçin alınan kimlik doğrulama belirteci kubectl Önbelleğe alındı.The authentication token received for kubectl is cached. Yalnızca belirtecin süresi dolduğunda veya Kubernetes yapılandırma dosyası yeniden oluşturulduğunda oturum açmanız yeniden istenir.You are only reprompted to sign in when the token has expired or the Kubernetes config file is re-created.

Aşağıdaki örnek çıktıda olduğu gibi bir Web tarayıcısını kullanarak başarıyla oturum açtıktan sonra bir yetkilendirme hata iletisi görürseniz, aşağıdaki olası sorunları kontrol edin:If you see an authorization error message after you've successfully signed in using a web browser as in the following example output, check the following possible issues:

error: You must be logged in to the server (Unauthorized)
  • Kullanıcı hesabının aynı Azure AD kiracısında olup olmadığı ile ilgili olarak uygun nesne KIMLIĞINI veya UPN 'yi tanımlamış olursunuz.You defined the appropriate object ID or UPN, depending on if the user account is in the same Azure AD tenant or not.
  • Kullanıcı 200 taneden fazla grubun üyesi değil.The user is not a member of more than 200 groups.
  • Sunucu için uygulama kaydında tanımlanan gizli dizi, kullanılarak yapılandırılan değerle eşleşiyor --aad-server-app-secretSecret defined in the application registration for server matches the value configured using --aad-server-app-secret

Sonraki adımlarNext steps

Bu makalede gösterilen komutları içeren tüm betik için, AKS örnekleri deposunda Azure AD tümleştirme betiğinebakın.For the complete script that contains the commands shown in this article, see the Azure AD integration script in the AKS samples repo.

Küme kaynaklarına erişimi denetlemek için Azure AD kullanıcılarını ve gruplarını kullanmak üzere, bkz. Kubernetes rol tabanlı erişim denetimi ve AKS 'Deki Azure AD kimliklerini kullanarak küme kaynaklarına erişimi denetleme.To use Azure AD users and groups to control access to cluster resources, see Control access to cluster resources using Kubernetes role-based access control and Azure AD identities in AKS.

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.For more information about how to secure Kubernetes clusters, see Access and identity options for AKS).

Kimlik ve kaynak denetiminde en iyi uygulamalar için bkz. AKS 'de kimlik doğrulama ve yetkilendirme Için en iyi uygulamalar.For best practices on identity and resource control, see Best practices for authentication and authorization in AKS.