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.
Bu makalede, yeni veya mevcut aks kümesinde kullanıcı tarafından atanan yönetilen kimliği etkinleştirme, kullanıcı tarafından atanan yönetilen kimliğin asıl kimliğini alma ve kullanıcı tarafından atanan yönetilen kimlik için rol ataması ekleme işlemleri açıklanır.
Önkoşullar
AKS'de kullanılabilen farklı yönetilen kimlik türlerini ve Azure kaynaklarına güvenli bir şekilde erişmek için bunları nasıl kullanabileceğinizi anlamak için Azure Kubernetes Service (AKS) içindeki yönetilen kimliklerin
Genel bakışını okuyun. komutunu kullanarak
az account setaboneliğinizi geçerli etkin abonelik olarak ayarlayın.az account set --subscription <subscription-id>
Mevcut bir Azure kaynak grubu. Eğer bir tane yoksa,
az group createkomutunu kullanarak bir tane oluşturabilirsiniz.az group create \ --name <resource-group-name> \ --location <location>
- Azure CLI sürüm 2.23.0 veya üzeri yüklü. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI yükleme. - Mevcut bir kümeyi user tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirmek için Azure CLI sürüm 2.49.0 veya üzerinin yüklü olması gerekir.
- Terraform yerel olarak yüklendi. Yükleme yönergeleri için bkz . Terraform'u yükleme.
Sınırlamalar
- Yönetilen kimlikle küme oluşturduktan sonra hizmet sorumlusu kullanmaya geri dönemezsiniz.
- Yönetilen kimlik özellikli bir kümenin farklı bir kiracıya taşınması veya geçirilmesi desteklenmez.
- Kümede Microsoft Entra pod tarafından yönetilen kimlik (
aad-pod-identity) etkinleştirildiyse, Node-Managed Identity (NMI) podları, düğümlerin iptable'larını değiştirerek Azure Örnek Meta Verileri (IMDS) uç noktasına yapılan çağrıları engeller. Bu yapılandırma, IMDS uç noktasına yapılan herhangi bir isteğin, belirli bir podaad-pod-identitykullanmasa bile, NMI tarafından kesilip durdurulması anlamına gelir.- AzurePodIdentityException özel kaynak tanımını (CRD), CRD'de tanımlanan pod eşleştirme etiketlerinden kaynaklanan IMDS uç noktasına yapılan isteklerin NMI'de herhangi bir işlem yapılmadan proksid edilmesi gerektiğini belirtmek için yapılandırabilirsiniz. AzurePodIdentityException CRD'sini yapılandırarak
kubernetes.azure.com/managedby: aksad alanındaki etiketine sahip sistem podlarınıaad-pod-identitydışında tutun. Daha fazla bilgi için bkz. Azure Kubernetes Service (AKS) içinde Microsoft Entra kullanarak pod ile yönetilen kimlikleri kullanma. - Özel durum yapılandırmak için mic-exception YAML yükleyin.
- AzurePodIdentityException özel kaynak tanımını (CRD), CRD'de tanımlanan pod eşleştirme etiketlerinden kaynaklanan IMDS uç noktasına yapılan isteklerin NMI'de herhangi bir işlem yapılmadan proksid edilmesi gerektiğini belirtmek için yapılandırabilirsiniz. AzurePodIdentityException CRD'sini yapılandırarak
- Azure ABD Kamu buluttaki USDOD Central, USDOD East ve USGov Iowa bölgeleri, kullanıcı tarafından atanan yönetilen kimlikle küme oluşturmayı desteklemez.
Kümeyi güncelleştirme konusunda dikkat edilmesi gerekenler
Bir kümeyi güncelleştirirken aşağıdaki bilgileri göz önünde bulundurun:
- Güncelleştirme yalnızca uygulanacak bir VHD güncellemesi 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 kullanan bir örnek için bkz. ARM şablonlarını kullanarak Azure rolleri atama.
- Kümeniz Azure Container Registry (ACR) görüntülerinden çekmek için
--attach-acrkullanıyorsa, yönetilen kimlik için kullanılan yeni oluşturulan kubelet'in ACR'den çekme izni almasına izin verecek şekilde kümenizi güncelleştirdikten sonraaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>komutunu çalıştırmanız gerekir. Aksi takdirde, güncelleştirmeden sonra ACR'den çekemezsiniz.
Kullanıcının atadığı yönetilen kimliği oluşturun
Henüz kullanıcı tarafından atanan yönetilen kimlik kaynağınız yoksa, az identity create komutunu kullanarak bir tane oluşturun.
az identity create \
--name <identity-name> \
--resource-group <resource-group-name>
Çıkışınız aşağıdaki örnek çıkışa benzemelidir:
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>",
"location": "<location>",
"name": "<identity-name>",
"principalId": "<principal-id>",
"resourceGroup": "<resource-group-name>",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Kullanıcı tarafından atanan yönetilen kimliğin asıl kimliğini elde etme
az identity show komutunu kullanarak kullanıcı tarafından atanan yönetilen kimliğin asıl kimliğini edinin.
CLIENT_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query principalId \
--output tsv)
Kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini alma
komutunu kullanarak kullanıcı tarafından atanan yönetilen kimliğin az identity show kaynak kimliğini alın.
RESOURCE_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query id \
--output tsv)
Kullanıcı tarafından atanan yönetilen kimliği yeni bir AKS kümesinde etkinleştirme
Kullanıcı tarafından atanan yönetilen kimliğin az aks create ayarlanmış --assign-identity parametresini kullanarak, komutu ile bir AKS kümesi oluşturun.
az aks create \
--resource-group <resource-group-name> \
--name <cluster-name> \
--network-plugin azure \
--vnet-subnet-id <vnet-subnet-id> \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--assign-identity $RESOURCE_ID \
--generate-ssh-keys
Kullanıcı tarafından atanan yönetilen kimliği kullanmak için mevcut kümeyi güncelleştirme
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--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/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
...
Kümeyi hizmet sorumlusu yerine kullanıcı tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirdikten sonra, denetim düzlemi ve podlar Azure'deki diğer hizmetlere erişirken yetkilendirme için kullanıcı tarafından atanan yönetilen kimliği kullanır. Kubelet, düğüm havuzunuzu da yükseltene kadar hizmet ilkesi kullanmaya devam eder. AKS kümenizin düğüm havuzlarının yükseltilmesi, düğüm havuzlarındaki düğümler kordonlanıp, boşaltılıp ve yeniden imajlanırken kesinti süresine neden olur. Kullanıcı tarafından atanan yönetilen kimliğe güncelleştirmek için düğümlerinizdeki komutunu kullanabilirsiniz.
az aks nodepool upgrade \
--resource-group <resource-group-name> \
--cluster-name <aks-cluster-name> \
--name <node-pool-name> \
--node-image-only
Uyarı
Denetim düzlemi için yönetilen kimliğin sistem tarafından atanandan kullanıcı tarafından atanana geçirilmesi, denetim düzlemi ve aracı havuzları için kapalı kalma süresine neden olmaz. Denetim düzlemi bileşenleri, bir sonraki belirteç yenileme işlemi gerçekleşene kadar birkaç saat boyunca sistem tarafından atanmış eski kimliği kullanmaya devam eder.
Azure RBAC rolünü kullanıcı atamalı yönetilen kimliğe atayın
az role assignment create komutunu kullanarak kullanıcı tarafından atanan yönetilen kimlik için bir rol ataması ekleyin. Aşağıdaki örnek, kullanıcı tarafından atanan yönetilen kimliğe Key Vault Sırlar Kullanıcısı rolünü atayarak bu kimliğe bir key vault'taki sırları erişme izni verir. Rol ataması, anahtar kasası kaynağıyla sınırlıdır.
az role assignment create \
--assignee <client-id> \
--role "Key Vault Secrets User" \
--scope "<key-vault-resource-id>"
Uyarı
Kümenizin yönetilen kimliğine verilen izinlerin yayılması 60 dakika kadar sürebilir.
Terraform yapılandırma dosyasını oluşturma
Terraform yapılandırma dosyaları, Terraform'un oluşturduğu ve yönettiği altyapıyı tanımlar.
main.tfadlı bir dosya oluşturun ve Terraform sürümünü tanımlamak ve Azure sağlayıcısını belirtmek için aşağıdaki kodu ekleyin:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }Azure kaynak grubu oluşturmak için aşağıdaki kodu
main.tfekleyin. Kaynak grubunun adını ve konumunu gerektiği gibi değiştirebilirsiniz.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
Terraform kullanarak kullanıcı tarafından atanan yönetilen kimlikle AKS kümesi oluşturma
Kullanıcı tarafından atanan yönetilen kimliği ve kimliği kullanan bir AKS kümesini oluşturmak için aşağıdaki kodu main.tf ekleyin:
resource "azurerm_user_assigned_identity" "uai" {
name = "aks-user-identity"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
}
resource "azurerm_kubernetes_cluster" "user_assigned" {
name = "aks-user"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "aksuser"
identity {
type = "UserAssigned"
identity_ids = [azurerm_user_assigned_identity.uai.id]
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
Terraform kullanarak kullanıcı tarafından atanan yönetilen kimlik için rol ataması ekleme
Kullanıcı tarafından atanan yönetilen kimlik için rol ataması oluşturmak üzere aşağıdaki kodu main.tf ekleyin. Bu örnek, Key Vault Gizli Dizi Kullanıcısı rolünü kullanıcı tarafından atanan yönetilen kimliğe atayarak key vault gizli dizilere erişim izinleri verir. Rol ataması, anahtar kasası kaynağıyla sınırlıdır.
resource "azurerm_role_assignment" "user_assigned_key_vault_secrets_user" {
scope = azurerm_resource_group.example.id
role_definition_name = "Key Vault Secrets User"
principal_id = azurerm_user_assigned_identity.uai.principal_id
}
Terraform'u başlatma
main.tf komutunu kullanarak terraform init dosyanızın bulunduğu dizinde Terraform'u başlatın. Bu komut Terraform ile Azure kaynakları yönetmek için gereken Azure sağlayıcısını indirir.
terraform init
Terraform için bir yürütme planı oluşturun
terraform plan komutunu kullanarak bir Terraform yürütme planı oluşturun. Bu komut, Terraform'un Azure aboneliğinizde oluşturacağı veya değiştireceği kaynakları gösterir.
terraform plan
Terraform yapılandırmasını uygulama
Yürütme planını gözden geçirip onayladıktan sonra komutunu kullanarak terraform apply Terraform yapılandırmasını uygulayın. Bu komut, Azure aboneliğinizdeki main.tf dosyanızda tanımlanan kaynakları oluşturur veya değiştirir.
terraform apply
Terraform dağıtımını doğrulayın
Terraform yapılandırmasını uyguladıktan sonra çıkışı filtrelemek ve kimlik bilgilerini görüntülemek için [az aks show][az-aks-show] komutunu kullanarak dağıtımı parametresiyle --query doğrulayabilirsiniz. Örneğin:
az aks show \
--name <cluster-name> \
--resource-group <resource-group> \
--query identity.type \
--output tsv
İlgili içerik
AKS'de yönetilen kimlikler hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: