Aracılığıyla paylaş


Azure Kubernetes Service'te kullanıcıların kimliğini doğrulamak için kubelogin kullanma

Azure'daki kubelogin eklentisi, Microsoft Entra kimlik doğrulamasını uygulayan bir client-go kimlik bilgisi eklentisidir . kubelogin eklentisi, kubectl komut satırı aracında bulunmayan özellikler sunar. Daha fazla bilgi için bkz . kubelogin tanıtımı ve kubectl tanıtımı.

Microsoft Entra ID ile tümleştirilmiş ve Kubernetes sürüm 1.24 veya üzerini çalıştıran Azure Kubernetes Service (AKS) kümeleri otomatik olarak kubelogin biçimini kullanır.

Bu makalede AKS'de desteklenen tüm Microsoft Entra kimlik doğrulama yöntemleri için kubelogin'in nasıl kullanılacağına ilişkin genel bir bakış ve örnekler sağlanmaktadır.

Sınırlamalar

  • Microsoft Entra JSON Web Belirteci (JWT) talebine en fazla 200 grup ekleyebilirsiniz. 200'den fazla grubunuz varsa uygulama rollerini kullanmayı göz önünde bulundurun.
  • Microsoft Entra ID'de oluşturulan gruplar yalnızca ObjectID değerleriyle eklenir, görünen adlarıyla dahil edilir. sAMAccountName Komutu yalnızca şirket içi Windows Server Active Directory'den eşitlenen gruplar için kullanılabilir.
  • AKS'de hizmet sorumlusu kimlik doğrulama yöntemi, azure active directory'nin önceki sürümüyle değil, yalnızca yönetilen Microsoft Entra Kimliği ile çalışır.
  • Microsoft Entra Koşullu Erişim ilkesi bir Microsoft Entra kiracısı üzerinde ayarlandığında cihaz kodu kimlik doğrulama yöntemi çalışmaz. Bu senaryoda web tarayıcısı etkileşimli kimlik doğrulamasını kullanın.

Kimlik doğrulaması nasıl çalışır?

Kubelogin ile çoğu etkileşimde alt komutu convert-kubeconfig kullanırsınız. Alt komut, belirtilen kimlik doğrulama yöntemine göre son kubeconfig dosyasını exec biçimine dönüştürmek için veya ortam değişkeninde KUBECONFIG belirtilen --kubeconfig kubeconfig dosyasını kullanır.

Kubelogin'in uyguladığı kimlik doğrulama yöntemleri Microsoft Entra OAuth 2.0 belirteç verme akışlarıdır. Aşağıdaki parametre bayrakları kubelogin alt komutlarında yaygın olarak kullanılır. Genel olarak, aks'den kubeconfig dosyasını aldığınızda bu bayraklar kullanıma hazırdır.

  • --tenant-id: Microsoft Entra kiracı kimliği.
  • --client-id: Genel istemci uygulamasının uygulama kimliği. Bu istemci uygulaması yalnızca cihaz kodu, web tarayıcısı etkileşimli ve OAuth 2.0 Kaynak Sahibi Parola Kimlik Bilgileri (ROPC) (iş akışı kimliği) oturum açma yöntemlerinde kullanılır.
  • --server-id: Web uygulamasının veya kaynak sunucusunun uygulama kimliği. Belirteç bu kaynağa verilir.

Not

Her kimlik doğrulama yönteminde belirteç dosya sisteminde önbelleğe alınmaz.

Kimlik doğrulama yöntemleri

Sonraki bölümlerde desteklenen kimlik doğrulama yöntemleri ve bunların nasıl kullanılacağı açıklanmaktadır:

  • Cihaz kodu
  • Azure CLI
  • Web tarayıcısı etkileşimli
  • Hizmet sorumlusu
  • Yönetilen kimlik
  • İş yükü kimliği

Cihaz kodu

Cihaz kodu, alt komut için convert-kubeconfig varsayılan kimlik doğrulama yöntemidir. -l devicecode parametresi isteğe bağlıdır. Bu kimlik doğrulama yöntemi, kullanıcının tarayıcı oturumundan oturum açması için cihaz kodunu ister.

kubelogin ve exec eklentileri kullanılmadan önce kubectl'deki Azure kimlik doğrulama yöntemi yalnızca cihaz kodu akışını desteklemektedir. Ön eke sahip talebi olan bir belirteç oluşturan kitaplığın audience önceki bir spn: sürümünü kullandı. Aks tarafından yönetilen ve adına (OBO) akış kullanan Microsoft Entra Id ile uyumlu değildir. Alt komutu çalıştırdığınızda convert-kubeconfig kubelogin, izleyici talebinden spn: ön eki kaldırır.

