Azure Arc özellikli Kubernetes kümelerinde Azure RBAC kullanma (önizleme)

Kubernetes ClusterRoleBinding ve RoleBinding nesne türleri, Kubernetes'te yerel olarak yetkilendirme tanımlamaya yardımcı olur. Bu özelliği kullanarak Azure'daki Microsoft Entra Id ve rol atamalarını kullanarak kümedeki yetkilendirme denetimlerini denetleyebilirsiniz. Azure rol atamaları, hangi kullanıcıların dağıtım, pod ve hizmet gibi Kubernetes nesnelerini okuyabileceğini, yazabileceğini ve silebileceğini ayrıntılı olarak denetlemenize olanak sağlar.

Bu özelliğe kavramsal genel bakış için bkz . Azure Arc özellikli Kubernetes üzerinde Azure RBAC.

Önemli

Azure Arc özellikli Kubernetes önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. Azure Arc özellikli Kubernetes önizlemeleri, müşteri desteği kapsamındadır.

Önkoşullar

  • Azure CLI'yi yükleyin veya en son sürüme yükseltin.

  • Azure CLI uzantısının connectedk8s en son sürümünü yükleyin:

    az extension add --name connectedk8s
    

    connectedk8s Uzantı zaten yüklüyse, aşağıdaki komutu kullanarak uzantıyı en son sürüme güncelleştirebilirsiniz:

    az extension update --name connectedk8s
    
  • Mevcut Azure Arc özellikli Kubernetes kümesini bağlama:

Not

Bu özelliği Red Hat OpenShift veya kullanıcının kümenin API sunucusuna erişimi olmayan Elastic Kubernetes Service veya Google Kubernetes Engine gibi bulut sağlayıcılarının yönetilen Kubernetes teklifleri için ayarlayamazsınız. Azure Kubernetes Service (AKS) kümeleri için bu özellik yerel olarak kullanılabilir ve AKS kümesinin Azure Arc'a bağlanması gerekmez.

Microsoft Entra uygulamalarını ayarlama

Sunucu uygulaması oluşturma

  1. Yeni bir Microsoft Entra uygulaması oluşturun ve değerini appId alın. Bu değer, sonraki adımlarda olarak serverApplicationIdkullanılır.

    CLUSTER_NAME="<name-of-arc-connected-cluster>"
    TENANT_ID="<tenant>"
    SERVER_UNIQUE_SUFFIX="<identifier_suffix>"
    SERVER_APP_ID=$(az ad app create --display-name "${CLUSTER_NAME}Server" --identifier-uris "api://${TENANT_ID}/${SERVER_UNIQUE_SUFFIX}" --query appId -o tsv)
    echo $SERVER_APP_ID
    
  2. Sunucu uygulamasına "Oturum açma ve kullanıcı profilini okuma" API izinleri vermek için bu JSON dosyasını kopyalayın ve oauth2-permissions.json adlı bir dosyaya kaydedin:

    {
        "oauth2PermissionScopes": [
            {
                "adminConsentDescription": "Sign in and read user profile",
                "adminConsentDisplayName": "Sign in and read user profile",
                "id": "<paste_the_SERVER_APP_ID>",
                "isEnabled": true,
                "type": "User",
                "userConsentDescription": "Sign in and read user profile",
                "userConsentDisplayName": "Sign in and read user profile",
                "value": "User.Read"
            }
        ]
    }
    
  3. Uygulamanın grup üyeliği taleplerini güncelleştirin. Komutları dosyayla aynı dizinde oauth2-permissions.json çalıştırın. Azure Arc özellikli Kubernetes için RBAC'nin AzureADMyOrg olarak ayarlanması gerekirsignInAudience:

    az ad app update --id "${SERVER_APP_ID}" --set groupMembershipClaims=All
    az ad app update --id ${SERVER_APP_ID} --set  api=@oauth2-permissions.json
    az ad app update --id ${SERVER_APP_ID} --set  signInAudience=AzureADMyOrg
    SERVER_OBJECT_ID=$(az ad app show --id "${SERVER_APP_ID}" --query "id" -o tsv)
    az rest --method PATCH --headers "Content-Type=application/json" --uri https://graph.microsoft.com/v1.0/applications/${SERVER_OBJECT_ID}/ --body '{"api":{"requestedAccessTokenVersion": 1}}'
    
  4. Bir hizmet sorumlusu oluşturun ve alan değerini alın password . Bu değer daha sonra kümede bu özelliği etkinleştirirken olduğu gibi serverApplicationSecret gereklidir. Bu gizli dizi varsayılan olarak bir yıl geçerlidir ve bundan sonra döndürülür. Özel süre sonu süresi ayarlamak için kullanın az ad sp credential reset:

    az ad sp create --id "${SERVER_APP_ID}"
    SERVER_APP_SECRET=$(az ad sp credential reset --id "${SERVER_APP_ID}"  --query password -o tsv) 
    
  5. kullanarak az ad app permissionuygulamaya "Oturum aç ve kullanıcı profilini oku" API izinleri verin:

    az ad app permission add --id "${SERVER_APP_ID}" --api 00000003-0000-0000-c000-000000000000 --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope
    az ad app permission grant --id "${SERVER_APP_ID}" --api 00000003-0000-0000-c000-000000000000 --scope User.Read
    

    Not

    Azure uygulama yöneticisinin bu adımı çalıştırması gerekir.

    Bu özelliğin üretim ortamında kullanılması için her küme için farklı bir sunucu uygulaması oluşturmanızı öneririz.

