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ı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:
- komutunu kullanın
DefaultAzureCredential
. Bu, kullanmayı denerWorkloadIdentityCredential
. - içeren
WorkloadIdentityCredential
birChainedTokenCredential
ö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
- Yönetilen kimlik başına en fazla 20 federasyon kimliği kimlik bilgileriniz 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ığı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.
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.
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: true etiketlenmiş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
- 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 . Azure Kubernetes Service kümesini dağıtmanıza ve örnek bir uygulamayı iş yükü kimliği kullanacak şekilde yapılandırmanıza yardımcı olan aks kümesini iş yükü kimliğiyle dağıtma ve yapılandırma.
Azure Kubernetes Service