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.
AKS kümesinde 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ştirilir ve diğer hizmet ve kaynaklara kimlik doğrulaması yapmak ve bunlara erişmek için iş yüklerinize iş yükü kimlikleri atamanıza olanak sağlar.
Not
İş yükü kimliği, AKS'deki poddan Azure kimlik senaryolarını kapsar. Podlarda çalışan uygulamaların Microsoft Entra korumalı hizmetlerde kimlik doğrulaması nasıl yapılır. AKS Otomatik'te, Microsoft Entra İş Yükü Kimliği ve OIDC kümesi verene sahip iş yükü kimliği varsayılan olarak önceden yapılandırılmıştır; küme düzeyinde kurulum gerekmez. AKS Standard'da iş yükü kimliğini ayrı ayrı etkinleştirir ve yapılandırabilirsiniz. Diğer kimlik senaryoları (denetim düzlemi kimlik doğrulaması ve yetkilendirmesi ve kümeden Azure'a yönetilen kimlikler) için bkz. AKS için erişim ve kimlik seçenekleri.
Tip
AKS Otomatik kümesi kullanıyorsanız, Microsoft Entra İş Yükü Kimliği ve OIDC kümesi verene sahip iş yükü kimliği varsayılan olarak önceden yapılandırılmıştır. Küme düzeyinde kurulumu atlayabilir ve uygulamanızı bir iş yükü kimliği kullanacak şekilde yapılandırmaya doğrudan gidebilirsiniz. AKS Automatic güvenlik varsayılanları hakkında daha fazla bilgi için bkz. Azure Kubernetes Service Automatic nedir?
Microsoft Entra İş Yükü Kimliği, podların Kubernetes kimliği kullanmasını sağlamak için Hizmet Hesabı Belirteci Birim Projeksiyonunu kullanır. Kubernetes belirteci verilir ve OpenID Connect (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ğini Azure Kimlik istemci kitaplıklarıyla veya Microsoft Kimlik Doğrulama Kitaplığı (MSAL) koleksiyonuyla birlikte uygulama kaydıyla birlikte kullanarak Azure bulut kaynaklarına sorunsuz bir şekilde kimlik doğrulaması yapabilir ve bu kaynaklara erişebilirsiniz.
Not
Bazı adımları otomatik olarak yapılandırmanıza yardımcı olması için Service Connector'ı kullanabilirsiniz. Daha fazla bilgi için bkz. Hizmet Bağlayıcısı nedir?
Önkoşullar
AKS Otomatik kümeleri
AKS Otomatik kümelerinde iş yükü kimliği ve OIDC küme yayımlayıcısı, kümenin güvenlik varsayılanlarının bir parçası olarak önceden yapılandırılmıştır. Podlarınızda iş yükü kimliğini kullanmadan önce küme düzeyinde yapılandırma gerekmez. Uygulamanızı ayarlamaya doğrudan devam edin.
AKS Standart kümeleri
- 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. - Podlarınızın iş yükü kimliğini kullanabilmesi için önce kümenizde iş yükü kimliğini ve OIDC vereni etkinleştirmeniz gerekir. Bkz. AKS kümesinde iş yükü kimliğini dağıtma ve yapılandırma.
Sınırlamalar
- Yönetilen kimlik başına en fazla 20 federe kimlik bilgisi olabilir.
- Federasyon kimliği kimlik bilgilerinin başlangıçta eklendikten sonra yayılması birkaç saniye sürer.
- Sanal Kubelet açık kaynak projesini temel alan sanal düğümler eklentisi desteklenmez.
- Bu bölgelerde kullanıcı tarafından atanan yönetilen kimliklerde federasyon kimliği kimlik bilgilerinin oluşturulması desteklenmez.
Azure Identity istemci kitaplıkları
Azure Identity istemci kitaplıklarında aşağıdaki yaklaşımlardan birini seçin:
-
DefaultAzureCredentialkullanın, çünkü buWorkloadIdentityCredentialkullanmayı dener. - Bir
ChainedTokenCredentialörneği oluşturun veWorkloadIdentityCredentialekleyin. -
WorkloadIdentityCredentialdoğrudan kullanın.
WorkloadIdentityCredential ile belirteç isterken, <resource>/.default gibi kapsamları Microsoft Entra ID v2 biçiminde https://management.azure.com/.default iletin.
https://management.azure.com/ gibi ham bir kaynak URI’si, iş yükü kimliği yönetilen kimliğin kullandığı IMDS resource akışı yerine Microsoft Entra v2 belirteç uç noktasını kullandığından başarısız olabilir. Kapsamların v2 belirteç uç noktasında nasıl çalıştığı hakkında daha fazla bilgi için bkz. Belirteç alma.
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 |
Azure Identity istemci kitaplığı kod örnekleri
Aşağıdaki kod örnekleri DefaultAzureCredential kullanır. Bu kimlik bilgisi türü, Azure Key Vault ile kimlik doğrulaması yapmak için iş yükü kimliğini değiştiren webhook tarafından eklenen ortam değişkenlerini kullanır. Diğer yaklaşımlardan birini kullanarak örnekleri görmek için ekosisteme özgü istemci kitaplıklarına bakın.
<key-vault-url> ve <secret-name> değerlerini Key Vault'unuz ve gizli diziniz için uygun değerlerle değiştirin.
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
string keyVaultUrl = Environment.GetEnvironmentVariable("<key-vault-url>");
string secretName = Environment.GetEnvironmentVariable("<secret-name>");
var client = new SecretClient(
new Uri(keyVaultUrl),
new DefaultAzureCredential());
KeyVaultSecret secret = await client.GetSecretAsync(secretName);
Microsoft Kimlik Doğrulama Kitaplığı (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 |
Nasıl çalışır?
Bu güvenlik modelinde AKS kümesi belirteç veren olarak görev yapar. Microsoft Entra ID, açık imzalama anahtarlarını keşfetmek ve bir Microsoft Entra jetonu için takas etmeden önce hizmet hesabı jetonunun doğruluğunu doğrulamak için OIDC kullanır. İş yükünüz, Azure Identity istemci kitaplığını veya MSAL'yi kullanarak bir Microsoft Entra belirteci almak için birimine yansıtılan 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 OIDC kullanarak kimlik doğrulama dizisi özetlemektedir:
Webhook sertifikası otomatik yenileme
Diğer webhook eklentilerine benzer şekilde, küme sertifikası otomatik döndürme işlemi iş yükü kimliği webhook sertifikasını döndürü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 referans verdiği durumdur.
- Birden çok hizmet hesabının aynı Microsoft Entra nesnesine başvurduğu çoktan-bire.
- 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 federe etme.
Not
Hizmet hesabı ek açıklamalarını güncelleştirirseniz 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 kullanabileceğiniz 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 Öngörülen hizmet hesabı jetonunun alanını temsil eder. Bu, hizmet hesabı belirteci yenilenmesi sırasında karşılaşılan hataların neden olduğu aksaklık 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 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
Microsoft Entra İş 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 eklemek ve öngörülen hizmet hesabı belirteci birimini yerleştirmek için yalnızca bu etikete sahip podlar, azure-workload-identity mutating kabul web kancası tarafından değiştirilmektedir. | 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 |
Ayrıntılar için bkz. Hizmet hesabı ek açıklamaları . Pod ek açıklamaları, hizmet hesabı ek açıklamalarından öncelik taşır. | 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. | yanlış |
azure.workload.identity/proxy-sidecar-port |
Proxy sidecar'ının bağlantı noktasını temsil eder. | 8000 |
Aynı iş yükünde kimlik bağlamalarını ve doğrudan federasyonu kullanın
Kimlik bağlamaları , iş yükü kimliğini büyük ölçekli AKS ortamlarını destekleyecek şekilde genişleten bir önizleme özelliğidir. Kimlik bağlamaları, her küme için bir federasyon kimlik bilgisi (FIC) oluşturmak yerine, birden çok kümenin tek bir FIC aracılığıyla kullanıcı tarafından atanan tek bir yönetilen kimliği paylaşmasına olanak tanır. Etkinleştirildiğinde AKS, pod belirteci isteklerini, iş yükü adına belirteç değişimini gerçekleştiren bir kimlik bağlama ara sunucu webhook'u üzerinden yönlendirir.
Öngörülen hizmet hesabı belirtecinin tek bir hedef kitlesi vardır. Kimlik bağlamaları etkinleştirildiğinde, kimlik bağlama webhook’u, kimlik bağlama proxy’sinin kullandığı AZURE_FEDERATED_TOKEN_FILE hedef kitlesine api://AKSIdentityBinding ile başvurulan varsayılan belirteci ayarlar.
Doğrudan Microsoft Entra İş Yükü Kimliği federasyonu (kimlik bağlamaları olmadan) hedef kitlesine api://AzureADTokenExchangesahip bir belirteç gerektirir. Federe kimlik bilgisinin hedef kitlesi belirtecin hedef kitlesiyle eşleşmediğinden, kimlik bağlama belirteç dosyasının doğrudan federasyon için yeniden kullanılması AADSTS700212 ile başarısız olur.
Aynı iş yükünde, bir yönetilen kimlik için kimlik bağlamalarını ve başka bir yönetilen kimlik için doğrudan federasyonu kullanmak üzere, api://AzureADTokenExchange kitlesiyle ikinci bir hizmet hesabı belirtecini projelendirin ve doğrudan federasyon kodunu bu dosyaya yönlendirin:
apiVersion: v1
kind: Pod
metadata:
name: workload-with-ib-and-direct-fic
labels:
azure.workload.identity/use: "true"
spec:
serviceAccountName: workload-sa
containers:
- name: app
image: <image>
volumeMounts:
- name: direct-fic-token
mountPath: /var/run/secrets/direct-fic
readOnly: true
env:
- name: DIRECT_FIC_TOKEN_FILE
value: /var/run/secrets/direct-fic/token
volumes:
- name: direct-fic-token
projected:
sources:
- serviceAccountToken:
path: token
audience: api://AzureADTokenExchange
expirationSeconds: 3600
AZURE_FEDERATED_TOKEN_FILE, kimlik bağlama akışı için ve DIRECT_FIC_TOKEN_FILE gibi özel belirteç dosyası, doğrudan federasyon kimliği kimlik bilgisi akışı için kullanın.
Microsoft Entra İş Yükü Kimliği'ne geçiş
Pod ile yönetilen bir kimlik çalıştıran kümeleri iki yoldan birini kullanarak Microsoft Entra İş Yükü Kimliğini kullanacak şekilde yapılandırabilirsiniz:
- Pod ile yönetilen kimlik için uyguladığınız yapılandırmanın aynısını kullanın. 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.
- Azure Identity istemci kitaplığının en son sürümünü kullanmak için uygulamanızı yeniden yazın.
Geçiş sürecini düzene koymaya ve kolaylaştırmaya yardımcı olmak için, uygulamanızın yaptığı Örnek Meta Veri Hizmeti (IMDS) işlemlerini OIDC'ye dönüştüren bir geçiş modülü geliştirdik. Geçiş yan arabirimi, uzun vadeli bir çözüm olarak tasarlanmamıştır; ancak Microsoft Entra İş Yükü Kimliği üzerinde hızla ç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 AKS kümeniz için geçiş veya dağıtım önerilerimiz özetlemektedir:
| Senaryo | Açıklama |
|---|---|
| Yeni AKS Otomatik kümesi | İş yükü kimliği ve OIDC sağlayıcısı önceden yapılandırılmıştır. Küme düzeyinde geçiş veya yapılandırma adımı gerekmez. Uygulamanızın hizmet hesabını ve federasyon kimlik bilgilerini yapılandırın, ardından Azure Identity istemci kitaplığını kullanın. |
| Azure Kimliği istemci kitaplığının desteklenen bir sürümünü çalıştıran yeni veya mevcut AKS Standart kümesi | Geçiş adımı gerekmez. Örnek dağıtım kaynakları: Yeni bir kümede Microsoft Entra İş 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 Identity istemci kitaplığının desteklenen bir sürümünü kullanacak şekilde güncelleştirin veya migration sidecar kullanın. |
İlgili içerik
- Geçiş seçeneği olarak iş yükü kimliğini kullanarak kimlik doğrulaması yapmak üzere podunuzu ayarlamayı öğrenmek için bkz. Microsoft Entra İş Yükü Kimliği ile uygulama kimlik doğrulamasını modernleştirme.
- Bkz. Bir kümeyi dağıtmanıza ve örnek bir uygulamayı iş yükü kimliği kullanacak şekilde yapılandırmanıza yardımcı olan Microsoft Entra İş Yükü Kimliği ile AKS kümesi dağıtma ve yapılandırma.
- AKS Otomatik'in iş yükü kimliği de dahil olmak üzere önceden yapılandırılmış güvenlik varsayılanları hakkında daha fazla bilgi edinmek için bkz. Otomatik Azure Kubernetes Service nedir?