İstemci uygulaması oluşturma

  1. Yeni bir Microsoft Entra uygulaması oluşturun ve değerini appId alın. Bu değer, sonraki adımlarda olarak clientApplicationIdkullanılır.

    CLIENT_UNIQUE_SUFFIX="<identifier_suffix>" 
    CLIENT_APP_ID=$(az ad app create --display-name "${CLUSTER_NAME}Client" --is-fallback-public-client --public-client-redirect-uris "api://${TENANT_ID}/${CLIENT_UNIQUE_SUFFIX}" --query appId -o tsv)
    echo $CLIENT_APP_ID 
    
  2. Bu istemci uygulaması için bir hizmet sorumlusu oluşturun:

    az ad sp create --id "${CLIENT_APP_ID}"
    
  3. Sunucu uygulamasının oAuthPermissionId değerini alın:

        az ad app show --id "${SERVER_APP_ID}" --query "api.oauth2PermissionScopes[0].id" -o tsv
    
  4. İstemci uygulaması için gerekli izinleri verin. Azure Arc özellikli Kubernetes için RBAC'nin AzureADMyOrg olarak ayarlanması gerekirsignInAudience:

        az ad app permission add --id "${CLIENT_APP_ID}" --api "${SERVER_APP_ID}" --api-permissions <oAuthPermissionId>=Scope
        RESOURCE_APP_ID=$(az ad app show --id "${CLIENT_APP_ID}"  --query "requiredResourceAccess[0].resourceAppId" -o tsv)
        az ad app permission grant --id "${CLIENT_APP_ID}" --api "${RESOURCE_APP_ID}" --scope User.Read
        az ad app update --id ${CLIENT_APP_ID} --set  signInAudience=AzureADMyOrg
        CLIENT_OBJECT_ID=$(az ad app show --id "${CLIENT_APP_ID}" --query "id" -o tsv)
        az rest --method PATCH --headers "Content-Type=application/json" --uri https://graph.microsoft.com/v1.0/applications/${CLIENT_OBJECT_ID}/ --body '{"api":{"requestedAccessTokenVersion": 1}}'
    

Sunucu uygulaması için rol ataması oluşturma

