Aracılığıyla paylaş


Kubernetes yetkilendirmesi için Azure rol tabanlı erişim denetimini (RBAC) kullanma

Şunlar için geçerlidir: Azure Stack HCI 23H2 üzerinde AKS

Altyapı yöneticileri kubeconfig dosyasına ve sahip oldukları izinlere kimlerin erişebileceğini denetlemek için Azure rol tabanlı erişim denetimini (Azure RBAC) kullanabilir. Kubernetes işleçleri, verilen izinlere göre kubectl aracını kullanarak Kubernetes kümeleriyle etkileşimde bulunabilir. Azure CLI, kubectl kullanarak 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.

Microsoft Entra Id ile AKS arasında tümleşik kimlik doğrulaması kullandığınızda, Kubernetes rol tabanlı erişim denetiminde (Kubernetes RBAC) konu olarak Microsoft Entra kullanıcılarını, gruplarını veya hizmet sorumlularını kullanabilirsiniz. Bu özellik, Kubernetes için kullanıcı kimliklerini ve kimlik bilgilerini ayrı ayrı yönetmek zorunda bırakmanızı sağlar. Ancak Yine de Azure RBAC ve Kubernetes RBAC'yi ayrı ayrı ayarlamanız ve yönetmeniz gerekir.

Bu makalede, Microsoft Entra Kimliği ve Azure rol atamalarıyla Kubernetes küme yetkilendirmesi için Azure RBAC'nin nasıl kullanılacağı açıklanmaktadır.

Kavramsal genel bakış için bkz . Azure Arc tarafından etkinleştirilen AKS için Kubernetes için Azure RBAC Yetkilendirmesi .

Başlamadan önce

Başlamadan önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  • Azure Stack HCI 23H2 üzerinde AKS şu anda yalnızca Kubernetes kümesi oluşturma sırasında Azure RBAC'nin etkinleştirilmesini desteklemektedir. Kubernetes kümesi oluşturulduktan sonra Azure RBAC'yi etkinleştiremezsiniz.

  • aksarc ve connectedk8s Azure CLI uzantılarının en son sürümünü yükleyin. Azure RBAC'yi etkinleştirmek için aksarc uzantısı sürüm 1.1.1 veya üzerini çalıştırmanız gerektiğini unutmayın. Geçerli sürümü bulmak için komutunu çalıştırın az --version . Azure CLI'yı yüklemeniz veya yükseltmeniz gerekiyorsa bkz . Azure CLI'yı yükleme.

    az extension add --name aksarc
    az extension add --name connectedk8s
    

    Uzantıyı aksarc zaten yüklediyseniz uzantıyı en son sürüme güncelleştirin:

    az extension update --name aksarc
    az extension update --name connectedk8s
    
  • Kubernetes kümeleriyle etkileşim kurmak için kubectl ve kubelogin yüklemeniz gerekir.

  • Kubernetes kümesi oluştururken Azure RBAC'yi etkinleştirmek için aşağıdaki izinlere ihtiyacınız vardır:

    • Kubernetes kümesi oluşturmak için Azure Kubernetes Service Arc Katkıda Bulunanı rolüne sahip olmanız gerekir.
    • parametresini --enable-azure-rbac kullanmak için, Microsoft.Authorization/roleAssignments/write iznine erişim için Rol Tabanlı Erişim Denetimi Yöneticisi rolüne sahip olmanız gerekir. Daha fazla bilgi için bkz. Azure yerleşik rolleri.
    • Yeni rol atamalarının yayılması beş dakika kadar sürebilir ve yetkilendirme sunucusu tarafından güncelleştirilebilir.
  • Azure RBAC etkinleştirildikten sonra, doğrudan modu veya ara sunucu modunu kullanarak verilen izinlerle Kubernetes kümenize erişebilirsiniz.

    • Kubernetes kümesine az aksarc get-credentials doğrudan komutunu kullanarak erişmek için Azure Kubernetes Service Arc Kümesi Kullanıcı rolü iznine dahil edilen Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action gereklidir.
    • Komutunu kullanarakaz connectedk8s proxy ara sunucu moduyla Kubernetes kümesine her yerden erişmek için Azure Arc özellikli Kubernetes Kümesi Kullanıcı rolü iznine dahil edilen Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action gereklidir. Bu arada, aracıların ve ekleme işlemini gerçekleştiren makinenin Azure Arc özellikli Kubernetes ağ gereksinimlerinde belirtilen ağ gereksinimlerini karşılayıp karşılamadığını doğrulamanız gerekir.
  • Kubectl'yi kullanmak için Azure RBAC veya AAD Yönetici Grubu'nı kullanarak erişebilirsiniz.

    • Azure RBAC ile kubectl kullanmak için Azure Arc Kubernetes Viewer rolünün kapsamı bağlı küme kaynağı olarak belirlenmiş olmalıdır.
    • Kubectl'yi AAD Yönetici Grubu ile kullanmak için belirli bir role ihtiyacınız yoktur, ancak bağlı küme kaynağının add-admin-group listesindeki gruplardan birinde olduğunuzdan emin olmanız gerekir.

