Menggunakan Azure RBAC pada kluster Kubernetes dengan dukungan Azure Arc (pratinjau)

Jenis objek Kube ClusterRoleBinding dan RoleBinding membantu menentukan otorisasi pada Kube secara asli. Dengan menggunakan fitur ini, Anda dapat menggunakan Microsoft Azure Active Directory (Azure AD) dan penetapan peran di Azure untuk mengontrol pemeriksaan otorisasi pada kluster. Penetapan peran Azure memungkinkan Anda mengontrol secara terperinci pengguna mana yang dapat membaca, menulis, dan menghapus objek Kubernetes seperti penyebaran, pod, dan layanan.

Untuk gambaran umum konseptual fitur ini, lihat Azure RBAC di Kubernetes dengan dukungan Azure Arc.

Penting

Fitur pratinjau Kubernetes yang mendukung Azure Arc tersedia berdasarkan layanan mandiri dan keikutsertaan. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan mereka dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Pratinjau Kubernetes yang mendukung Azure Arc sebagian tercakup oleh dukungan pelanggan berdasarkan upaya terbaik.

Prasyarat

  • Instal atau tingkatkan Azure CLI ke versi terbaru.

  • Instal versi connectedk8s terbaru ekstensi Azure CLI:

    az extension add --name connectedk8s
    

    Jika ekstensi connectedk8s sudah dipasang, Anda dapat memperbaruinya ke versi terbaru dengan menggunakan perintah berikut:

    az extension update --name connectedk8s
    
  • Menyambungkan kluster Kubernetes berbasis Azure Arc yang telah ada:

Catatan

Anda tidak dapat menyiapkan fitur ini untuk Red Hat OpenShift, atau untuk penawaran Kubernetes terkelola penyedia cloud seperti Elastic Kubernetes Service atau Google Kubernetes Engine di mana pengguna tidak memiliki akses ke server API kluster. Untuk kluster Azure Kubernetes Service (AKS), fitur ini tersedia secara asli dan tidak mengharuskan kluster AKS terhubung ke Azure Arc. Untuk AKS di Azure Stack HCI, lihat Menggunakan Azure RBAC untuk kluster hibrid AKS (pratinjau).

Menyiapkan aplikasi Microsoft Azure Active Directory

Membuat aplikasi server

  1. Buat aplikasi Microsoft Azure Active Directory baru dan dapatkan nilai appIdnya. Nilai ini digunakan dalam langkah selanjutnya sebagai serverApplicationId.

    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. Untuk memberikan izin API "Masuk dan baca profil pengguna" ke aplikasi server, salin JSON ini dan simpan dalam file yang disebut oauth2-permissions.json:

    {
        "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. Perbarui klaim keanggotaan grup aplikasi. Jalankan perintah dalam direktori yang sama dengan oauth2-permissions.json file. RBAC untuk Kubernetes dengan dukungan Azure Arc harussignInAudience diatur ke AzureADMyOrg:

    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. Buat perwakilan layanan dan dapatkan nilai bidang passwordnya. Nilai ini diperlukan nanti serverApplicationSecret seperti saat Anda mengaktifkan fitur ini pada kluster. Rahasia ini berlaku selama satu tahun secara default dan perlu diputar setelah itu. Untuk mengatur durasi kedaluwarsa kustom, gunakan 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. Berikan izin API "Masuk dan baca profil pengguna" ke aplikasi dengan menggunakan az ad app permission:

    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
    

    Catatan

    Administrator aplikasi Azure harus menjalankan langkah ini.

    Untuk penggunaan fitur ini dalam produksi, kami sarankan Anda membuat aplikasi server yang berbeda untuk setiap kluster.

Membuat aplikasi klien

  1. Buat aplikasi Microsoft Azure Active Directory baru dan dapatkan nilai appIdnya. Nilai ini digunakan dalam langkah selanjutnya sebagai clientApplicationId.

    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. Membuat perwakilan layanan untuk aplikasi klien ini:

    az ad sp create --id "${CLIENT_APP_ID}"
    
  3. Dapatkan nilai oAuthPermissionId untuk aplikasi server:

        az ad app show --id "${SERVER_APP_ID}" --query "api.oauth2PermissionScopes[0].id" -o tsv
    
  4. Berikan izin yang diperlukan untuk aplikasi klien. RBAC untuk Kubernetes dengan dukungan Azure Arc harussignInAudience diatur ke AzureADMyOrg:

        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}}'
    

Membuat penetapan peran untuk aplikasi server