Sunucu uygulaması, istekte Microsoft.Authorization/*/read bulunan Kubernetes nesnelerinde istekte bulunan kullanıcının yetkilendirildiğini onaylayabilmesi için izinlere ihtiyaç duyar.

  1. aşağıdaki içeriklere sahip accessCheck.json adlı bir dosya oluşturun:

    {
    "Name": "Read authorization",
    "IsCustom": true,
    "Description": "Read authorization",
    "Actions": ["Microsoft.Authorization/*/read"],
    "NotActions": [],
    "DataActions": [],
    "NotDataActions": [],
    "AssignableScopes": [
      "/subscriptions/<subscription-id>"
      ]
    }
    

    değerini gerçek abonelik kimliğiyle değiştirin <subscription-id> .

  2. Yeni özel rolü oluşturmak için aşağıdaki komutu çalıştırın:

    ROLE_ID=$(az role definition create --role-definition ./accessCheck.json --query id -o tsv)
    
  3. Oluşturduğunuz rolü kullanarak sunucu uygulamasında olduğu gibi assignee bir rol ataması oluşturun:

    az role assignment create --role "${ROLE_ID}" --assignee "${SERVER_APP_ID}" --scope /subscriptions/<subscription-id>
    

Kümede Azure RBAC’yi etkinleştirme

Aşağıdaki komutu çalıştırarak Azure Arc özellikli Kubernetes kümenizde Azure rol tabanlı erişim denetimini (RBAC) etkinleştirin:

az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features azure-rbac --app-id "${SERVER_APP_ID}" --app-secret "${SERVER_APP_SECRET}"

Not

Yukarıdaki komutu çalıştırmadan önce, makinedeki dosyanın Azure RBAC özelliğini etkinleştirebileceğiniz kümeyi işaret ettiğinden emin olun kubeconfig .

Azure RBAC yerine Kubernetes yerel ClusterRoleBinding ve RoleBinding nesneleri kullanarak yetkilendirme denetimlerinden geçen kullanıcı adları, e-postalar ve OpenID bağlantılarının virgülle ayrılmış listesi için yukarıdaki komutla kullanın--skip-azure-rbac-list.

Belirtim üzerinde apiserver hiçbir reconcinin çalışmadığı genel küme

  1. Kümenin her ana düğümüne SSH ekleyin ve aşağıdaki adımları uygulayın:

    Statik podunuz kube-apiservervarsa:

    1. azure-arc-guard-manifests Ad alanında gizli kube-system dizi iki dosya içerir: guard-authn-webhook.yaml ve guard-authz-webhook.yaml. Bu dosyaları düğümün /etc/guard dizinine kopyalayın.

      sudo mkdir -p /etc/guard
      kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authn-webhook.yaml"' | base64 -d > /etc/guard/guard-authn-webhook.yaml
      kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authz-webhook.yaml"' | base64 -d > /etc/guard/guard-authz-webhook.yaml
      
    2. apiserver Bildirimi düzenleme modunda açın:

      sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
      
    3. altına volumesaşağıdaki belirtimi ekleyin:

      - name: azure-rbac
          hostPath:
          path: /etc/guard
          type: Directory
      
    4. altına volumeMountsaşağıdaki belirtimi ekleyin:

      - mountPath: /etc/guard
          name: azure-rbac
          readOnly: true
      

    Statik kube-apiserver podunuz değilse:

    1. apiserver Bildirimi düzenleme modunda açın:

      sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
      
    2. altına volumesaşağıdaki belirtimi ekleyin:

      - name: azure-rbac
          secret:
          secretName: azure-arc-guard-manifests
      
    3. altına volumeMountsaşağıdaki belirtimi ekleyin:

      - mountPath: /etc/guard
          name: azure-rbac
          readOnly: true
      
  2. Aşağıdaki apiserver bağımsız değişkenleri ekleyin:

    - --authentication-token-webhook-config-file=/etc/guard/guard-authn-webhook.yaml
    - --authentication-token-webhook-cache-ttl=5m0s
    - --authorization-webhook-cache-authorized-ttl=5m0s
    - --authorization-webhook-config-file=/etc/guard/guard-authz-webhook.yaml
    - --authorization-webhook-version=v1
    - --authorization-mode=Node,RBAC,Webhook
    

    Kubernetes kümesi sürüm 1.19.0 veya üzeriyse, aşağıdaki apiserver bağımsız değişkeni de ayarlamanız gerekir:

    - --authentication-token-webhook-version=v1
    
  3. Podu güncelleştirmek için düzenleyiciyi apiserver kaydedin ve kapatın.

