Azure Kubernetes Service (AKS) ile Microsoft Entra İş Yükü Kimliği kullanma

Azure Kubernetes Services (AKS) kümesine dağıtılan iş yükleri, Azure Key Vault ve Microsoft Graph gibi Microsoft Entra korumalı kaynaklara erişmek için Microsoft Entra uygulama kimlik bilgilerini veya yönetilen kimlikleri gerektirir. Microsoft Entra İş Yükü Kimliği, dış kimlik sağlayıcılarıyla federasyon sağlamak için Kubernetes'e özgü özelliklerle tümleşir.

Microsoft Entra İş Yükü Kimliği, podların Kubernetes kimliğini (hizmet hesabı) kullanmasını sağlayan Hizmet Hesabı Belirteci Birim Projeksiyonu kullanır. Kubernetes belirteci verilir ve OIDC federasyonu , Kubernetes uygulamalarının ek açıklamalı hizmet hesapları temelinde Microsoft Entra Kimliği ile Azure kaynaklarına güvenli bir şekilde erişmesini sağlar.

Microsoft Entra İş Yükü Kimliği özellikle Uygulama kaydı kullanıyorsanız Azure Identity istemci kitaplıkları ve Microsoft Authentication Library (MSAL) koleksiyonu. İş yükünüz, Azure bulut kaynaklarının kimliğini sorunsuz bir şekilde doğrulamak ve bunlara erişmek için bu kitaplıklardan herhangi birini kullanabilir.

Bu makale, bu yeni kimlik doğrulama özelliğini anlamanıza yardımcı olur ve proje stratejinizi ve Microsoft Entra pod ile yönetilen kimlikten olası geçişi planlamak için kullanılabilen seçenekleri gözden geçirmenize yardımcı olur.

Not

Tüm adımları el ile yapılandırmak yerine, bazı adımları otomatik olarak yapılandırmanıza yardımcı olacak Service Bağlan adlı başka bir uygulama vardır. Ayrıca bkz. Hizmet Bağlan or nedir?

Bağımlılıklar

  • AKS, 1.22 ve üzeri sürümlerde Microsoft Entra İş Yükü Kimliği destekler.
  • Azure CLI sürüm 2.47.0 veya üzeri. Sürümü bulmak için komutunu az --version çalıştırın ve sürümü yükseltmek için komutunu çalıştırın az upgrade . Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Azure Identity istemci kitaplıkları

Azure Identity istemci kitaplıklarında aşağıdaki yaklaşımlardan birini seçin:

  • komutunu kullanın DefaultAzureCredential. Bu, kullanmayı dener WorkloadIdentityCredential.
  • içeren WorkloadIdentityCredentialbir ChainedTokenCredential örnek oluşturun.
  • Doğrudan kullanın WorkloadIdentityCredential .

Aşağıdaki tablo, her dil ekosisteminin istemci kitaplığı için gereken en düşük paket sürümünü sağlar.

Ekosistem Kitaplık En düşük sürüm
.NET Azure.Identity 1.9.0
C++ azure-identity-cpp 1.6.0
Go azidentity 1.3.0
Java azure-identity 1.9.0
Node.js @azure/kimlik 3.2.0
Python azure-identity 1.13.0

Aşağıdaki kod örneklerinde DefaultAzureCredential kullanılır. Bu kimlik bilgisi türü, Azure Key Vault ile kimlik doğrulaması yapmak için Azure İş Yükü Kimliği mutating web kancası tarafından eklenen ortam değişkenlerini kullanır.

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

string keyVaultUrl = Environment.GetEnvironmentVariable("KEYVAULT_URL");
string secretName = Environment.GetEnvironmentVariable("SECRET_NAME");

var client = new SecretClient(
    new Uri(keyVaultUrl),
    new DefaultAzureCredential());

KeyVaultSecret secret = await client.GetSecretAsync(secretName);

Microsoft Authentication Library (MSAL)

Aşağıdaki istemci kitaplıkları gereken en düşük sürümdür.

Ekosistem Kitaplık Görsel Örnek Windows var
.NET Dotnet için Microsoft Kimlik Doğrulama Kitaplığı ghcr.io/azure/azure-workload-identity/msal-net:latest Bağlantı Yes
Go Microsoft Authentication Library-for-go ghcr.io/azure/azure-workload-identity/msal-go:latest Bağlantı Yes
Java Java için Microsoft Kimlik Doğrulama Kitaplığı ghcr.io/azure/azure-workload-identity/msal-java:latest Bağlantı Hayır
JavaScript js için Microsoft Kimlik Doğrulama Kitaplığı ghcr.io/azure/azure-workload-identity/msal-node:latest Bağlantı Hayır
Python Python için Microsoft Kimlik Doğrulama Kitaplığı ghcr.io/azure/azure-workload-identity/msal-python:latest Bağlantı Hayır

Sınırlamalar

Nasıl çalışır?