Gereksinimleriniz önceki sürümlerden işlevsellik kullanmayı kapsiyorsa bağımsız değişkenini --legacy ekleyin. Kubeconfig dosyasını önceki bir Azure Active Directory kümesinde kullanıyorsanız kubelogin bayrağını otomatik olarak ekler --legacy .

Bu oturum açma yönteminde erişim belirteci ve yenileme belirteci ${HOME}/.kube/cache/kubelogin dizininde önbelleğe alınır. Bu yolu geçersiz kılmak için parametresini --token-cache-dir ekleyin.

AKS Microsoft Entra tümleşik kümeniz Kubernetes 1.24 veya önceki bir sürümünü kullanıyorsa, aşağıdaki komutları çalıştırarak kubeconfig dosya biçimini el ile dönüştürmeniz gerekir:

export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Önbelleğe alınmış belirteçleri temizlemek için aşağıdaki komutu çalıştırın:

kubelogin remove-tokens

Not

Microsoft Entra kiracısında koşullu erişim ilkesi yapılandırıldığında cihaz kodu oturum açma yöntemi çalışmaz. Bu senaryoda web tarayıcısı etkileşimli yöntemini kullanın.

Azure CLI

Azure CLI kimlik doğrulama yöntemi, erişim belirtecini almak için Azure CLI'nin oluşturduğu oturum açma bağlamını kullanır. Belirteç, ile aynı Microsoft Entra kiracısında az loginverilir. kubelogin, belirteç önbellek dosyasına belirteç yazmaz çünkü bunlar zaten Azure CLI tarafından yönetilir.

Not

Bu kimlik doğrulama yöntemi yalnızca AKS tarafından yönetilen Microsoft Entra Kimliği ile çalışır.

Aşağıdaki örnekte, kimlik doğrulaması için Azure CLI yönteminin nasıl kullanılacağı gösterilmektedir:

az login

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l azurecli

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Azure CLI yapılandırma dizini ${HOME} dizininin dışındaysa, alt komutla parametresini convert-kubeconfig kullanın--azure-config-dir. komutu, ortam değişkeni yapılandırılmış kubeconfig dosyasını oluşturur. Bir kubectl komutu çalıştırdığınızda ortam değişkenini AZURE_CONFIG_DIR bu dizine ayarlayarak aynı yapılandırmayı alabilirsiniz.

Web tarayıcısı etkileşimli

Web tarayıcısı etkileşimli kimlik doğrulama yöntemi, kullanıcıda oturum açmak için otomatik olarak bir web tarayıcısı açar. Kullanıcının kimliği doğrulandıktan sonra tarayıcı, doğrulanmış kimlik bilgilerini kullanarak yerel web sunucusuna yönlendirilir. Bu kimlik doğrulama yöntemi Koşullu Erişim ilkesiyle uyumlu.

Bu yöntemi kullanarak kimlik doğrulaması yaptığınızda, erişim belirteci ${HOME}/.kube/cache/kubelogin dizininde önbelleğe alınır. parametresini --token-cache-dir kullanarak bu yolu geçersiz kılabilirsiniz.

Taşıyıcı belirteci

Aşağıdaki örnekte, web tarayıcısı etkileşimli akışı ile taşıyıcı belirtecinin nasıl kullanılacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l interactive

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Sahiplik Kanıtı belirteci

Aşağıdaki örnekte, web tarayıcısı etkileşimli akışıyla SahipLik Kanıtı (PoP) belirtecinin nasıl kullanılacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Hizmet sorumlusu

Bu kimlik doğrulama yöntemi, kullanıcıda oturum açmak için bir hizmet sorumlusu kullanır. Bir ortam değişkeni ayarlayarak veya bir komut satırı bağımsız değişkeninde kimlik bilgilerini kullanarak kimlik bilgilerini sağlayabilirsiniz. Kullanabileceğiniz desteklenen kimlik bilgileri bir parola veya Kişisel Bilgi Değişimi (PFX) istemci sertifikasıdır.

Bu yöntemi kullanmadan önce aşağıdaki sınırlamaları göz önünde bulundurun:

  • Bu yöntem yalnızca yönetilen Microsoft Entra Kimliği ile çalışır.
  • Hizmet sorumlusu en fazla 200 Microsoft Entra grubunun üyesi olabilir.

Ortam değişkenleri

Aşağıdaki örnekte, ortam değişkenlerini kullanarak bir istemci gizli dizisinin nasıl ayarlanacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<Service Principal Name (SPN) client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Ardından şu komutu çalıştırın:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_SECRET=<SPN secret>

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Komut satırı bağımsız değişkeni