Küme API'si kullanılarak oluşturulan küme

  1. kimlik doğrulaması ve yetkilendirme web kancası yapılandırma dosyalarını içeren koruma gizli dizisini iş yükü kümesinden makinenize kopyalayın:

    kubectl get secret azure-arc-guard-manifests -n kube-system -o yaml > azure-arc-guard-manifests.yaml
    
  2. namespace azure-arc-guard-manifests.yaml dosyasındaki alanı, iş yükü kümelerinin oluşturulması için özel kaynakları uyguladığınız yönetim kümesindeki ad alanıyla değiştirin.

  3. Bu bildirimi uygula:

    kubectl apply -f azure-arc-guard-manifests.yaml
    
  4. KubeadmControlPlane komutunu çalıştırarak kubectl edit kcp <clustername>-control-planenesnesini düzenleyin:

    1. altına filesaşağıdaki kod parçacığını ekleyin:

      - contentFrom:
          secret:
            key: guard-authn-webhook.yaml
            name: azure-arc-guard-manifests
        owner: root:root
        path: /etc/kubernetes/guard-authn-webhook.yaml
        permissions: "0644"
      - contentFrom:
          secret:
            key: guard-authz-webhook.yaml
            name: azure-arc-guard-manifests
        owner: root:root
        path: /etc/kubernetes/guard-authz-webhook.yaml
        permissions: "0644"
      
    2. altına apiServer>extraVolumesaşağıdaki kod parçacığını ekleyin:

      - hostPath: /etc/kubernetes/guard-authn-webhook.yaml
          mountPath: /etc/guard/guard-authn-webhook.yaml
          name: guard-authn
          readOnly: true
      - hostPath: /etc/kubernetes/guard-authz-webhook.yaml
          mountPath: /etc/guard/guard-authz-webhook.yaml
          name: guard-authz
          readOnly: true
      
    3. altına apiServer>extraArgsaşağıdaki kod parçacığını ekleyin:

      authentication-token-webhook-cache-ttl: 5m0s
      authentication-token-webhook-config-file: /etc/guard/guard-authn-webhook.yaml
      authentication-token-webhook-version: v1
      authorization-mode: Node,RBAC,Webhook
      authorization-webhook-cache-authorized-ttl: 5m0s
      authorization-webhook-config-file: /etc/guard/guard-authz-webhook.yaml
      authorization-webhook-version: v1
      
    4. Nesneyi güncelleştirmek KubeadmControlPlane için kaydedin ve kapatın. Bu değişikliklerin iş yükü kümesinde görünmesini bekleyin.

Kullanıcıların kümeye erişmesi için rol atamalarını oluşturma

Azure Arc özellikli Kubernetes kaynağının sahipleri, diğer kullanıcılara Kubernetes kümesine erişim vermek için yerleşik rolleri veya özel rolleri kullanabilir.

Yerleşik roller