Bu güvenlik modelinde AKS kümesi belirteç veren görevi görür; Microsoft Entra ID, ortak imzalama anahtarlarını bulmak ve bir Microsoft Entra belirteci için takas etmeden önce hizmet hesabı belirtecinin orijinalliğini doğrulamak için OpenID Bağlan kullanır. İş yükünüz, Azure Identity istemci kitaplığını veya Microsoft Kimlik Doğrulama Kitaplığı'nı kullanarak bir Microsoft Entra belirteci için birimine yansıtılan bir hizmet hesabı belirtecini değiştirebilir.

AKS iş yükü kimliği güvenlik modelinin diyagramı.

Aşağıdaki tabloda, Microsoft Entra İş Yükü Kimliği için gerekli OIDC veren uç noktaları açıklanmaktadır:

Uç nokta Açıklama
{IssuerURL}/.well-known/openid-configuration OIDC bulma belgesi olarak da bilinir. Bu, verenin yapılandırmalarıyla ilgili meta verileri içerir.
{IssuerURL}/openid/v1/jwks Bu, Microsoft Entra Id'nin hizmet hesabı belirtecinin orijinalliğini doğrulamak için kullandığı ortak imzalama anahtarlarını içerir.

Aşağıdaki diyagramda OpenID Bağlan kullanılarak kimlik doğrulama sırası özetlemektedir.

AKS iş yükü kimliği OIDC kimlik doğrulama dizisinin diyagramı.

Web Kancası Sertifikası Otomatik Döndürme

Diğer web kancası eklentilerine benzer şekilde, sertifika küme sertifikası otomatik döndürme işlemi tarafından döndürülür.

Hizmet hesabı etiketleri ve ek açıklamaları

Microsoft Entra İş Yükü Kimliği bir hizmet hesabıyla ilgili aşağıdaki eşlemeleri destekler:

  • Bir hizmet hesabının bir Microsoft Entra nesnesine başvurduğu bire bir.
  • Birden çok hizmet hesabının aynı Microsoft Entra nesnesine başvurduğu çoka bir.
  • Bir hizmet hesabının istemci kimliği ek açıklamasını değiştirerek birden çok Microsoft Entra nesnesine başvurduğu bire çok. Daha fazla bilgi için bkz . Kubernetes hizmet hesabıyla birden çok kimliği federasyona ekleme.

Not

Hizmet hesabı ek açıklamaları güncelleştirilirse değişikliklerin etkili olması için podu yeniden başlatmanız gerekir.

Microsoft Entra pod ile yönetilen kimlik kullandıysanız, bir hizmet hesabının Özel Kaynak Tanımı (CRD) yerine çekirdek Kubernetes API'sinin bir parçası olması dışında bir hizmet hesabını Azure Kimliği olarak düşünün. Aşağıda, Bir Microsoft Entra erişim belirteci için hizmet hesabı belirtecini takas ederken davranışı yapılandırmak için kullanılabilecek kullanılabilir etiketlerin ve ek açıklamaların listesi açıklanmaktadır.

Hizmet hesabı ek açıklamaları

Tüm ek açıklamalar isteğe bağlıdır. Ek açıklama belirtilmezse, varsayılan değer kullanılır.

Ek Açıklama Açıklama Varsayılan
azure.workload.identity/client-id Microsoft Entra uygulamasını temsil eder
pod ile kullanılacak istemci kimliği.
azure.workload.identity/tenant-id Azure kiracı kimliğini temsil eder ve
Microsoft Entra uygulaması kayıtlı.
AZURE_TENANT_ID ortam değişkeni ayıklandı
ConfigMap'ten azure-wi-webhook-config .
azure.workload.identity/service-account-token-expiration Için expirationSeconds alanı temsil eder
öngörülen hizmet hesabı belirteci. Kapalı kalma süresini önlemek için yapılandırdığınız isteğe bağlı bir alandır
hizmet hesabı belirteci yenilemesi sırasında oluşan hatalara neden oldu. Kubernetes hizmet hesabı belirtecinin süre sonu Microsoft Entra belirteçleriyle ilişkili değildir. Microsoft Entra belirteçleri verildikten sonra 24 saat içinde sona erer.
3600
Desteklenen aralık 3600-86400'dür.

Pod etiketleri

Not

İş yükü kimliği kullanan uygulamalarda, iş yükü kimliğini kullanması gereken podlar için tutarlı ve güvenilir bir davranış sağlamak üzere iş yükü kimliğini bir Başarısız Kapatma senaryosuna taşımak üzere AKS'nin pod belirtimine etiketin azure.workload.identity/use: "true" eklenmesi gerekir. Aksi takdirde podlar yeniden başlatıldıktan sonra başarısız olur.

Etiket Açıklama Önerilen değer Zorunlu
azure.workload.identity/use Bu etiket pod şablonu belirtiminde gereklidir. Azure'a özgü ortam değişkenlerini ve öngörülen hizmet hesabı belirteci birimini eklemek için yalnızca bu etikete sahip podlar azure-workload-identity mutating erişim web kancası tarafından kapatılır. true Yes