Aplikasi server memerlukan Microsoft.Authorization/*/read izin sehingga dapat mengonfirmasi bahwa pengguna yang membuat permintaan diotorisasi pada objek Kubernetes yang disertakan dalam permintaan.

  1. Membuat file bernama accessCheck.json dengan konten berikut:

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

    Ganti <subscription-id> dengan ID langganan aktual.

  2. Jalankan perintah berikut untuk membuat peran kustom baru:

    ROLE_ID=$(az role definition create --role-definition ./accessCheck.json --query id -o tsv)
    
  3. Buat penetapan peran pada aplikasi server seperti assignee dengan menggunakan peran yang Anda buat:

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

Mengaktifkan Azure RBAC pada kluster

Aktifkan kontrol akses berbasis peran Azure (RBAC) pada kluster Kubernetes dengan dukungan Azure Arc dengan menjalankan perintah berikut:

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

Catatan

Sebelum Menjalankan perintah sebelumnya, pastikan bahwa file kubeconfig pada mesin menunjuk ke kluster tempat Anda mengaktifkan fitur Azure RBAC.

Gunakan --skip-azure-rbac-list dengan perintah sebelumnya untuk daftar nama pengguna, email, dan koneksi OpenID yang dipisahkan koma yang menjalani pemeriksaan otorisasi dengan menggunakan Kube ClusterRoleBinding asli dan objek RoleBinding, bukan Azure RBAC.

Kluster generik di mana tidak ada reconciler yang berjalan pada apiserver spesifikasi

  1. SSH ke dalam setiap simpul master kluster dan ambil langkah-langkah berikut:

    Jika Anda kube-apiserver adalah pod statis:

    1. azure-arc-guard-manifests Rahasia di kube-system namespace berisi dua file: guard-authn-webhook.yaml dan guard-authz-webhook.yaml. Salin file-file ini ke /etc/guard direktori simpul.

      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. Buka manifes apiserver di mode edit:

      sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
      
    3. Tambahkan spesifikasi berikut di bawah volumes:

      - name: azure-rbac
          hostPath:
          path: /etc/guard
          type: Directory
      
    4. Tambahkan spesifikasi berikut di bawah volumeMounts:

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

    Jika Anda kube-apiserver bukan pod statis:

    1. Buka manifes apiserver di mode edit:

      sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
      
    2. Tambahkan spesifikasi berikut di bawah volumes:

      - name: azure-rbac
          secret:
          secretName: azure-arc-guard-manifests
      
    3. Tambahkan spesifikasi berikut di bawah volumeMounts:

      - mountPath: /etc/guard
          name: azure-rbac
          readOnly: true
      
  2. Tambahkan argumen apiserver berikut:

    - --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
    

    Jika kluster Kube adalah versi 1.19.0 atau yang lebih baru, kamu juga harus mengatur argumen apiserver berikut:

    - --authentication-token-webhook-version=v1
    
  3. Simpan dan tutup editor untuk memperbarui pod apiserver.

Kluster yang dibuat dengan menggunakan Kluster API

  1. Salin rahasia penjaga yang berisi autentikasi dan otorisasi file konfigurasi webhook dari kluster beban kerja ke mesin Anda:

    kubectl get secret azure-arc-guard-manifests -n kube-system -o yaml > azure-arc-guard-manifests.yaml
    
  2. Ubah bidang namespace dalam file azure-arc-guard-manifests.yaml ke namespace layanan dalam kluster manajemen tempat Anda menerapkan sumber daya kustom untuk pembuatan kluster beban kerja.

  3. Terapkan manifes ini:

    kubectl apply -f azure-arc-guard-manifests.yaml
    
  4. Edit objek KubeadmControlPlane dengan menjalankan kubectl edit kcp <clustername>-control-plane:

    1. Tambahkan cuplikan berikut di bawah files:

      - 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. Tambahkan cuplikan berikut di bawah apiServer>extraVolumes:

      - 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. Tambahkan cuplikan berikut di bawah apiServer>extraArgs:

      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. Simpan dan tutup untuk memperbarui objek KubeadmControlPlane. Tunggu hingga perubahan ini muncul pada kluster beban kerja.

Membuat penetapan peran bagi pengguna untuk mengakses kluster

Pemilik sumber daya Kubernetes dengan dukungan Azure Arc dapat menggunakan peran bawaan atau peran kustom untuk memberi pengguna lain akses ke kluster Kubernetes.

Peran bawaan

Peran Deskripsi
Penonton Azure Arc Kubernetes Izinkan akses read-only untuk melihat sebagian besar objek di namespace layanan. Peran ini tidak mengizinkan menampilkan rahasia, karena read izin pada rahasia akan memungkinkan akses ke ServiceAccount kredensial di namespace layanan. Info masuk ini pada gilirannya akan memungkinkan akses API melalui nilai ServiceAccount tersebut (bentuk eskalasi hak istimewa).
Penulis Azure Arc Kubernetes Mengizinkan akses read/write ke sebagian besar objek dalam sebuah namespace layanan. Peran ini tidak memungkinkan melihat atau memodifikasi peran atau pengikatan peran. Namun, peran ini memungkinkan mengakses rahasia dan menjalankan pod sebagai nilai apa pun ServiceAccount di namespace layanan, sehingga dapat digunakan untuk mendapatkan tingkat akses API dari nilai apa pun ServiceAccount di namespace layanan.
Admin Azure Arc Kubernetes Mengizinkan akses admin. Ini dimaksudkan untuk diberikan dalam namespace layanan melalui RoleBinding. Jika Anda menggunakannya di RoleBinding, ini memungkinkan akses baca/tulis ke sebagian besar sumber daya di namespace layanan, termasuk kemampuan untuk membuat peran dan pengikatan peran dalam namespace layanan. Peran ini tidak mengizinkan akses write ke kuota sumber daya atau ke namespace itu sendiri.
Admin Kluster Azure Arc Kubernetes Mengizinkan akses bagi superuser untuk melakukan tindakan apa pun pada sumber daya apa pun. Ketika Anda menggunakannya di ClusterRoleBinding, itu memberikan kontrol penuh atas setiap sumber daya di kluster dan di semua namespace layanan. Ketika Anda menggunakannya di RoleBinding, itu memberikan kontrol penuh atas setiap sumber daya di pengikatan peran namespace layanan, termasuk namespace layanan itu sendiri.

Anda dapat membuat penetapan peran yang tercakup ke kluster Kubernetes dengan dukungan Azure Arc di portal Azure pada panel Access Control (IAM) sumber daya kluster. Anda juga bisa menggunakan perintah Azure CLI berikut:

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

Dalam perintah tersebut, AZURE-AD-ENTITY-ID dapat berupa nama pengguna (misalnya,testuser@mytenant.onmicrosoft.com) atau bahkan nilai appId perwakilan layanan.

Berikut adalah contoh lain dalam membuat penetapan peran yang tercakup ke namespace layanan tertentu dalam kluster:

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

Catatan

Anda dapat membuat penetapan peran yang terlingkup ke kluster dengan menggunakan portal Azure atau Azure CLI. Namun, hanya Azure CLI yang dapat digunakan untuk membuat penetapan peran yang terlingkup ke namespace.

Peran kustom

Anda dapat memilih untuk membuat definisi peran Anda sendiri untuk digunakan dalam penetapan peran.

Di bawah ini adalah contoh definisi peran yang memungkinkan pengguna untuk hanya membaca penyebaran. Untuk informasi selengkapnya, lihat daftar lengkap tindakan data yang dapat Anda gunakan untuk membuat definisi peran.

Salin objek JSON berikut ke dalam file yang disebut custom-role.json. Ganti tempat penampung <subscription-id> dengan ID langganan aktual. Peran kustom menggunakan salah satu tindakan data dan memungkinkan Anda melihat semua penyebaran dalam cakupan (kluster atau namespace layanan) tempat penetapan peran dibuat.

{
    "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. Membuat definisi peran dengan menjalankan perintah berikut ini dari folder tempat Anda menyimpan custom-role.json:

    az role definition create --role-definition @custom-role.json
    
  2. Membuat penetapan peran dengan menggunakan definisi peran kustom ini:

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

Mengonfigurasi kubectl dengan info masuk pengguna

Ada dua cara untuk mendapatkan file kubeconfig yang kamu butuhkan untuk mengakses kluster:

  • Anda menggunakan fitur Cluster Connect (az connectedk8s proxy) dari kluster Kubernetes dengan dukungan Azure Arc.
  • Admin kluster berbagi file kubeconfig dengan setiap pengguna lainnya.

Menggunakan koneksi kluster

Jalankan perintah berikut untuk memulai proses proksi:

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

Setelah proses proksi berjalan, Anda dapat membuka tab lain di konsol untuk mulai mengirim permintaan Anda ke kluster.

Menggunakan file kubeconfig bersama

Menggunakan kubeconfig bersama memerlukan langkah yang sedikit berbeda tergantung pada versi Kubernetes Anda.

  1. Jalankan perintah berikut untuk mengatur info masuk untuk pengguna:

    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. Buka file kubeconfig yang kamu buat sebelumnya. Di bawah contexts, verifikasi bahwa konteks yang terkait dengan titik kluster ke info masuk pengguna yang Anda buat di langkah sebelumnya. Untuk mengatur konteks saat ini ke kredensial pengguna ini, jalankan perintah berikut:

    kubectl config set-context --current=true --user=<testuser>@<mytenant.onmicrosoft.com>
    
  3. Tambahkan pengaturan mode konfigurasi di bawah user>config:

    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
    

Catatan

Plugin Exec adalah strategi autentikasi Kubernetes yang memungkinkan kubectl untuk menjalankan perintah eksternal untuk menerima kredensial pengguna untuk dikirim ke apiserver. Dimulai dengan Kubernetes versi 1.26, plugin otorisasi Azure default tidak lagi disertakan dalam client-go dan kubectl. Dengan versi yang lebih baru, untuk menggunakan plugin exec untuk menerima kredensial pengguna, Anda harus menggunakan Azure Kubelogin, client-go plugin kredensial (exec) yang menerapkan autentikasi Azure.

  1. Instal Azure Kubelogin:

    • Untuk Windows atau Mac, ikuti instruksi penginstalan Azure Kubelogin.

    • Untuk Linux atau Ubuntu, unduh versi terbaru kubelogin, lalu jalankan perintah berikut:

      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. Konversikan kubelogin untuk menggunakan mode masuk yang sesuai. Misalnya, untuk login kode perangkat dengan pengguna Azure Active Directory, perintahnya adalah sebagai berikut:

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

Mengirim permintaan ke kluster

  1. Jalankan perintah kubectl apa pun. Contohnya:

    • kubectl get nodes
    • kubectl get pods
  2. Setelah diminta untuk autentikasi berbasis browser, salin URL masuk perangkat (https://microsoft.com/devicelogin) dan buka di browser web Anda.

  3. Masukkan kode yang dicetak di konsol Anda. Salin dan tempel kode di terminal Anda ke dalam permintaan untuk input autentikasi perangkat.

  4. Masukkan nama pengguna (testuser@mytenant.onmicrosoft.com) dan kata sandi terkait.

  5. Jika Anda melihat pesan kesalahan seperti ini, artinya Anda tidak berwenang untuk mengakses sumber daya yang diminta:

    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.
    

    Admin perlu membuat penetapan peran baru yang memberi wewenang kepada pengguna ini untuk memiliki akses pada sumber daya.

Menggunakan Akses Bersyarat dengan Microsoft Azure Active Directory

Saat mengintegrasikan Azure AD dengan kluster Kubernetes dengan dukungan Azure Arc, Anda juga dapat menggunakan Akses Bersyarat untuk mengontrol akses ke kluster.

Catatan

Azure AD Akses Bersyar adalah kemampuan Premium Azure AD.

Untuk membuat contoh kebijakan Akses Bersyarah untuk digunakan dengan kluster:

  1. Di atas portal Microsoft Azure, cari dan pilih Layanan Domain Active Directory.

  2. Pada menu Layanan Domain Active Directory di sisi kiri, pilih Aplikasi perusahaan.

  3. Pada menu aplikasi perusahaan di sisi kiri, pilih Akses Bersyarat.

  4. Pada menu Akses Bersyarat di sisi kiri, pilih Kebijakan>Kebijakan baru.

    Cuplikan layar memperlihatkan cara menambahkan kebijakan akses bersyarah di portal Azure.

  5. Masukkan nama untuk kebijakan, seperti arc-k8s-policy.

  6. Pilih Pengguna dan grup. Di bawah Sertakan, pilih Pilih pengguna dan grup. Pilih pengguna dan grup tempat Anda ingin menerapkan kebijakan. Untuk contoh ini, pilih grup Microsoft Azure Active Directory yang sama yang memiliki akses administrasi ke kluster Anda.

    Cuplikan layar yang memperlihatkan memilih pengguna atau grup untuk menerapkan kebijakan Akses Bersyarat.

  7. Pilih Aplikasi atau tindakan cloud. Di bawah Sertakan, pilih Pilih aplikasi. Kemudian cari dan pilih aplikasi server yang Anda buat sebelumnya.

    Cuplikan layar memperlihatkan cara memilih aplikasi server di portal Azure.

  8. Di bawah Kontrol akses, pilih Beri. Pilih Berikan akses>Perangkat wajib ditandai sebagai sesuai.

    Cuplikan layar memperlihatkan cara mengizinkan hanya perangkat yang sesuai di portal Azure.

  9. Di bawah Aktifkan kebijakan, pilih Aktif>Buat.

    Cuplikan layar memperlihatkan cara mengaktifkan kebijakan akses bersyar di portal Azure.

Akses kluster lagi. Sebagai contoh, jalankan perintah kubectl get nodes untuk melihat simpul dalam kluster:

kubectl get nodes

Ikuti instruksi untuk sign-in lagi. Pesan kesalahan menyatakan bahwa Anda berhasil masuk, tetapi admin Anda memerlukan perangkat yang meminta akses untuk dikelola oleh Azure AD untuk mengakses sumber daya. Ikuti langkah-langkah berikut:

  1. Di portal Microsoft Azure, buka Azure Active Directory.

  2. Pilih Aplikasi perusahaan. Lalu di bawah Aktivitas, pilih Masuk.

  3. Entri di bagian atas menunjukkan Gagal untuk Status dan Berhasil untuk Akses Bersyarat. Pilih entri, lalu pilih Akses Bersyarat di Detail. Perhatikan bahwa kebijakan Akses Bersyarat Anda terdaftar.

    Cuplikan layar memperlihatkan entri masuk yang gagal di portal Azure.

Mengonfigurasi akses kluster just-in-time dengan Microsoft Azure Active Directory

Opsi lain untuk kontrol akses kluster adalah menggunakan Privileged Identity Management (PIM) untuk permintaan just-in-time.

Catatan

Azure AD PIM adalah kemampuan Azure AD Premium yang memerlukan SKU Premium P2. Untuk informasi selengkapnya tentang SKU Azure AD, lihat panduan harga.

Untuk mengonfigurasi permintaan akses just-in-time untuk kluster Anda, selesaikan langkah-langkah berikut:

  1. Di atas portal Microsoft Azure, cari dan pilih Layanan Domain Active Directory.

  2. Catat ID penyewa. Untuk sisa instruksi ini, kami akan menunjukkan ID itu sebagai <tenant-id>.

    Cuplikan layar memperlihatkan detail Azure Active Directory di portal Azure.

  3. Pada menu untuk Layanan Domain Active Directory di sisi kiri, di bawah Kelola, pilih Grup>Grup baru.

  4. Pastikan bahwa Keamanan dipilih untuk Tipe grup. Masukkan nama grup, seperti myJITGroup. Anda dapat menetapkan peran untuk grup ini (Pratinjau) di bawah Azure AD, pilih Ya. Terakhir, pilih Buat.

    Cuplikan layar memperlihatkan detail untuk grup baru di portal Azure.

  5. Anda akan dikembalikan ke halaman Grup. Pilih grup yang baru Anda buat dan catat ID objeknya. Untuk sisa instruksi ini, kami akan menunjuk ID ini sebagai <object-id>.

    Cuplikan layar memperlihatkan ID objek untuk grup baru di portal Azure.

  6. Di portal Microsoft Azure, di menu untuk Aktivitas di sisi kiri, pilih Akses Istimewa (Pratinjau) . Lalu pilih Aktifkan Akses Istimewa.

    Cuplikan layar memperlihatkan pilihan untuk mengaktifkan akses istimewa di portal Azure.

  7. Pilih Tambahkan Penugasan untuk mulai memberikan akses.

    Cuplikan layar memperlihatkan cara menambahkan penugasan aktif di portal Azure.

  8. Pilih peran Anggota, dan pilih pengguna serta grup yang ingin Anda beri akses kluster. Admin grup dapat mengubah penugasan ini kapan saja. Saat Anda siap untuk melanjutkan, pilih Berikutnya.

    Cuplikan layar memperlihatkan cara menambahkan penugasan di portal Azure.

  9. Pilih jenis penugasan Aktif, durasi yang diinginkan, dan menyediakan justifikasi. Saat Anda siap untuk melanjutkan, pilih Tetapkan. Untuk informasi selengkapnya tentang tipe tugas, lihat Menetapkan kelayakan untuk grup akses istimewa (pratinjau) dalam Privileged Identity Management.

    Cuplikan layar memperlihatkan properti penugasan di portal Azure.

Setelah Anda membuat penugasan, verifikasi bahwa akses just-in-time berfungsi dengan mengakses kluster. Sebagai contoh, Gunakan perintah kubectl get nodes untuk melihat simpul dalam kluster:

kubectl get nodes

Perhatikan persyaratan autentikasi dan ikuti langkah-langkah untuk mengautentikasi. Jika autentikasi berhasil, Anda akan melihat output yang mirip dengan ini:

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

Merefresh rahasia aplikasi server

Jika rahasia untuk perwakilan layanan aplikasi server telah kedaluwarsa, Anda harus memutarnya.

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

Perbarui rahasia pada kluster. Sertakan parameter opsional yang Anda konfigurasi saat perintah awalnya dijalankan.

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

Langkah berikutnya