Rol Açıklama
Azure Arc Kubernetes Viewer Ad alanında çoğu nesneyi görmek için salt okunur erişime izin verir. Gizli diziler üzerindeki izin ad alanında kimlik bilgilerine erişimi etkinleştireceğinden bu read rol gizli dizileri görüntülemeye ServiceAccount izin vermez. Bu kimlik bilgileri de bu değer (ayrıcalık yükseltme biçimi) aracılığıyla ServiceAccount API erişimine izin verir.
Azure Arc Kubernetes Yazıcı Ad alanı içindeki çoğu nesneye okuma/yazma erişimine izin verir. Bu rol, rollerin veya rol bağlamalarının görüntülenmesine veya değiştirilmesine izin vermez. Ancak, bu rol gizli dizilere erişmeye ve podları ad alanında herhangi bir ServiceAccount değer olarak çalıştırmaya olanak tanır, bu nedenle ad alanında herhangi bir ServiceAccount değerin API erişim düzeylerini kazanmak için kullanılabilir.
Azure Arc Kubernetes Yönetici Yönetici erişimine izin verir. aracılığıyla RoleBindingbir ad alanı içinde verilmesi amaçlanmıştır. içinde RoleBindingkullanıyorsanız, ad alanında rol ve rol bağlamaları oluşturma özelliği de dahil olmak üzere ad alanı içindeki kaynakların çoğuna okuma/yazma erişimi sağlar. Bu rol, kaynak kotasına veya ad alanının kendisine yazma erişimine izin vermez.
Azure Arc Kubernetes Kümesi Yönetici Süper kullanıcı erişiminin herhangi bir kaynakta herhangi bir eylemi yürütmesine izin verir. içinde ClusterRoleBindingkullandığınızda, kümedeki ve tüm ad alanlarındaki her kaynak üzerinde tam denetim sağlar. içinde RoleBindingkullandığınızda, rol bağlamasının ad alanında ad alanı da dahil olmak üzere tüm kaynaklar üzerinde tam denetim sağlar.

Azure portalda , küme kaynağının Erişim Denetimi (IAM) bölmesinde Azure Arc özellikli Kubernetes kümesi kapsamında rol atamaları oluşturabilirsiniz. Aşağıdaki Azure CLI komutlarını da kullanabilirsiniz:

az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID

Bu komutlarda, AZURE-AD-ENTITY-ID bir kullanıcı adı (örneğin, testuser@mytenant.onmicrosoft.com) ve hatta appId hizmet sorumlusunun değeri olabilir.

Aşağıda, küme içindeki belirli bir ad alanı kapsamında bir rol ataması oluşturma örneği verilmişti:

az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>

Not

Azure portalını veya Azure CLI'yi kullanarak küme kapsamında rol atamaları oluşturabilirsiniz. Ancak, ad alanları kapsamında rol atamaları oluşturmak için yalnızca Azure CLI kullanılabilir.

Özel roller

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

Kullanıcının yalnızca dağıtımları okumasına izin veren rol tanımının aşağıdaki örneğini inceleyin. Daha fazla bilgi için rol tanımı oluşturmak için kullanabileceğiniz veri eylemlerinin tam listesine bakın.

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": "Arc Deployment Viewer",
    "Description": "Lets you view all deployments in cluster/namespace.",
    "Actions": [],
    "NotActions": [],
    "DataActions": [
        "Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
    ],
    "NotDataActions": [],
    "assignableScopes": [
        "/subscriptions/<subscription-id>"
    ]
}
  1. custom-role.json kaydettiğiniz klasörden aşağıdaki komutu çalıştırarak rol tanımını oluşturun:

    az role definition create --role-definition @custom-role.json
    
  2. Bu özel rol tanımını kullanarak rol ataması oluşturun:

    az role assignment create --role "Arc Deployment Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>
    

Kubectl'i kullanıcı kimlik bilgileriyle yapılandırma

Kümeye erişmek için ihtiyacınız olan kubeconfig dosyasını almanın iki yolu vardır:

Küme bağlantısını kullanma

Ara sunucu işlemini başlatmak için aşağıdaki komutu çalıştırın:

az connectedk8s proxy -n <clusterName> -g <resourceGroupName>

Ara sunucu işlemi çalıştırıldıktan sonra, isteklerinizi kümeye göndermeye başlamak için konsolunuzda başka bir sekme açabilirsiniz.

Paylaşılan kubeconfig dosyası kullanma