Pod ek açıklamaları

Tüm ek açıklamalar isteğe bağlıdır. Ek açıklama belirtilmezse, varsayılan değer kullanılır.

Ek Açıklama Açıklama Varsayılan
azure.workload.identity/service-account-token-expiration expirationSeconds Öngörülen hizmet hesabı belirtecinin alanını temsil eder. Bu, hizmet hesabı belirteci yenilemesi sırasında oluşan hataların neden olduğu kapalı kalma süresini önlemek için yapılandırdığınız isteğe bağlı bir alandır. Kubernetes hizmet hesabı belirtecinin süre sonu Microsoft Entra belirteçleriyle ilişkili değildir. Microsoft Entra belirteçleri verildikten sonra 24 saat içinde sona erer. 1 3600
Desteklenen aralık 3600-86400'dür.
azure.workload.identity/skip-containers Öngörülen hizmet hesabı belirteç birimi eklemeyi atlamak için kapsayıcıların noktalı virgülle ayrılmış listesini temsil eder. Örneğin, container1;container2. Varsayılan olarak, hizmet hesabı ile azure.workload.identity/use: trueetiketlenmişse, öngörülen hizmet hesabı belirteç birimi tüm kapsayıcılara eklenir.
azure.workload.identity/inject-proxy-sidecar Ara sunucu başlatma kapsayıcısı ve ara sunucu sepetlerini pod'a ekler. Ara sunucu sepet, I AVH'a yönelik belirteç isteklerini kesmek ve federasyon kimliği kimlik bilgilerine sahip kullanıcı adına bir Microsoft Entra belirteci almak için kullanılır. true
azure.workload.identity/proxy-sidecar-port Proxy sepet bağlantı noktasını temsil eder. 8000

1 Hizmet hesabına da ek açıklama eklendiğinde öncelik kazanır.

İş yükü kimliğine geçiş

Zaten pod ile yönetilen bir kimlik çalıştıran bir kümede, bunu iki yoldan birini iş yükü kimliğini kullanacak şekilde yapılandırabilirsiniz. İlk seçenek, pod ile yönetilen kimlik için uyguladığınız yapılandırmayı bugün kullanmanıza olanak tanır. Ad alanı içindeki hizmet hesabına kimlikle açıklama eklemeniz yeterlidir ve iş yükü kimliğinin ek açıklamaları podlara eklemesini sağlar.

İkinci seçenek, Uygulamanızı Azure Identity istemci kitaplığının en son sürümünü kullanacak şekilde yeniden yazmaktır.

Geçiş işlemini kolaylaştırmaya ve kolaylaştırmaya yardımcı olmak için uygulamanızın yaptığı I AVH işlemlerini OpenID Bağlan(OIDC) uygulamasına dönüştüren bir geçiş sepet geliştirdik. Geçiş sepetleri uzun vadeli bir çözüm olarak tasarlanmamıştır ancak iş yükü kimliğiyle çalışmaya başlamanın bir yoludur. Uygulamanızda geçiş sepetini çalıştırmak, uygulama I AVH işlemlerini OIDC'ye bağlar. Alternatif yaklaşım, OIDC kimlik doğrulamasını destekleyen Azure Identity istemci kitaplığının desteklenen bir sürümüne yükseltmektir.

Aşağıdaki tabloda iş yükü kimliğine yönelik geçiş veya dağıtım önerilerimiz özetlemektedir.

Senaryo Açıklama
Yeni veya mevcut küme dağıtımı Azure Identity istemci kitaplığının desteklenen bir sürümünü çalıştırır Geçiş adımı gerekmez.
Örnek dağıtım kaynakları:
- Yeni bir kümede iş yükü kimliğini dağıtma ve yapılandırma
- Öğretici: AKS'de bir uygulamayla iş yükü kimliği kullanma
Yeni veya mevcut küme dağıtımı Azure Identity istemci kitaplığının desteklenmeyen bir sürümünü çalıştırıyor Kapsayıcı görüntüsünü Azure Kimlik SDK'sının desteklenen bir sürümünü kullanacak şekilde güncelleştirin veya geçiş sepetini kullanın.

Sonraki adımlar

  • Geçiş seçeneği olarak iş yükü kimliğini kullanarak kimlik doğrulaması yapmak üzere podunuzu ayarlamayı öğrenmek için bkz . İş yükü kimliğiyle uygulama kimlik doğrulamasını modernleştirme.
  • Azure Kubernetes Service kümesi dağıtmanıza ve örnek bir uygulamayı iş yükü kimliği kullanacak şekilde yapılandırmanıza yardımcı olan Azure Kubernetes Service'te (AKS) bir uygulamayla iş yükü kimliği kullanma öğreticisine bakın.