1. Adım: Azure RBAC özellikli Kubernetes kümesi oluşturma

Yetkilendirme için Azure RBAC özellikli bir Kubernetes kümesi ve kimlik doğrulaması için Microsoft Entra Id oluşturabilirsiniz.

az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --control-plane-ip $controlplaneIP --enable-azure-rbac

Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür.

2. Adım: Kullanıcıların kümeye erişmesi için rol atamaları oluşturma

Azure Arc tarafından etkinleştirilen AKS aşağıdaki yerleşik rolleri sağlar:

Rol Açıklama
Azure Arc Kubernetes Viewer Ad alanında çoğu nesneyi görmek için salt okunur erişime izin verir.
Rollerin veya rol bağlamalarının görüntülenmesine izin vermez.
Gizli diziler üzerindeki izin ad alanında kimlik bilgilerine erişim sağladığından ServiceAccount görüntülemeye izin secretsread vermez ve bu da ad alanında herhangi bir ServiceAccount API erişimine izin verir (ayrıcalık yükseltme biçimi).
Azure Arc Kubernetes Yazıcı Ad alanı içindeki çoğu nesneye okuma/yazma erişimine izin verir.
Rollerin veya rol bağlamalarının görüntülenmesine veya değiştirilmesine izin vermez.
Podlara ad alanında herhangi bir ServiceAccount şekilde erişmeye secrets ve çalıştırmaya izin verir, bu nedenle ad alanında herhangi birinin ServiceAccount API erişim düzeylerini elde etmek için kullanılabilir.
Azure Arc Kubernetes Yöneticisi Ad alanı içinde verilmesi amaçlanan yönetici erişimine izin verir.
Ad alanı içinde rol ve rol bağlamaları oluşturma özelliği de dahil olmak üzere bir ad alanında (veya küme kapsamındaki) çoğu kaynağa okuma/yazma erişimi sağlar.
Kaynak kotasına veya ad alanına yazma erişimine izin vermez.
Azure Arc Kubernetes Küme Yöneticisi "Süper kullanıcı" erişiminin herhangi bir kaynak üzerinde herhangi bir eylem gerçekleştirmesine izin verir.
Kümedeki ve tüm ad alanlarındaki her kaynak üzerinde tam denetim sağlar.

Rol atamaları oluşturmak için komutunu kullanabilirsiniz az role assignment create .

İlk olarak, rol atamak istediğiniz hedef küme için öğesini alın $ARM-ID .

$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)

Ardından Kubernetes kümenize rol atamak için komutunu kullanın az role assignment create . İlk adımda ve bu adım için öğesini assignee-object-id sağlamanız $ARM_ID gerekir. Bir assignee-object-id Microsoft Entra Kimliği veya hizmet sorumlusu istemci kimliği olabilir.

Aşağıdaki örnek, Kubernetes kümesine Azure Arc Kubernetes Viewer rolünü atar:

az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID

Bu örnekte kapsam, kümenin Azure Resource Manager kimliğidir. Kubernetes kümesini içeren kaynak grubu da olabilir.

Özel rol tanımları oluşturma

Rol atamalarında kullanmak üzere kendi rol tanımınızı oluşturmayı seçebilirsiniz.

Aşağıdaki örnekte, kullanıcının yalnızca dağıtımları okumasına izin veren bir rol tanımı gösterilmektedir. Daha fazla bilgi için rol tanımı oluşturmak için kullanabileceğiniz veri eylemlerinin tam listesine bakın. Özel rol oluşturma hakkında daha fazla bilgi için bkz. Özel rol oluşturma adımları