Paylaşılan bir kubeconfig kullanmak için Kubernetes sürümünüze bağlı olarak biraz farklı adımlar gerekir.

  1. Kullanıcının kimlik bilgilerini ayarlamak için aşağıdaki komutu çalıştırın:

    kubectl config set-credentials <testuser>@<mytenant.onmicrosoft.com> \
    --auth-provider=azure \
    --auth-provider-arg=environment=AzurePublicCloud \
    --auth-provider-arg=client-id=<clientApplicationId> \
    --auth-provider-arg=tenant-id=<tenantId> \
    --auth-provider-arg=apiserver-id=<serverApplicationId>
    
  2. Daha önce oluşturduğunuz kubeconfig dosyasını açın. altında contexts, kümeyle ilişkili bağlamın önceki adımda oluşturduğunuz kullanıcı kimlik bilgilerini işaret ettiğini doğrulayın. Geçerli bağlamı bu kullanıcı kimlik bilgilerine ayarlamak için aşağıdaki komutu çalıştırın:

    kubectl config set-context --current=true --user=<testuser>@<mytenant.onmicrosoft.com>
    
  3. altında yapılandırma modu ayarını user>configekleyin:

    name: testuser@mytenant.onmicrosoft.com
    user:
        auth-provider:
        config:
            apiserver-id: $SERVER_APP_ID
            client-id: $CLIENT_APP_ID
            environment: AzurePublicCloud
            tenant-id: $TENANT_ID
            config-mode: "1"
        name: azure
    

Not

Exec eklentisi , adresine gönderilecek kullanıcı kimlik bilgilerini almak için bir dış komut yürütmeye olanak tanıyan kubectl bir Kubernetes kimlik doğrulama stratejisidir apiserver. Kubernetes sürüm 1.26'dan başlayarak, varsayılan Azure yetkilendirme eklentisi artık ve kubectl'ye client-go dahil değildir. Sonraki sürümlerde, kullanıcı kimlik bilgilerini almak için exec eklentisini kullanmak için Azure kimlik doğrulamasını uygulayan bir client-go kimlik bilgisi (exec) eklentisi olan Azure Kubelogin'i kullanmanız gerekir.

  1. Azure Kubelogin'i yükleme:

    • Windows veya Mac için Azure Kubelogin yükleme yönergelerini izleyin.

    • Linux veya Ubuntu için kubelogin'in en son sürümünü indirin ve aşağıdaki komutları çalıştırın:

      curl -LO https://github.com/Azure/kubelogin/releases/download/"$KUBELOGIN_VERSION"/kubelogin-linux-amd64.zip 
      
      unzip kubelogin-linux-amd64.zip 
      
      sudo mv bin/linux_amd64/kubelogin /usr/local/bin/ 
      
      sudo chmod +x /usr/local/bin/kubelogin 
      
  2. Kubelogin'i uygun oturum açma modunu kullanacak şekilde dönüştürün. Örneğin, bir Microsoft Entra kullanıcısı ile cihaz koduyla oturum açma için komutlar aşağıdaki gibi olacaktır:

    export KUBECONFIG=/path/to/kubeconfig
    
    kubelogin convert-kubeconfig
    

Kümeye istek gönderme

  1. Herhangi bir kubectl komutu çalıştırın. Örneğin:

    • kubectl get nodes
    • kubectl get pods
  2. Tarayıcı tabanlı kimlik doğrulaması istendikten sonra cihaz oturum açma URL'sini (https://microsoft.com/devicelogin) kopyalayın ve web tarayıcınızda açın.

  3. Konsolunuza yazdırılan kodu girin. Kodu kopyalayıp terminalinizde cihaz kimlik doğrulaması girişi istemine yapıştırın.

  4. Kullanıcı adını (testuser@mytenant.onmicrosoft.com) ve ilişkili parolayı girin.

  5. Bunun gibi bir hata iletisi görürseniz, istenen kaynağa erişme yetkiniz yok demektir:

    Error from server (Forbidden): nodes is forbidden: User "testuser@mytenant.onmicrosoft.com" cannot list resource "nodes" in API group "" at the cluster scope: User doesn't have access to the resource in Azure. Update role assignment to allow access.
    

    Bir yöneticinin, bu kullanıcıya kaynak üzerinde erişim izni veren yeni bir rol ataması oluşturması gerekir.

