Azure Kubernetes Service'te (AKS) Kubernetes yapılandırma dosyasına erişimi tanımlamak için Azure rol tabanlı erişim denetimini kullanma

Aracı kullanarak kubectl Kubernetes kümeleriyle etkileşim kurabilirsiniz. Azure CLI, kullanarak kubectlAKS kümelerinize bağlanmak için erişim kimlik bilgilerini ve kubeconfig yapılandırma dosyasını almak için kolay bir yol sağlar. Kubeconfig dosyasına kimlerin erişebileceğini ve sahip oldukları izinleri sınırlamak için Azure rol tabanlı erişim denetimini (Azure RBAC) kullanabilirsiniz.

Bu makalede, AKS kümesi için yapılandırma bilgilerini kimlerin alabileceğini sınırlayan Azure rollerinin nasıl atanabileceği gösterilmektedir.

Başlamadan önce

  • Bu makalede, mevcut bir AKS kümeniz olduğu varsayılır. AKS kümesine ihtiyacınız varsa Azure CLI, Azure PowerShell veya Azure portalını kullanarak bir küme oluşturun.
  • Bu makale ayrıca Azure CLI 2.0.65 veya sonraki bir sürümünü çalıştırmanızı gerektirir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Küme rolleri için kullanılabilir izinler

Aracı kullanarak kubectl bir AKS kümesiyle etkileşime geçtiğiniz zaman kubeconfig adlı bir yapılandırma dosyası küme bağlantı bilgilerini tanımlar. Bu yapılandırma dosyası genellikle ~/.kube/config içinde depolanır. Bu kubeconfig dosyasında birden çok küme tanımlanabilir. komutunu kullanarak kubectl config use-context kümeler arasında geçiş yapabilirsiniz.

komutu bir az aks get-credentials AKS kümesinin erişim kimlik bilgilerini almanıza olanak tanır ve bu kimlik bilgilerini kubeconfig dosyasıyla birleştirir. Bu kimlik bilgilerine erişimi denetlemek için Azure RBAC kullanabilirsiniz. Bu Azure rolleri, kubeconfig dosyasını kimlerin alabileceğini ve küme içinde hangi izinlere sahip olduklarını tanımlamanızı sağlar.

Bir Microsoft Entra kullanıcısına veya grubuna uygulayabileceğiniz iki Azure rolü vardır:

  • Azure Kubernetes Service Kümesi Yönetici Rolü

    • API çağrısına erişime Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action izin verir. Bu API çağrısı , küme yöneticisi kimlik bilgilerini listeler.
    • clusterAdmin rolü için kubeconfig'i indirir.
  • Azure Kubernetes Service Kümesi Kullanıcı Rolü

    • API çağrısına erişime Microsoft.ContainerService/managedClusters/listClusterUserCredential/action izin verir. Bu API çağrısı , küme kullanıcı kimlik bilgilerini listeler.
    • clusterUser rolü için kubeconfig'i indirir.

Not

Microsoft Entra Id kullanan kümelerde, clusterUser rolüne sahip kullanıcıların oturum açma isteminde bulunan boş bir kubeconfig dosyası vardır. Kullanıcılar oturum açtıktan sonra Microsoft Entra kullanıcı veya grup ayarlarına göre erişebilir. clusterAdmin rolüne sahip kullanıcıların yönetici erişimi vardır.

Microsoft Entra Id kullanmayan kümelerde clusterUser rolü clusterAdmin rolünün aynı etkisine sahiptir.

Kullanıcıya veya gruba rol izinleri atama

Kullanılabilir rollerden birini atamak için aşağıdaki adımları kullanarak AKS kümesinin kaynak kimliğini ve Microsoft Entra kullanıcı hesabının veya grubunun kimliğini almanız gerekir:

  1. myResourceGroup kaynak grubundaki az aks show myAKSCluster adlı kümenin komutunu kullanarak küme kaynak kimliğini alın. Gerektiğinde kendi kümenizi ve kaynak grubu adınızı belirtin.
  2. az account show Kullanıcı kimliğinizi almak için ve az ad user show komutlarını kullanın.
  3. komutunu kullanarak bir rol atayın az role assignment create .

Aşağıdaki örnek, Azure Kubernetes Service Cluster Admin Role'yi tek bir kullanıcı hesabına atar:

# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)

# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)

# Assign the 'Cluster Admin' role to the user
az role assignment create \
    --assignee $ACCOUNT_ID \
    --scope $AKS_CLUSTER \
    --role "Azure Kubernetes Service Cluster Admin Role"

Bir Microsoft Entra grubuna izin atamak istiyorsanız, önceki örnekte gösterilen parametreyi --assignee kullanıcı yerine grubun nesne kimliğiyle güncelleştirin.

Bir grubun nesne kimliğini almak için komutunu kullanın az ad group show . Aşağıdaki komut, appdev adlı Microsoft Entra grubunun nesne kimliğini alır:

az ad group show --group appdev --query objectId -o tsv

Önemli

Microsoft Entra konuk kullanıcıları gibi bazı durumlarda hesaptaki user.name userPrincipalName değerinden farklıdır.

$ az account show --query user.name -o tsv
user@contoso.com

$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com

Bu durumda, ACCOUNT_UPN değerini Microsoft Entra kullanıcısından userPrincipalName olarak ayarlayın. Örneğin, hesabınız user.name ise user@contoso.combu eylem aşağıdaki örneğe benzer olacaktır:

ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)

Yapılandırma bilgilerini alma ve doğrulama

Roller atandıktan sonra KOMUTUNU kullanarak az aks get-credentials AKS kümenizin kubeconfig tanımını alın. Aşağıdaki örnek, kullanıcıya Küme Yöneticisi Rolü verilmişse düzgün çalışan --admin kimlik bilgilerini alır:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin

Daha sonra komutunu kullanarak kubectl config view küme bağlamın yönetici yapılandırma bilgilerinin uygulandığını gösterdiğini doğrulayabilirsiniz.

$ kubectl config view

Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://myaksclust-myresourcegroup-19da35-4839be06.hcp.eastus.azmk8s.io:443
  name: myAKSCluster
contexts:
- context:
    cluster: myAKSCluster
    user: clusterAdmin_myResourceGroup_myAKSCluster
  name: myAKSCluster-admin
current-context: myAKSCluster-admin
kind: Config
preferences: {}
users:
- name: clusterAdmin_myResourceGroup_myAKSCluster
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: e9f2f819a4496538b02cefff94e61d35

Rol izinlerini kaldırma

Rol atamalarını kaldırmak için komutunu kullanın az role assignment delete . Önceki adımlarda aldığınız hesap kimliğini ve küme kaynak kimliğini belirtin. Rolü bir kullanıcı yerine bir gruba atadıysanız, parametre için --assignee hesap nesnesi kimliği yerine uygun grup nesnesi kimliğini belirtin.

az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER

Sonraki adımlar

AKS kümelerine erişimde gelişmiş güvenlik için Microsoft Entra kimlik doğrulamasını tümleştirin.