Kendi özel rol tanımlarınızı oluşturmak için aşağıdaki JSON nesnesini custom-role.json adlı bir dosyaya kopyalayın. Yer tutucuyu <subscription-id> gerçek abonelik kimliğiyle değiştirin. Özel rol, veri eylemlerinden birini kullanır ve rol atamasının oluşturulduğu kapsamdaki (küme veya ad alanı) tüm dağıtımları görüntülemenizi sağlar.

{
    "Name": "AKS Arc Deployment Reader",
    "Description": "Lets you view all deployments in cluster/namespace.",
    "Actions": [],
    "NotActions": [],
    "DataActions": [
        "Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
    ],
    "NotDataActions": [],
    "assignableScopes": [
        "/subscriptions/<YOUR SUBSCRIPTION ID>"
    ]
}

Özel roller ve bunları yazma hakkında bilgi için bkz . Azure özel rolleri.

komutunu kullanarak az role definition create rol tanımını oluşturun ve parametresini --role-definition önceki adımda oluşturduğunuz deploy-view.json dosyasına ayarlayın:

az role definition create --role-definition @deploy-view.json 

Komutunu kullanarak rol tanımını bir kullanıcıya veya başka bir kimliğe atayın az role assignment create :

az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID

3. Adım: Kubernetes kümesine erişme

Artık kubernetes kümenize doğrudan modu veya ara sunucu modunu kullanarak verilen izinlerle erişebilirsiniz.

Kubectl (doğrudan mod) ile kümenize erişme

Verilen izinlerle Kubernetes kümesine erişmek için Kubernetes işlecinin komutunu kullanarak az aksarc get-credentials edinebileceğiniz Microsoft Entra kubeconfig'e ihtiyacı vardır. Bu komut, yönetici tabanlı kubeconfig'e ve kullanıcı tabanlı kubeconfig'e erişim sağlar. Yönetici tabanlı kubeconfig dosyası gizli diziler içerir ve düzenli aralıklarla güvenli bir şekilde depolanması ve döndürülmesi gerekir. Öte yandan kullanıcı tabanlı Microsoft Entra ID kubeconfig gizli diziler içermez ve istemci makinelerinden bağlanan kullanıcılara dağıtılabilir.

Bu Azure CLI komutunu çalıştırmak için, Azure Kubernetes Service Arc Kümesi Kullanıcı rolü iznine dahil edilen Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action gereklidir:

az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>

Artık kubectl kullanarak kümenizi yönetebilirsiniz. Örneğin, kullanarak kubectl get nodeskümenizdeki düğümleri listeleyebilirsiniz. İlk kez çalıştırdığınızda, aşağıdaki örnekte gösterildiği gibi oturum açmanız gerekir:

kubectl get nodes

Kümenize bir istemci cihazından (proxy modu) erişme

Komutunu kullanarak az connectedk8s proxy ara sunucu moduyla Kubernetes kümesine her yerden erişmek için Azure Arc özellikli Kubernetes Kümesi Kullanıcı rolü iznine dahil edilen Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action gereklidir.

Aşağıdaki adımları başka bir istemci cihazında çalıştırın:

  1. Microsoft Entra kimlik doğrulamasını kullanarak oturum açma

  2. Kümeyle her yerden (kümeyi çevreleyen güvenlik duvarının dışından bile) iletişim kurmak için gereken küme bağlantısı kubeconfig'i edinin:

    az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
    

    Not

    Bu komut proxy'yi açar ve geçerli kabuğu engeller.

  3. Farklı bir kabuk oturumunda, kümeye istek göndermek için kullanın kubectl :

    kubectl get pods -A
    

Şimdi kümeden ad alanı altındaki default tüm podların listesini içeren bir yanıt görmeniz gerekir.

Daha fazla bilgi için bkz . İstemci cihazından kümenize erişme.

Kaynakları temizleme

Rol atamasını sil

# List role assignments
az role assignment list --scope $ARM_ID --query [].id -o tsv

# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>

Rol tanımını silme

az role definition delete -n "AKS Arc Deployment Reader"

Sonraki adımlar