Koşullu Erişimi Microsoft Entra Id ile kullanma

Microsoft Entra ID'yi Azure Arc özellikli Kubernetes kümenizle tümleştirdiğinizde, kümenize erişimi denetlemek için Koşullu Erişim'i de kullanabilirsiniz.

Not

Microsoft Entra Koşullu Erişim bir Microsoft Entra ID P2 özelliğidir.

Kümeyle kullanılacak örnek bir Koşullu Erişim ilkesi oluşturmak için:

  1. Azure portalının üst kısmında Microsoft Entra Id'yi arayın ve seçin.

  2. Sol taraftaki Microsoft Entra Id menüsünde Kurumsal uygulamalar'ı seçin.

  3. Sol taraftaki kurumsal uygulamalar menüsünde Koşullu Erişim'i seçin.

  4. Sol taraftaki Koşullu Erişim menüsünde İlkeler>Yeni ilke'yi seçin.

    Azure portalında koşullu erişim ilkesinin nasıl ekleneceğini gösteren ekran görüntüsü.

  5. İlke için arc-k8s-policy gibi bir ad girin.

  6. Kullanıcı ve gruplar'ı seçin. Ekle'nin altında Kullanıcıları ve grupları seç'i seçin. Ardından ilkeyi uygulamak istediğiniz kullanıcıları ve grupları seçin. Bu örnek için kümenize yönetici erişimi olan Microsoft Entra grubunu seçin.

    Koşullu Erişim ilkesini uygulamak için kullanıcıları veya grupları seçmeyi gösteren ekran görüntüsü.

  7. Bulut uygulamaları veya eylemleri’ni seçin. Ekle'nin altında Uygulama seç'i seçin. Ardından daha önce oluşturduğunuz sunucu uygulamasını arayın ve seçin.

    Azure portalında bir sunucu uygulamasının nasıl seçiliyor olduğunu gösteren ekran görüntüsü.

  8. Erişim denetimleri'nin altında Ver'i seçin. Erişim>ver Cihazın uyumlu olarak işaretlenmesini gerektir'i seçin.

    Azure portalında yalnızca uyumlu cihazlara izin verme işlemini gösteren ekran görüntüsü.

  9. İlkeyi etkinleştir'in altında OluşturmaDa'yı> seçin.

    Azure portalında koşullu erişim ilkesini etkinleştirmeyi gösteren ekran görüntüsü.

Kümeye yeniden erişin. Örneğin, kümedeki kubectl get nodes düğümleri görüntülemek için komutunu çalıştırın:

kubectl get nodes

Yeniden oturum açmak için yönergeleri izleyin. Hata iletisinde başarıyla oturum açtığınız ancak yöneticinizin kaynağa erişmek için erişim isteyen cihazın Microsoft Entra Id tarafından yönetilmesini gerektirdiğini belirtir. Şu adımları izleyin:

  1. Azure portalında Microsoft Entra Id'ye gidin.

  2. Kurumsal uygulamalar'ı seçin. Ardından Etkinlik'in altında Oturum açmalar'ı seçin.

  3. En üstteki girdide Durum başarısız oldu ve Koşullu Erişim için Başarı gösterildi. Girdiyi seçin ve ardından Ayrıntılar'da Koşullu Erişim'i seçin. Koşullu Erişim ilkenizin listelendiğine dikkat edin.

    Azure portalında başarısız oturum açma girişini gösteren ekran görüntüsü.

Microsoft Entra Id ile tam zamanında küme erişimini yapılandırma

