Azure Kubernetes Service'te (AKS) yönetilen kimlik kullanma
Azure Kubernetes Service (AKS) kümeleri, yük dengeleyiciler ve yönetilen diskler gibi Azure kaynaklarına erişmek için bir Microsoft Entra kimliği gerektirir. Azure kaynakları için yönetilen kimlikler, AKS kümesinden diğer Azure hizmetlerine erişimi yetkilendirmenin önerilen yoludur.
Kimlik bilgilerini yönetmeye veya bunları kodunuza eklemeye gerek kalmadan, AKS kümesinden Microsoft Entra yetkilendirmesini destekleyen herhangi bir hizmete erişimi yetkilendirmek için yönetilen kimlik kullanabilirsiniz. Yönetilen kimliğe Azure'daki belirli bir kaynağa izin vermek için Azure rol tabanlı erişim denetimi (Azure RBAC) rolü atarsınız. Örneğin, küme tarafından kullanılmak üzere azure anahtar kasasında gizli dizilere erişmek için yönetilen kimliğe izin vekleyebilirsiniz. Azure RBAC hakkında daha fazla bilgi için bkz . Azure rol tabanlı erişim denetimi (Azure RBAC) nedir?.
Bu makalede, yeni veya mevcut bir AKS kümesinde aşağıdaki yönetilen kimlik türlerinin nasıl etkinleştirileceği gösterilir:
- Sistem tarafından atanan yönetilen kimlik. Sistem tarafından atanan yönetilen kimlik, AKS kümesi gibi tek bir Azure kaynağıyla ilişkilendirilir. Yalnızca kümenin yaşam döngüsü için mevcuttur.
- Kullanıcı tarafından atanan yönetilen kimlik. Kullanıcı tarafından atanan yönetilen kimlik, AKS kümesinin diğer Azure hizmetlerine erişim yetkisi vermek için kullanabileceği tek başına bir Azure kaynağıdır. AKS kümesinden ayrı olarak kalıcıdır ve birden çok Azure kaynağı tarafından kullanılabilir.
- Önceden oluşturulmuş kubelet yönetilen kimliği. Önceden oluşturulmuş kubelet yönetilen kimliği, kubelet'in Azure'daki diğer kaynaklara erişmek için kullanabileceği isteğe bağlı bir kullanıcı tarafından atanan kimliktir. Kubelet için kullanıcı tarafından atanan yönetilen kimlik belirtmezseniz AKS, düğüm kaynak grubunda sistem tarafından atanan bir kubelet kimliği oluşturur.
Yönetilen kimlikler hakkında daha fazla bilgi edinmek için bkz . Azure kaynakları için yönetilen kimlikler.
Genel bakış
AKS kümesi, Microsoft Entra'dan belirteç istemek için yönetilen kimlik kullanır. Bu belirteçler, Azure'da çalışan diğer kaynaklara erişimi yetkilendirmek için kullanılır. Kümenize belirli kaynaklara erişim izinleri vermek için yönetilen kimliğe Azure RBAC rolü atayabilirsiniz. Örneğin, kümenizin bir Azure anahtar kasasında gizli dizilere erişmesi gerekiyorsa, kümenin yönetilen kimliğine bu izinleri veren bir Azure RBAC rolü atayabilirsiniz.
Yönetilen kimlik, sistem tarafından veya kullanıcı tarafından atanabilir. Bu iki yönetilen kimlik türü, AKS kümenizden Azure kaynaklarına erişimi yetkilendirmek için her iki türü de kullanabileceğiniz şekilde benzerdir. Aralarındaki temel fark, sistem tarafından atanan yönetilen kimliğin AKS kümesi gibi tek bir Azure kaynağıyla ilişkilendirilirken, kullanıcı tarafından atanan yönetilen kimliğin tek başına bir Azure kaynağı olmasıdır. Yönetilen kimlik türleri arasındaki farklar hakkında daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimliklerde yönetilen kimlik türleri.
Her iki yönetilen kimlik türü de Azure platformu tarafından yönetildiğinden, gizli dizi sağlamaya veya döndürmeye gerek kalmadan uygulamalarınızdan erişim yetkisi alabilirsiniz. Azure, kimliğin kimlik bilgilerini sizin için yönetir.
AKS kümesini dağıttığınızda, sizin için varsayılan olarak sistem tarafından atanan bir yönetilen kimlik oluşturulur. Ayrıca, kümeyi kullanıcı tarafından atanan yönetilen kimlikle de oluşturabilirsiniz.
Yönetilen kimlik yerine uygulama hizmet sorumlusuyla küme oluşturmak da mümkündür. Yönetilen kimlikler, güvenlik ve kullanım kolaylığı için hizmet sorumluları üzerinden önerilir. Hizmet sorumlusuyla küme oluşturma hakkında daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) ile hizmet sorumlusu kullanma.
Mevcut bir kümeyi bir uygulama hizmet sorumlusundan yönetilen kimlik kullanacak şekilde güncelleştirebilirsiniz. Ayrıca, var olan bir kümeyi farklı bir yönetilen kimlik türüne güncelleştirebilirsiniz. Kümeniz zaten bir yönetilen kimlik kullanıyorsa ve kimlik değiştirildiyse, örneğin, sistem tarafından atanan kullanıcı tarafından atanan küme kimlik türünü güncelleştirdiyseniz, denetim düzlemi bileşenlerinin yeni kimliğe geçişinde gecikme yaşanır. Denetim düzlemi bileşenleri, belirtecinin süresi dolana kadar eski kimliği kullanmaya devam eder. Belirteç yenilendikten sonra yeni kimliğe geçer. Bu işlem birkaç saat sürebilir.
Sistem tarafından atanan ve kullanıcı tarafından atanan kimlik türleri, pod üzerinde çalışan bir uygulama tarafından kullanılmak üzere tasarlanan Microsoft Entra workload kimliğinden farklıdır.
Başlamadan önce
Azure CLI sürüm 2.23.0 veya üzerinin yüklü olduğundan emin olun. Sürümü bulmak için
az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.Önceden oluşturulmuş kubelet yönetilen kimliğini kullanmak için Azure CLI sürüm 2.26.0 veya üzeri yüklü olmalıdır.
Mevcut bir kümeyi sistem tarafından atanan yönetilen kimliği veya kullanıcı tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirmek için Azure CLI sürüm 2.49.0 veya sonraki bir sürümünün yüklü olması gerekir.
Bu makaledeki örnekleri çalıştırmadan önce az account set komutunu çağırıp abonelik kimliğinizi geçirerek aboneliğinizi geçerli etkin abonelik olarak ayarlayın .
az account set --subscription <subscription-id>
Ayrıca komutunu çağırarak az group create
henüz bir Azure kaynak grubunuz yoksa da bir Azure kaynak grubu oluşturun.
az group create \
--name myResourceGroup \
--location westus2
Sistem tarafından atanan yönetilen kimliği etkinleştirme
Sistem tarafından atanan yönetilen kimlik, AKS kümesi veya başka bir Azure kaynağıyla ilişkilendirilmiş bir kimliktir. Sistem tarafından atanan yönetilen kimlik, kümenin yaşam döngüsüne bağlıdır. Küme silindiğinde, sistem tarafından atanan yönetilen kimlik de silinir.
AKS kümesi, Azure'da çalışan diğer kaynaklara erişimi yetkilendirmek için sistem tarafından atanan yönetilen kimliği kullanabilir. Kümeye belirli kaynaklara erişim izinleri vermek için sistem tarafından atanan yönetilen kimliğe bir Azure RBAC rolü atayabilirsiniz. Örneğin, kümenizin bir Azure anahtar kasasında gizli dizilere erişmesi gerekiyorsa, sistem tarafından atanan yönetilen kimliğe bu izinleri veren bir Azure RBAC rolü atayabilirsiniz.
Yeni aks kümesinde sistem tarafından atanan yönetilen kimliği etkinleştirme
Sistem tarafından atanan yönetilen kimliği yeni bir kümede etkinleştirmek için öğesini çağırın az aks create
. Sistem tarafından atanan yönetilen kimlik, yeni kümede varsayılan olarak etkinleştirilir.
komutunu kullanarak az aks create
bir AKS kümesi oluşturun.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--generate-ssh-keys
Sistem tarafından atanan yönetilen kimliğin oluşturulduktan sonra küme için etkinleştirildiğini doğrulamak için bkz . Bir kümenin hangi tür yönetilen kimlik kullandığını belirleme.
Sistem tarafından atanan yönetilen kimliği kullanmak için mevcut AKS kümesini güncelleştirme
Bunun yerine sistem tarafından atanan yönetilen kimliği kullanmak üzere hizmet sorumlusu kullanan mevcut bir AKS kümesini güncelleştirmek için parametresiyle --enable-managed-identity
komutunu çalıştırınaz aks update
.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-managed-identity
Kümeyi hizmet sorumlusu yerine sistem tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirdikten sonra, denetim düzlemi ve podlar Azure'daki diğer hizmetlere erişirken yetkilendirme için sistem tarafından atanan yönetilen kimliği kullanır. Siz aracı havuzunuzu da yükseltene kadar Kubelet hizmet sorumlusu kullanmaya devam eder. Yönetilen bir kimliğe güncelleştirmek için düğümlerinizdeki komutunu kullanabilirsiniz az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only
. Düğüm havuzlarındaki düğümler kordonlandığından, boşaltıldığında ve yeniden görüntülendiği için düğüm havuzu yükseltmesi AKS kümenizde kapalı kalma süresine neden olur.
Not
Kümenizi güncelleştirirken aşağıdaki bilgileri göz önünde bulundurun:
Güncelleştirme yalnızca tüketecek bir VHD güncelleştirmesi varsa çalışır. En son VHD'yi çalıştırıyorsanız güncelleştirmeyi gerçekleştirmek için bir sonraki VHD kullanılabilir olana kadar beklemeniz gerekir.
Azure CLI, geçiş sonrasında eklentinizin izninin doğru şekilde ayarlanmasını sağlar. Geçiş işlemini gerçekleştirmek için Azure CLI kullanmıyorsanız, eklenti kimliğinin iznini kendiniz işlemeniz gerekir. Azure Resource Manager (ARM) şablonu kullanma örneği için bkz . ARM şablonlarını kullanarak Azure rolleri atama.
Kümeniz Azure Container Registry'den (ACR) görüntü çekmek için kullanıyorsa
--attach-acr
, yönetilen kimlik için kullanılan yeni oluşturulan kubelet'in ACR'den çekme iznini almasına izin vermek için kümenizi güncelleştirdikten sonra komutunu çalıştırmanızaz aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR resource ID>
gerekir. Aksi takdirde, güncelleştirmeden sonra ACR'den çekemezsiniz.
Sistem tarafından atanan yönetilen kimlik için rol ataması ekleme
Küme izinlerini başka bir Azure kaynağında vermek için sistem tarafından atanan yönetilen kimliğe bir Azure RBAC rolü atayabilirsiniz. Azure RBAC, izin düzeylerini belirten hem yerleşik hem de özel rol tanımlarını destekler. Azure RBAC rollerini atama hakkında daha fazla bilgi için bkz . Azure rolü atama adımları.
Yönetilen kimliğe Azure RBAC rolü atadığınızda, rolün kapsamını tanımlamanız gerekir. Genel olarak, bir rolün kapsamını yönetilen kimliğin gerektirdiği en düşük ayrıcalıklarla sınırlamak en iyi yöntemdir. Azure RBAC rollerinin kapsamını belirleme hakkında daha fazla bilgi için bkz . Azure RBAC kapsamını anlama.
Kaynakların çalışan düğümü kaynak grubunun dışında olduğu kendi sanal ağınızı, ekli Azure disklerinizi, statik IP adresini, yönlendirme tablosunu veya kullanıcı tarafından atanan kubelet kimliğini oluşturup kullandığınızda, Azure CLI rol atamasını otomatik olarak ekler. ARM şablonu veya başka bir yöntem kullanıyorsanız rol ataması gerçekleştirmek için yönetilen kimliğin asıl kimliğini kullanın.
Azure CLI kullanmıyorsanız ancak çalışan düğümü kaynak grubunun dışında kendi sanal ağınızı, bağlı Azure disklerinizi, statik IP adresinizi, yönlendirme tablonuzu veya kullanıcı tarafından atanan kubelet kimliğinizi kullanıyorsanız, denetim düzlemi için kullanıcı tarafından atanan yönetilen kimlik kullanmanızı öneririz. Denetim düzlemi sistem tarafından atanan bir yönetilen kimlik kullandığında, kimlik kümeyle aynı anda oluşturulur, bu nedenle rol ataması küme oluşturulana kadar gerçekleştirilemez.
Sistem tarafından atanan yönetilen kimliğin asıl kimliğini alma
Kümenin sistem tarafından atanan yönetilen kimliğine Azure RBAC rolü atamak için önce yönetilen kimliğin asıl kimliği gerekir. komutunu çağırarak kümenin sistem tarafından atanan yönetilen kimliğinin az aks show
asıl kimliğini alın.
# Get the principal ID for a system-assigned managed identity.
CLIENT_ID=$(az aks show \
--name myAKSCluster \
--resource-group myResourceGroup \
--query identity.principalId \
--output tsv)
Sistem tarafından atanan yönetilen kimliğe Azure RBAC rolü atama
Azure'daki bir kaynağa sistem tarafından atanan yönetilen kimlik izinleri vermek için komutunu çağırarak az role assignment create
yönetilen kimliğe bir Azure RBAC rolü atayın.
Sanal ağ, ekli Azure diski, statik IP adresi veya varsayılan çalışan düğümü kaynak grubunun dışındaki yönlendirme tablosu için, rolü özel kaynak grubuna atamanız Network Contributor
gerekir.
Örneğin, komutunu kullanarak özel kaynak grubundaki rolü atayın Network Contributor
az role assignment create
. parametresi için --scope
kümenin kaynak grubunun kaynak kimliğini belirtin.
az role assignment create \
--assignee $CLIENT_ID \
--role "Network Contributor" \
--scope "<resource-group-id>"
Not
Kümenizin yönetilen kimliğine verilen izinlerin yayılması 60 dakika kadar sürebilir.
Kullanıcı tarafından atanan yönetilen kimliği etkinleştirme
Kullanıcı tarafından atanan yönetilen kimlik tek başına bir Azure kaynağıdır. Denetim düzlemi için kullanıcı tarafından atanan yönetilen kimliğe sahip bir küme oluşturduğunuzda, küme oluşturmadan önce kullanıcı tarafından atanan yönetilen kimlik kaynağının mevcut olması gerekir. Bu özellik, özel bir sanal ağ veya kullanıcı tanımlı yönlendirme (UDR) giden türü ile küme oluşturma gibi senaryoları etkinleştirir.
Kullanıcı tarafından atanan yönetilen kimlik oluşturma
Henüz kullanıcı tarafından atanan yönetilen kimlik kaynağınız yoksa komutunu kullanarak az identity create
bir kaynak oluşturun.
az identity create \
--name myIdentity \
--resource-group myResourceGroup
Çıkışınız aşağıdaki örnek çıkışa benzemelidir:
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
"location": "westus2",
"name": "myIdentity",
"principalId": "<principal-id>",
"resourceGroup": "myResourceGroup",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Kullanıcı tarafından atanan yönetilen kimliğin asıl kimliğini alma
Kullanıcı tarafından atanan yönetilen kimliğin asıl kimliğini almak için az identity show çağrısı yapın ve özelliğinde sorgu yapın principalId
:
CLIENT_ID=$(az identity show \
--name myIdentity \
--resource-group myResourceGroup \
--query principalId \
--output tsv)
Kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini alma
Kullanıcı tarafından atanan yönetilen kimliğe sahip bir küme oluşturmak için yeni yönetilen kimliğin kaynak kimliği gerekir. Kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini almak için özelliğinde az aks show ve query çağrısı yapın id
:
RESOURCE_ID=$(az identity show \
--name myIdentity \
--resource-group myResourceGroup \
--query id \
--output tsv)
Kullanıcı tarafından atanan yönetilen kimliğe Azure RBAC rolü atama
Kümeyi oluşturmadan önce komutunu çağırarak yönetilen kimlik için bir rol ataması az role assignment create
ekleyin.
Aşağıdaki örnek, anahtar kasasındaki gizli dizilere erişim izinleri vermek için kullanıcı tarafından atanan yönetilen kimliğe Key Vault Gizli Dizileri Kullanıcı rolünü atar. Rol atamasının kapsamı anahtar kasası kaynağı olarak belirlenmiştir:
az role assignment create \
--assignee $CLIENT_ID \
--role "Key Vault Secrets User" \
--scope "<keyvault-resource-id>"
Not
Kümenizin yönetilen kimliğine verilen izinlerin yayılması 60 dakika kadar sürebilir.
Kullanıcı tarafından atanan yönetilen kimlikle küme oluşturma
Kullanıcı tarafından atanan yönetilen kimliğe sahip bir AKS kümesi oluşturmak için komutunu çağırın az aks create
. parametresini --assign-identity
ekleyin ve kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini geçirin:
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--network-plugin azure \
--vnet-subnet-id <subnet-id> \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--assign-identity $RESOURCE_ID \
--generate-ssh-keys
Not
Azure US Government bulutundaki USDOD Central, USDOD East ve USGov Iowa bölgeleri, kullanıcı tarafından atanan yönetilen kimlikle küme oluşturmayı desteklemez.
Kullanıcı tarafından atanan yönetilen kimliği kullanmak için mevcut kümeyi güncelleştirme
Mevcut kümeyi kullanıcı tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirmek için komutunu çağırın az aks update
. parametresini --assign-identity
ekleyin ve kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini geçirin:
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-managed-identity \
--assign-identity $RESOURCE_ID
Başarılı bir küme güncelleştirmesinin kullanıcı tarafından atanan yönetilen kimliği kullanma çıktısı aşağıdaki örnek çıktıya benzemelidir:
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
Not
Denetim düzlemi için yönetilen kimliğin sistem tarafından atanan kullanıcı tarafından atanan bir kimlikten geçirilmesi, denetim düzlemi ve aracı havuzları için kapalı kalma süresine neden olmaz. Denetim düzlemi bileşenleri, bir sonraki belirteç yenilemesine kadar birkaç saate kadar eski sistem tarafından atanan kimliğe devam eder.
Bir kümenin hangi yönetilen kimlik türünü kullandığını belirleme
Mevcut AKS kümenizin hangi tür yönetilen kimliği kullandığını belirlemek için az aks show komutunu çağırın ve kimliğin type özelliği için sorguyu çalıştırın.
az aks show \
--name myAKSCluster \
--resource-group myResourceGroup \
--query identity.type \
--output tsv
Küme yönetilen kimlik kullanıyorsa type özelliğinin değeri SystemAssigned veya UserAssigned olur.
Küme bir hizmet sorumlusu kullanıyorsa type özelliğinin değeri null olur. Yönetilen kimlik kullanmak için kümenizi yükseltmeyi göz önünde bulundurun.
Önceden oluşturulmuş kubelet yönetilen kimliği kullanma
Önceden oluşturulmuş kubelet kimliği, küme oluşturmadan önce var olan kullanıcı tarafından atanan yönetilen kimliktir. Bu özellik, küme oluşturma sırasında Azure Container Registry'ye (ACR) bağlantı gibi senaryoları etkinleştirir.
Not
Kendi kubelet yönetilen kimliğinizi belirtmezseniz AKS, düğüm kaynak grubunda kullanıcı tarafından atanan bir kubelet kimliği oluşturur.
Varsayılan çalışan düğümü kaynak grubunun dışında kullanıcı tarafından atanan kubelet kimliği için, denetim düzlemi yönetilen kimliği için kubelet kimliğinde Yönetilen Kimlik operatörü rolünü atamanız gerekir.
kubelet yönetilen kimliği
Kubelet yönetilen kimliğiniz yoksa komutunu kullanarak az identity create
bir kimlik oluşturun.
az identity create \
--name myKubeletIdentity \
--resource-group myResourceGroup
Çıkışınız aşağıdaki örnek çıkışa benzemelidir:
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity",
"location": "westus2",
"name": "myKubeletIdentity",
"principalId": "<principal-id>",
"resourceGroup": "myResourceGroup",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Kubelet yönetilen kimliğine RBAC rolü atama
ACRPull
komutunu kullanarak kubelet kimliğindeki rolü atayınaz role assignment create
. $KUBELET_CLIENT_ID değişkeni için kubelet kimliğinin asıl kimliğini ve $ACR_REGISTRY_ID değişkeni için ACR kayıt defteri kimliğini sağlayın.
az role assignment create \
--assignee $KUBELET_CLIENT_ID \
--role "acrpull" \
--scope "$ACR_REGISTRY_ID"
Kubelet kimliğini kullanmak için küme oluşturma
Artık aks kümenizi mevcut kimliklerinizle oluşturabilirsiniz. Bağımsız değişkenini ve bağımsız değişkeni kullanarak kubelet yönetilen kimliğini ekleyerek assign-identity
denetim düzlemi için yönetilen kimliğin kaynak kimliğini sağladığından assign-kubelet-identity
emin olun.
komutunu kullanarak az aks create
mevcut kimliklerinizle bir AKS kümesi oluşturun.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--network-plugin azure \
--vnet-subnet-id <subnet-id> \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--assign-identity <identity-resource-id> \
--assign-kubelet-identity <kubelet-identity-resource-id> \
--generate-ssh-keys
Kubelet yönetilen kimliği kullanılarak başarılı bir AKS kümesi oluşturma işlemi aşağıdakine benzer bir çıkışla sonuçlanmalıdır:
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
"identityProfile": {
"kubeletidentity": {
"clientId": "<client-id>",
"objectId": "<object-id>",
"resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
}
},
Kubelet kimliğini kullanmak için mevcut kümeyi güncelleştirme
Mevcut bir kümeyi kubelet yönetilen kimliğini kullanacak şekilde güncelleştirmek için önce AKS kümenizin geçerli denetim düzlemi yönetilen kimliğini alın.
Uyarı
Kubelet yönetilen kimliğinin güncelleştirilmesi AKS kümenizin düğüm havuzlarını yükselterek düğüm havuzlarındaki düğümler cordoned/drained ve yeniden oluşturulduğundan küme için kapalı kalma süresine neden olur.
KOMUTUNU kullanarak AKS kümenizin kullanıcı tarafından atanan yönetilen kimliği kullandığını
az aks show
onaylayın.az aks show \ --resource-group <RGName> \ --name <ClusterName> \ --query "servicePrincipalProfile"
Kümeniz yönetilen kimlik kullanıyorsa, çıktı msi değeriyle gösterilir
clientId
. Hizmet sorumlusu kullanan bir küme nesne kimliğini gösterir. Örneğin:# The cluster is using a managed identity. { "clientId": "msi" }
Kümenizin yönetilen kimlik kullandığını onayladıktan sonra komutunu kullanarak yönetilen kimliğin
az aks show
kaynak kimliğini bulun.az aks show --resource-group <RGName> \ --name <ClusterName> \ --query "identity"
Kullanıcı tarafından atanan yönetilen kimlik için çıkışınız aşağıdaki örnek çıktıya benzer olmalıdır:
{ "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": <identity-resource-id> "clientId": "<client-id>", "principalId": "<principal-id>" },
komutunu kullanarak kümenizi mevcut kimliklerinizle güncelleştirin
az aks update
. Bağımsız değişkeninin denetim düzlemi için kullanıcı tarafından atanan yönetilen kimliğinassign-identity
kaynak kimliğini belirtin. Bağımsız değişkeni için kubelet yönetilen kimliğininassign-kubelet-identity
kaynak kimliğini belirtin.az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-managed-identity \ --assign-identity <identity-resource-id> \ --assign-kubelet-identity <kubelet-identity-resource-id>
Kendi kubelet yönetilen kimliğinizi kullanarak başarılı bir küme güncelleştirmesi için çıkışınız aşağıdaki örnek çıktıya benzemelidir:
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
"identityProfile": {
"kubeletidentity": {
"clientId": "<client-id>",
"objectId": "<object-id>",
"resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
}
},
Not
Kümeniz Azure Container Registry'den görüntü çekmek için kullanıyorsa --attach-acr
, yönetilen kimlik için kullanılan yeni oluşturulan kubelet'in ACR'den çekme izni almasına izin vermek için kümenizi güncelleştirdikten sonra komutunu çalıştırın az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR Resource ID>
. Aksi takdirde, yükseltmeden sonra ACR'den çekemezsiniz.
Kubelet kimliğinin özelliklerini alma
Kubelet kimliğinin özelliklerini almak için az aks show ve query komutunu özelliğinde çağırın.identityProfile.kubeletidentity
az aks show \
--name myAKSCluster \
--resource-group myResourceGroup \
--query "identityProfile.kubeletidentity"
Önceden oluşturulmuş kubelet kimlik sınırlamaları
Önceden oluşturulmuş kubelet kimliği için aşağıdaki sınırlamalara dikkat edin:
- Önceden oluşturulmuş bir kubelet kimliği, kullanıcı tarafından atanan yönetilen kimlik olmalıdır.
- Microsoft Azure'da 21Vianet tarafından sağlanan Doğu Çin ve Çin Kuzey bölgeleri desteklenmez.
AKS tarafından kullanılan yönetilen kimliklerin özeti
AKS, yerleşik hizmetler ve eklentiler için çeşitli yönetilen kimlikler kullanır.
Kimlik | Veri Akışı Adı | Kullanım örneği | Varsayılan izinler | Kendi kimliğinizi getirin |
---|---|---|---|---|
Kontrol düzlemi | AKS Küme Adı | Aks denetim düzlemi bileşenleri tarafından giriş yük dengeleyicileri ve AKS tarafından yönetilen genel IP'ler, Küme Otomatik Ölçeklendiricisi, Azure Disk, Dosya, Blob CSI sürücüleri gibi küme kaynaklarını yönetmek için kullanılır. | Node kaynak grubu için katkıda bulunan rolü | Desteklenir |
Kubelet | AKS Kümesi Adı-aracı havuzu | Azure Container Registry (ACR) ile kimlik doğrulaması. | Yok (kubernetes v1.15+için) | Desteklenir |
Eklenti | AzureNPM | Kimlik gerekmez. | Yok | Hayır |
Eklenti | AzureCNI ağ izleme | Kimlik gerekmez. | Yok | Hayır |
Eklenti | azure-policy (ağ geçidi denetleyicisi) | Kimlik gerekmez. | Yok | Hayır |
Eklenti | azure-policy | Kimlik gerekmez. | Yok | Hayır |
Eklenti | Calico | Kimlik gerekmez. | Yok | Hayır |
Eklenti | uygulama yönlendirme | Azure DNS ve Azure Key Vault sertifikalarını yönetir | Key Vault Gizli Dizileri Key Vault için kullanıcı rolü, DNS bölgeleri için DNZ Bölge Katılımcısı rolü, özel DNS bölgeleri için Özel DNS Bölge Katılımcısı rolü | Hayır |
Eklenti | HTTPApplicationRouting | Gerekli ağ kaynaklarını yönetir. | Düğüm kaynak grubu için okuyucu rolü, DNS bölgesi için katkıda bulunan rolü | Hayır |
Eklenti | Giriş uygulaması ağ geçidi | Gerekli ağ kaynaklarını yönetir. | Düğüm kaynak grubu için katkıda bulunan rolü | Hayır |
Eklenti | omsagent | AKS ölçümlerini Azure İzleyici'ye göndermek için kullanılır. | Ölçüm Yayımcısı rolünü izleme | Hayır |
Eklenti | Sanal Düğüm (ACIConnector) | Azure Container Instances (ACI) için gerekli ağ kaynaklarını yönetir. | Düğüm kaynak grubu için katkıda bulunan rolü | Hayır |
Eklenti | Maliyet analizi | Maliyet ayırma verilerini toplamak için kullanılır | ||
İş yükü kimliği | Microsoft Entra iş yükü kimliği | Microsoft Entra iş yükü kimliği ile uygulamaların bulut kaynaklarına güvenli bir şekilde erişmesini sağlar. | Yok | Hayır |
Önemli
Azure Kubernetes Service'teki açık kaynak Microsoft Entra pod yönetilen kimliği (önizleme) 24.10.2022 tarihinde kullanım dışı bırakıldı ve proje Eylül 2023'te arşivlendi. Daha fazla bilgi için kullanımdan kaldırma bildirimine bakın. AKS Yönetilen eklentisi Eylül 2024'te kullanımdan kaldırmaya başlar.
Microsoft Entra İş Yükü Kimliği gözden geçirmenizi öneririz. Entra İş Yükü Kimliği kimlik doğrulaması, kullanım dışı bırakılan pod ile yönetilen kimlik (önizleme) özelliğinin yerini alır. Entra İş Yükü Kimliği, pod üzerinde çalışan bir uygulamanın kendisini destekleyen diğer Azure hizmetlerinde kimlik doğrulaması yapmasını sağlamak için önerilen yöntemdir.
Sınırlamalar
Yönetilen kimlik özellikli bir kümenin farklı bir kiracıya taşınması veya geçirilmesi desteklenmez.
Kümede Microsoft Entra pod yönetilen kimliği (
aad-pod-identity
) etkinleştirildiyse, Düğüm Tarafından Yönetilen Kimlik (NMI) podları düğümlerin iptable'larını değiştirerek Azure Örnek Meta Verileri (IMDS) uç noktasına yapılan çağrıları durdurur. Bu yapılandırma, belirli bir pod kullanmasaaad-pod-identity
bile IMDS uç noktasına yapılan tüm isteklerin NMI tarafından durdurulması anlamına gelir.AzurePodIdentityException özel kaynak tanımı (CRD), CRD'de tanımlanan pod eşleştirme etiketlerinden kaynaklanan IMDS uç noktasına gelen isteklerin NMI'de herhangi bir işlem yapılmadan proksid edilmesi gerektiğini belirtecek şekilde yapılandırılabilir. AzurePodIdentityException CRD'sini
kubernetes.azure.com/managedby: aks
yapılandırarak içinde kube-system ad alanındaaad-pod-identity
etiketi olan sistem podlarını hariç tutun. Daha fazla bilgi için bkz . Azure Kubernetes Service'te Microsoft Entra pod ile yönetilen kimlikleri kullanma.Özel durum yapılandırmak için mikrofon özel durumu YAML'sini yükleyin.
AKS, özel bir özel DNS bölgesi kullanılırken sistem tarafından atanan yönetilen kimlik kullanımını desteklemez.
Sonraki adımlar
- Yönetilen kimlik özellikli bir küme oluşturmak için Azure Resource Manager şablonlarını kullanın.
- AKS'de desteklenen tüm Microsoft Entra kimlik doğrulama yöntemleri için kubelogin kullanmayı öğrenin.
Azure Kubernetes Service