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 kubectl
AKS 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.
- API çağrısına erişime
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.
- API çağrısına erişime
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:
- 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. az account show
Kullanıcı kimliğinizi almak için veaz ad user show
komutlarını kullanın.- 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.
Azure Kubernetes Service