Küme erişim denetimi için bir diğer seçenek de tam zamanında istekler için Privileged Identity Management (PIM) kullanmaktır.

Not

Microsoft Entra PIM , bir Microsoft Entra ID P2 özelliğidir. Microsoft Entra ID SKU'ları hakkında daha fazla bilgi için fiyatlandırma kılavuzuna bakın.

Kümeniz için tam zamanında erişim isteklerini yapılandırmak için aşağıdaki adımları tamamlayın:

  1. Azure portalının üst kısmında Microsoft Entra Id'yi arayın ve seçin.

  2. Kiracı kimliğini not alın. Bu yönergelerin geri kalanı için bu kimliği olarak <tenant-id>adlandıracağız.

    Azure portalında Microsoft Entra Id ayrıntılarını gösteren ekran görüntüsü.

  3. Sol taraftaki Microsoft Entra Id menüsünde, Yönet'in altında Gruplar>Yeni grup'u seçin.

  4. Grup türü için Güvenlik'in seçili olduğundan emin olun. myJITGroup gibi bir grup adı girin. Microsoft Entra rolleri bu gruba atanabilir (Önizleme) altında Evet'i seçin. Son olarak Oluştur'u seçin.

    Azure portalında yeni grubun ayrıntılarını gösteren ekran görüntüsü.

  5. Gruplar sayfasına geri dönersiniz. Yeni oluşturduğunuz grubu seçin ve nesne kimliğini not alın. Bu yönergelerin geri kalanı için bu kimliği olarak <object-id>adlandıracağız.

    Azure portalında yeni grubun nesne kimliğini gösteren ekran görüntüsü.

  6. Azure portalında sol taraftaki Etkinlik menüsünde Ayrıcalıklı Erişim (Önizleme) seçeneğini belirleyin. Ardından Ayrıcalıklı Erişimi Etkinleştir'i seçin.

    Azure portalında ayrıcalıklı erişimi etkinleştirme seçimlerini gösteren ekran görüntüsü.

  7. Erişim verme işlemine başlamak için Atama ekle'yi seçin.

    Azure portalında etkin atamaların nasıl ekleneceğini gösteren ekran görüntüsü.

  8. Üye rolünü seçin ve küme erişimi vermek istediğiniz kullanıcıları ve grupları seçin. Bir grup yöneticisi bu atamaları istediği zaman değiştirebilir. Devam etmeye hazır olduğunuzda İleri'yi seçin.

    Azure portalında atamaların nasıl ekleneceğini gösteren ekran görüntüsü.

  9. Etkin atama türünü seçin, istenen süreyi seçin ve bir gerekçe belirtin. Devam etmeye hazır olduğunuzda Ata'yı seçin. Atama türleri hakkında daha fazla bilgi için bkz . Privileged Identity Management'ta ayrıcalıklı erişim grubu (önizleme) için uygunluk atama.

    Azure portalında atama özelliklerini gösteren ekran görüntüsü.

Atamaları yaptıktan sonra kümeye erişerek tam zamanında erişimin çalıştığını doğrulayın. Örneğin, komutunu kullanarak kubectl get nodes kümedeki düğümleri görüntüleyin:

kubectl get nodes

Kimlik doğrulama gereksinimini not edin ve kimlik doğrulaması için adımları izleyin. Kimlik doğrulaması başarılı olursa şuna benzer bir çıktı görmeniz gerekir:

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

NAME      STATUS   ROLES    AGE      VERSION
node-1    Ready    agent    6m36s    v1.18.14
node-2    Ready    agent    6m42s    v1.18.14
node-3    Ready    agent    6m33s    v1.18.14

Sunucu uygulamasının gizli dizisini yenileme

Sunucu uygulamasının hizmet sorumlusunun gizli dizisinin süresi dolduysa, döndürmeniz gerekir.

SERVER_APP_SECRET=$(az ad sp credential reset --id "${SERVER_APP_ID}" --query password -o tsv)

Sonraki adımlar