Aşağıdaki örnekte, bir komut satırı bağımsız değişkeninde istemci gizli dizisinin nasıl ayarlanacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn --client-id <SPN client ID> --client-secret <SPN client secret>

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Uyarı

Komut satırı bağımsız değişkeni yöntemi, gizli diziyi kubeconfig dosyasında depolar.

İstemci sertifikası

Aşağıdaki örnekte, istemci sertifikası kullanarak bir istemci gizli dizisinin nasıl ayarlanacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE=/path/to/cert.pfx
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE_PASSWORD=<PFX password>

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Ardından şu komutu çalıştırın:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_CERTIFICATE_PATH=/path/to/cert.pfx
export AZURE_CLIENT_CERTIFICATE_PASSWORD=<PFX password>

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

PoP belirteci ve ortam değişkenleri

Aşağıdaki örnekte, ortam değişkenlerinden aldığı bir istemci gizli dizisini kullanan bir PoP belirtecinin nasıl ayarlanacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Yönetilen kimlik

Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlanan uygulamalar için yönetilen kimlik doğrulama yöntemini kullanın. Örnek olarak Azure sanal makinesi, sanal makine ölçek kümesi veya Azure Cloud Shell gibi Azure kaynaklarına erişim verilebilir.

Varsayılan yönetilen kimlik

Aşağıdaki örnekte, varsayılan yönetilen kimliğin nasıl kullanılacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l msi

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

Belirli kimlik

Aşağıdaki örnekte, yönetilen kimliğin belirli bir kimlikle nasıl kullanılacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l msi --client-id <msi-client-id>

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

İş yükü kimliği

İş yükü kimliği kimlik doğrulama yöntemi, AKS kümelerine erişimin kimliğini doğrulamak için Microsoft Entra ile birleştirilmiş kimlik kimlik bilgilerini kullanır. yöntemi Microsoft Entra tümleşik kimlik doğrulamasını kullanır. Aşağıdaki ortam değişkenlerini ayarlayarak çalışır:

  • AZURE_CLIENT_ID: İş yükü kimliğiyle birleştirilmiş Microsoft Entra uygulama kimliği.
  • AZURE_TENANT_ID: Microsoft Entra kiracı kimliği.
  • AZURE_FEDERATED_TOKEN_FILE: Kubernetes tarafından öngörülen hizmet hesabı (JWT) belirteci gibi iş yükü kimliğinin imzalı onayını içeren dosya.
  • AZURE_AUTHORITY_HOST: Microsoft Entra yetkilisinin temel URL'si. Örneğin, https://login.microsoftonline.com/.

Hizmet sorumlusu kimlik bilgilerini dış sistemlerde depolamadan GitHub veya ArgoCD gibi CI/CD sistemlerinden Kubernetes kümelerine erişmek için bir iş yükü kimliği kullanabilirsiniz. GitHub'dan OpenID Connect (OIDC) federasyonu yapılandırmak için OIDC federasyon örneğine bakın.

Aşağıdaki örnekte iş yükü kimliğinin nasıl kullanılacağı gösterilmektedir:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l workloadidentity

Düğüm bilgilerini almak için şu kubectl komutunu çalıştırın:

kubectl get nodes

AKS ile kubelogin kullanma

AKS, bir çift birinci taraf Microsoft Entra uygulaması kullanır. Bu uygulama kimlikleri tüm ortamlarda aynıdır.

Sunucu tarafının kullandığı AKS Microsoft Entra sunucusu uygulama kimliğidir 6dae42f8-4368-4678-94ff-3960e28e3630. Bu uygulama için AKS kümelerine erişen erişim belirteci verilmelidir. Çoğu kubelogin kimlik doğrulama yönteminde ile kubelogin get-tokenkullanmanız --server-id gerekir.

Kubelogin'in kullanıcı adına genel istemci kimlik doğrulaması gerçekleştirmek için kullandığı AKS Microsoft Entra istemci uygulama kimliğidir 80faf920-1908-4b52-b5ef-a8e7bedfc67a. İstemci uygulama kimliği, cihaz kodunda ve web tarayıcısı etkileşimli kimlik doğrulama yöntemlerinde kullanılır.

  • AKS tarafından yönetilen Microsoft Entra ID tümleştirmesi nasıl yapılır makalesinde AKS'yi Microsoft Entra ID ile tümleştirmeyi öğrenin.
  • AKS'de yönetilen kimlikleri kullanmaya başlamak için bkz . AKS'de yönetilen kimlik kullanma.
  • AKS'de iş yükü kimliklerini kullanmaya başlamak için bkz . AKS'de iş yükü kimliği kullanma.