Aracılığıyla paylaş


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ği kullanmasını sağlamak için Hizmet Hesabı Belirteci Birim Projeksiyonunu (bir hizmet hesabı) kullanır. Kubernetes belirteci verilir ve OIDC federasyonu , Kubernetes uygulamalarının ek açıklamalı hizmet hesapları temelinde Microsoft Entra Id ile Azure kaynaklarına güvenli bir şekilde erişmesini sağlar.

Microsoft Entra İş Yükü Kimliği özellikle Azure Identity istemci kitaplıkları veya Microsoft Authentication Library (MSAL) koleksiyonu ile birlikte uygulama kaydı. İş 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, Microsoft Entra İş Yükü Kimliği anlamanıza yardımcı olur ve proje stratejinizi ve Microsoft Entra pod ile yönetilen kimlikten olası geçişi planlamak için sağlanan seçenekleri gözden geçirmenize yardımcı olur.

Not

Bazı adımları otomatik olarak yapılandırmanıza yardımcı olması için Service Connector'ı kullanabilirsiniz. Ayrıca bkz. Service Connector 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 olarak görev yapar. Microsoft Entra Id, genel imzalama anahtarlarını bulmak ve bir Microsoft Entra belirteci için takas etmeden önce hizmet hesabı belirtecinin orijinalliğini doğrulamak için OpenID Connect'i kullanır. İş yükünüz, Azure Identity istemci kitaplığını veya Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) 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 Connect kullanan kimlik doğrulama dizisi ö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:

  • Bire bir, bir hizmet hesabının bir Microsoft Entra nesnesine başvurduğu yerdir.
  • Birden çok hizmet hesabının aynı Microsoft Entra nesnesine başvurduğu çoka bir.
  • Bire çok; burada bir hizmet hesabı istemci kimliği ek açıklamasını değiştirerek birden çok Microsoft Entra nesnesine başvurur. 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 pod'un yeniden başlatılması gerekir.

Microsoft Entra pod ile yönetilen kimliği 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 güvenlik sorumlusu olarak düşünün. Aşağıdaki bölümlerde, 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. Proxy sepet, IMDS'ye 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.

Microsoft Entra İş Yükü Kimliği'a 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ı kullanmanıza olanak tanır. Microsoft Entra İş Yükü Kimliği etkinleştirmek ve ek açıklamaları podlara eklemek için ad alanı içindeki hizmet hesabına kimlikle ek açıklama ekleyebilirsiniz.

İ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ığı IMDS işlemlerini OpenID Connect'e (OIDC) 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 IMDS 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
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