Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 bir Kubernetes kimliği kullanmasını sağlamak için Hizmet Hesabı Belirteci Birim Projeksiyonunu (yani, bir hizmet hesabı) kullanır. Kubernetes token verilir ve OIDC federasyonu, Kubernetes uygulamalarının ek açıklamalı hizmet hesaplarına dayanarak Microsoft Entra ID ile Azure kaynaklarına güvenli bir şekilde erişimini sağlar.
Microsoft Entra İş Yükü Kimliği, özellikle Azure Identity istemci kitaplıkları veya Microsoft Authentication Library (MSAL) koleksiyonu ve uygulama kaydı ile özellikle iyi çalışır. İş 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ınaz 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:
-
DefaultAzureCredential
kullanın, çünkü buWorkloadIdentityCredential
kullanmayı dener. - Bir
ChainedTokenCredential
örneği oluşturun veWorkloadIdentityCredential
ekleyin. -
WorkloadIdentityCredential
doğrudan kullanın.
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/identity | 3.2.0 |
Python | azure-identity | 1.13.0 |
Aşağıdaki kod örneklerinde DefaultAzureCredential
kullanılır. Bu kimlik bilgisi türü, Azure İşyükü Kimliği değiştiren webhook tarafından eklenen ortam değişkenlerini kullanarak Azure Key Vault ile kimlik doğrulaması yapar. Diğer yaklaşımlardan birini kullanarak örnekleri görmek için yukarıdaki Ekosisteme özgü istemci kitaplığı bağlantılarına bakın.
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
- Yönetilen kimlik başına en fazla 20 federe kimlik bilgisi olabilir.
- Şirket dışı kimlik bilgilerinin ilk eklendikten sonra yayılması birkaç saniye sürer.
- Sanal Kubelet açık kaynak projesine dayalı olarak eklenen sanal düğümler desteklenmez.
- Bu bölgelerde kullanıcı tarafından atanan yönetilen kimliklerde federasyon kimlik bilgilerinin oluşturulması desteklenmez.
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ığı veya Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanarak, birimine yansıtılan hizmet hesabı belirtecini bir Microsoft Entra belirteci ile değiştirebilir.
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.
Webhook Sertifikası Otomatik Yenileme
Diğer webhook eklentilerine benzer şekilde, sertifika küme sertifikası otomatik yenileme işlemi tarafından yenilenir.
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ı Azure güvenlik sorumlusu olarak düşünün, ancak bu hesap çekirdek Kubernetes API'sinin bir parçasıdır, Özel Kaynak Tanımı (CRD) yerine. 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. Microsoft Entra uygulaması kayıt edildi. |
AZURE_TENANT_ID ortam değişkeni ayıklandı ConfigMap'ten azure-wi-webhook-config . |
azure.workload.identity/service-account-token-expiration |
expirationSeconds alanı için 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üresinin dolması, Microsoft Entra belirteçleriyle ilişkilendirilmemiştir. Microsoft Entra jetonları verildikten sonra 24 saat içinde geçerliliğini yitirir. |
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 azure.workload.identity/use: "true"
senaryosuna taşımak üzere AKS'nin pod belirtimine etiketin 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. | doğru | 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üresinin dolması, Microsoft Entra belirteçleriyle bağlantılı değildir. Microsoft Entra jetonları verildikten sonra 24 saat içinde sona erer.
1 |
3600 Desteklenen aralık 3600-86400'dür. |
azure.workload.identity/skip-containers |
Projeksiyon hizmet hesabı belirteç biriminin eklenmesini atlayacak kapsayıcıların noktalı virgülle ayrılmış listesini temsil eder. Örneğin, container1;container2 . |
Varsayılan olarak, pod azure.workload.identity/use: true ile etiketlenmişse, öngörülen hizmet hesabı belirteci hacmi tüm kapsayıcılara eklenir. |
azure.workload.identity/inject-proxy-sidecar |
Pod'a ara sunucu başlatma kapsayıcısı ve ara sunucu yan aracını enjekte eder. Proxy sidecar, IMDS'ye yönelik belirteç isteklerini kesmek ve federe kimlik bilgisine sahip kullanıcı adına bir Microsoft Entra belirteci almak için kullanılır. | doğru |
azure.workload.identity/proxy-sidecar-port |
Proxy sidecar'ının 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'ne 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ğini etkinleştirmek ve ek açıklamaları pod'lara entegre etmek için ad alanı içindeki hizmet hesabını kimlik ile açıklayabilirsiniz.
İkinci seçenek, Uygulamanızı Azure Identity istemci kitaplığının en son sürümünü kullanacak şekilde yeniden yazmaktır.
Geçiş sürecini daha da akıcı ve kolay hale getirmek için, uygulamanızın yaptığı IMDS işlemlerini OpenID Connect'e (OIDC) dönüştüren bir geçiş yan aracı geliştirdik. Geçiş yan operasyonu uzun vadeli bir çözüm olarak tasarlanmamıştır, ancak iş yükü kimliğiyle hızlı bir şekilde çalışmaya başlamanın bir yoludur. Uygulamanızda geçiş yan aracı çalıştırmak, uygulama IMDS işlemlerini OIDC'ye iletir. 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
- 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.
- Bkz İş yükü kimliği ile AKS kümesi dağıtma ve yapılandırma. Bu, bir Azure Kubernetes Service kümesi dağıtmanıza ve örnek bir uygulamayı bir iş yükü kimliği kullanacak şekilde yapılandırmanıza yardımcı olur.
Azure Kubernetes Service