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:
- Jika Anda belum menyambungkan kluster, gunakan mulai cepat kami.
- Tingkatkan agen Anda ke versi terbaru.
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
Buat aplikasi Microsoft Azure Active Directory baru dan dapatkan nilai
appId
nya. Nilai ini digunakan dalam langkah selanjutnya sebagaiserverApplicationId
.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
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" } ] }
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}}'
Buat perwakilan layanan dan dapatkan nilai bidang
password
nya. Nilai ini diperlukan nantiserverApplicationSecret
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, gunakanaz 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)
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
Buat aplikasi Microsoft Azure Active Directory baru dan dapatkan nilai
appId
nya. Nilai ini digunakan dalam langkah selanjutnya sebagaiclientApplicationId
.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
Membuat perwakilan layanan untuk aplikasi klien ini:
az ad sp create --id "${CLIENT_APP_ID}"
Dapatkan nilai
oAuthPermissionId
untuk aplikasi server:az ad app show --id "${SERVER_APP_ID}" --query "api.oauth2PermissionScopes[0].id" -o tsv
Berikan izin yang diperlukan untuk aplikasi klien. RBAC untuk Kubernetes dengan dukungan Azure Arc harus
signInAudience
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.
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.Jalankan perintah berikut untuk membuat peran kustom baru:
ROLE_ID=$(az role definition create --role-definition ./accessCheck.json --query id -o tsv)
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
SSH ke dalam setiap simpul master kluster dan ambil langkah-langkah berikut:
Jika Anda
kube-apiserver
adalah pod statis:azure-arc-guard-manifests
Rahasia dikube-system
namespace berisi dua file:guard-authn-webhook.yaml
danguard-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
Buka manifes
apiserver
di mode edit:sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
Tambahkan spesifikasi berikut di bawah
volumes
:- name: azure-rbac hostPath: path: /etc/guard type: Directory
Tambahkan spesifikasi berikut di bawah
volumeMounts
:- mountPath: /etc/guard name: azure-rbac readOnly: true
Jika Anda
kube-apiserver
bukan pod statis:Buka manifes
apiserver
di mode edit:sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
Tambahkan spesifikasi berikut di bawah
volumes
:- name: azure-rbac secret: secretName: azure-arc-guard-manifests
Tambahkan spesifikasi berikut di bawah
volumeMounts
:- mountPath: /etc/guard name: azure-rbac readOnly: true
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
Simpan dan tutup editor untuk memperbarui pod
apiserver
.
Kluster yang dibuat dengan menggunakan Kluster API
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
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.Terapkan manifes ini:
kubectl apply -f azure-arc-guard-manifests.yaml
Edit objek
KubeadmControlPlane
dengan menjalankankubectl edit kcp <clustername>-control-plane
: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"
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
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
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>"
]
}
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
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.
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>
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>
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.
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
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
Jalankan perintah
kubectl
apa pun. Contohnya:kubectl get nodes
kubectl get pods
Setelah diminta untuk autentikasi berbasis browser, salin URL masuk perangkat (
https://microsoft.com/devicelogin
) dan buka di browser web Anda.Masukkan kode yang dicetak di konsol Anda. Salin dan tempel kode di terminal Anda ke dalam permintaan untuk input autentikasi perangkat.
Masukkan nama pengguna (
testuser@mytenant.onmicrosoft.com
) dan kata sandi terkait.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:
Di atas portal Microsoft Azure, cari dan pilih Layanan Domain Active Directory.
Pada menu Layanan Domain Active Directory di sisi kiri, pilih Aplikasi perusahaan.
Pada menu aplikasi perusahaan di sisi kiri, pilih Akses Bersyarat.
Pada menu Akses Bersyarat di sisi kiri, pilih Kebijakan>Kebijakan baru.
Masukkan nama untuk kebijakan, seperti arc-k8s-policy.
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.
Pilih Aplikasi atau tindakan cloud. Di bawah Sertakan, pilih Pilih aplikasi. Kemudian cari dan pilih aplikasi server yang Anda buat sebelumnya.
Di bawah Kontrol akses, pilih Beri. Pilih Berikan akses>Perangkat wajib ditandai sebagai sesuai.
Di bawah Aktifkan kebijakan, pilih Aktif>Buat.
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:
Di portal Microsoft Azure, buka Azure Active Directory.
Pilih Aplikasi perusahaan. Lalu di bawah Aktivitas, pilih Masuk.
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.
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:
Di atas portal Microsoft Azure, cari dan pilih Layanan Domain Active Directory.
Catat ID penyewa. Untuk sisa instruksi ini, kami akan menunjukkan ID itu sebagai
<tenant-id>
.Pada menu untuk Layanan Domain Active Directory di sisi kiri, di bawah Kelola, pilih Grup>Grup baru.
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.
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>
.Di portal Microsoft Azure, di menu untuk Aktivitas di sisi kiri, pilih Akses Istimewa (Pratinjau) . Lalu pilih Aktifkan Akses Istimewa.
Pilih Tambahkan Penugasan untuk mulai memberikan akses.
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.
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.
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
- Sambungkan ke kluster dengan aman menggunakan Cluster Connect.
- Baca tentang arsitektur Azure RBAC pada Kubernetes yang didukung Arc.