Catatan perev. : Melanjutkan topik keamanan Kubernetes yang baru diangkat secara umum dan RBAC pada khususnya, kami menerbitkan terjemahan materi ini dari konsultan Perancis dari perusahaan internasional Adaltas Big Data. Penulis menunjukkan secara rinci cara membuat pengguna, memberi mereka hak dan terus melayani.Menyiapkan dan memulai kluster Kubernetes hanyalah permulaan: itu perlu dieksploitasi juga. Untuk mengamankan akses ke cluster, Anda perlu mengatur kredensial pengguna dan mengelola pengaturan otentikasi dan otorisasi dengan benar.
(Ilustrasi diambil dari blog CNCF - sekitar. Terjemahan.)Artikel ini adalah tentang cara membuat pengguna menggunakan sertifikat klien
X.509 , dan cara mengelola otorisasi menggunakan API
RBAC dasar di Kubernetes. Kami juga akan berbicara tentang beberapa proyek open source yang menyederhanakan administrasi cluster: rakkess, kubectl-who-can, rbac-lookup, dan RBAC Manager.
Prasyarat dan Asumsi
Pertama-tama, perlu membuat beberapa asumsi:
Jika Anda tidak memiliki cluster Kubernetes yang sudah jadi, saya sarankan Anda merujuk ke artikel rekan (Arthur BUSSER) di mana ia berbicara tentang
menginstal Kubernetes di CentOS 7 menggunakan Vagrant.
Ada 4 node di cluster kami: satu master dan 3 pekerja. Wizard juga akan digunakan sebagai simpul tepi untuk berinteraksi dengan cluster.
API RBAC
Kontrol akses berbasis peran (RBAC) adalah metode untuk mengontrol akses ke komputer dan sumber daya jaringan, berdasarkan pada peran masing-masing pengguna dalam suatu perusahaan. RBAC dapat digunakan dengan semua sumber daya Kubernetes yang mendukung CRUD (Buat, Baca, Perbarui, Hapus). Contoh sumber daya tersebut:
- ruang nama
- Polong
- Penugasan
- volume persisten (Volume Persisten);
- ConfigMaps
Dan berikut ini adalah contoh operasi yang mungkin dilakukan dengan mereka:
create
;get
delete
(delete) ;list
(tampilan list
) ;update
.
Untuk mengelola RBAC di Kubernetes, kita perlu mendeklarasikan:
Role
dan Role
ClusterRole
. Ini hanyalah set aturan yang mewakili seperangkat izin. Role
hanya dapat digunakan untuk menyediakan akses ke sumber daya dalam ruang nama. ClusterRole
dapat memberikan izin yang sama dengan Role
, dan juga memberikan akses ke sumber daya yang tersedia di seluruh cluster, dan yang disebut titik akhir non-sumber daya (seperti /healthz
- approx. Terjemahan.) .Subjects
Subjek adalah entitas yang akan melakukan operasi dalam sebuah cluster. Itu bisa pengguna, layanan, atau bahkan grup.RoleBinding
dan ClusterRoleBinding
. Seperti namanya, ini hanyalah pengikatan subjek ke Peran atau ClusterRole.
Kubernetes memiliki peran default berikut:
view
: akses hanya baca, tidak termasuk rahasia;edit
: di atas + kemampuan untuk mengedit sebagian besar sumber daya, tidak termasuk peran dan ikatan peran;admin
: di atas + kemampuan untuk mengelola peran dan pemetaan peran di tingkat namespace;cluster-admin
: semua hak istimewa yang mungkin.
Tentu saja, Anda dapat membuat
Roles
dan
ClusterRoles
Anda sendiri, tetapi kami menyarankan Anda menggunakan peran default sebanyak mungkin, jika situasinya memungkinkan. Jika tidak, Anda dapat dengan cepat menjadi bingung dalam semua ini.
Contoh penggunaan
Kami akan membuat dua ruang nama:
my-project-dev
dan
my-project-prod
, - serta dua pengguna:
jean
dan
sarah
- dengan peran berbeda di ruang nama ini:
- my-project-dev:
- my-project-prod:
Buat dan otentikasi pengguna menggunakan sertifikat klien X.509
Biasanya, ada dua jenis pengguna:
akun layanan yang dikelola oleh Kubernetes, dan pengguna reguler. Kami akan fokus pada yang terakhir. Begini cara mereka dijelaskan dalam dokumentasi resmi:
Diasumsikan bahwa pengguna reguler dikelola oleh layanan eksternal dan independen. Peran tersebut dapat dimainkan oleh administrator yang membagikan kunci pribadi, repositori pengguna seperti Keystone atau Akun Google, atau bahkan file dengan daftar nama pengguna dan kata sandi. Dalam hal ini, Kubernetes tidak memiliki objek yang mewakili pengguna biasa. Pengguna biasa tidak dapat ditambahkan ke cluster melalui panggilan API.
Ada beberapa cara untuk mengelola pengguna biasa:
- Auth dasar:
- mentransfer konfigurasi ke server API dengan konten (atau serupa) berikut ini: kata sandi, nama pengguna, uid, grup;
- Sertifikat Klien X.509:
- pembuatan kunci rahasia pengguna dan permintaan penandatanganan sertifikat;
- sertifikasi dalam otoritas sertifikasi (Kubernetes CA) untuk mendapatkan sertifikat pengguna;
- Token Pembawa (Token Web JSON, JWT):
- OpenID Connect
- lapisan otentikasi di atas OAuth 2.0;
- webhooks
Pada artikel ini, kita akan menggunakan sertifikat X.509 dan OpenSSL karena kesederhanaannya. Menciptakan pengguna terjadi dalam beberapa tahap - kami akan membahas semuanya. Operasi harus dilakukan di bawah akun pengguna dengan hak administrator cluster (cluster-admin). Berikut ini semua langkah untuk membuat pengguna (menggunakan
jean
sebagai contoh):
- Buat pengguna di wizard, dan kemudian pergi ke direktori rumahnya untuk menyelesaikan langkah-langkah yang tersisa:
useradd jean && cd /home/jean
- Buat kunci pribadi:
openssl genrsa -out jean.key 2048
- Buat permintaan penandatanganan sertifikat (CSR).
CN
adalah nama pengguna, O
adalah grup. Anda dapat mengatur izin berdasarkan grup. Ini akan menyederhanakan pekerjaan jika, misalnya, Anda memiliki banyak pengguna dengan izin yang sama:
- Masuk CSR di Kubernetes CA. Kita harus menggunakan sertifikat dan kunci CA, yang biasanya ditemukan di
/etc/kubernetes/pki
. Sertifikat akan berlaku selama 500 hari:
openssl x509 -req -in jean.csr \ -CA /etc/kubernetes/pki/ca.crt \ -CAkey /etc/kubernetes/pki/ca.key \ -CAcreateserial \ -out jean.crt -days 500
- Buat direktori
.certs
. Di dalamnya kami akan menyimpan kunci publik dan pribadi pengguna:
mkdir .certs && mv jean.crt jean.key .certs
- Buat pengguna di dalam Kubernetes:
kubectl config set-credentials jean \ --client-certificate=/home/jean/.certs/jean.crt \ --client-key=/home/jean/.certs/jean.key
- Tetapkan konteks untuk pengguna:
kubectl config set-context jean-context \ --cluster=kubernetes --user=jean
- Edit file konfigurasi pengguna. Ini berisi informasi yang diperlukan untuk otentikasi dalam sebuah cluster. Anda dapat menggunakan file konfigurasi cluster, yang biasanya terletak di
/etc/kubernetes
: /etc/kubernetes
certificate-authority-data
dan server
harus sama seperti pada file yang disebutkan:
apiVersion: v1 clusters: - cluster: certificate-authority-data: { } server: { } name: kubernetes contexts: - context: cluster: kubernetes user: jean name: jean-context current-context: jean-context kind: Config preferences: {} users: - name: jean user: client-certificate: /home/jean/.certs/jean.cert client-key: /home/jean/.certs/jean.key
Sekarang Anda perlu menyalin konfigurasi di atas ke direktori .kube
:
mkdir .kube && vi .kube/config
- Tetap menjadikan pengguna pemilik semua file dan direktori yang dibuat:
chown -R jean: /home/jean/
Pengguna
jean
berhasil dibuat. Kami akan melakukan hal yang sama untuk
sarah
. Ada beberapa langkah, dan menciptakan banyak pengguna bisa memakan waktu lama. Oleh karena itu, saya menulis skrip Bash yang mengotomatiskan proses: mereka dapat ditemukan di
repositori di GitHub .
Catatan perev. : Seperti yang kami tulis dalam artikel terbaru kami , prosedur ini dapat disederhanakan dengan cara yang lebih "asli" ke Kubernetes - melalui fitur baru di utilitas konsol kubeadm . Namun, ingatlah bahwa pada saat publikasi terjemahan ini, mereka tersedia dalam bentuk alfa. Contoh dari perintah untuk membuat pengguna adalah kubeadm alpha kubeconfig user
.Kami sekarang memiliki pengguna, dan kami dapat terus membuat dua ruang nama:
kubectl create namespace my-project-dev kubectl create namespace my-project-prod
Karena kami belum menentukan otorisasi pengguna, mereka seharusnya tidak memiliki akses ke sumber daya cluster:
User: Jean kubectl get nodes Error from server (Forbidden): nodes is forbidden: User "jean" cannot list resource "nodes" in API group "" at the cluster scope kubectl get pods -n default Error from server (Forbidden): pods is forbidden: User "jean" cannot list resource "pods" in API group "" in the namespace "default" kubectl get pods -n my-project-prod Error from server (Forbidden): pods is forbidden: User "jean" cannot list resource "pods" in API group "" in the namespace "my-project-prod" kubectl get pods -n my-project-dev Error from server (Forbidden): pods is forbidden: User "jean" cannot list resource "pods" in API group "" in the namespace "my-project-dev"
User: Sarah kubectl get nodes Error from server (Forbidden): nodes is forbidden: User "sarah" cannot list resource "nodes" in API group "" at the cluster scope kubectl get pods -n default Error from server (Forbidden): pods is forbidden: User "sarah" cannot list resource "pods" in API group "" in the namespace "default" kubectl get pods -n my-project-prod Error from server (Forbidden): pods is forbidden: User "sarah" cannot list resource "pods" in API group "" in the namespace "my-project-prod" kubectl get pods -n my-project-dev Error from server (Forbidden): pods is forbidden: User "sarah" cannot list resource "pods" in API group "" in the namespace "my-project-dev"
Pembuatan Peran dan Peran Cluster
Kami akan menggunakan
ClusterRole
, tersedia secara default. Namun, kami juga menunjukkan cara membuat
Role
dan
ClusterRole
Anda sendiri. Intinya,
Role
dan
ClusterRole
hanyalah serangkaian tindakan
(disebut verbs
, yaitu, kata demi kata) yang diizinkan untuk sumber daya dan ruang nama tertentu. Ini adalah contoh file YAML:
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: Role metadata: name: list-deployments namespace: my-project-dev rules: - apiGroups: [ apps ] resources: [ deployments ] verbs: [ get, list ] --------------------------------- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: list-deployments rules: - apiGroups: [ apps ] resources: [ deployments ] verbs: [ get, list ]
Untuk membuatnya, jalankan perintah:
kubectl create -f /path/to/your/yaml/file
Mengikat Peran atau Peran Cluster untuk Pengguna
Sekarang ikat
ClusterRole
default (
edit
dan
view
) kepada pengguna kami sebagai berikut:
jean
:edit
- di namespace my-project-dev
;view
- di namespace my-project-prod
;
sarah
:edit
- di namespace my-project-prod
.
RoleBindings harus ditentukan oleh ruang nama, bukan oleh pengguna. Dengan kata lain, untuk mengesahkan
jean
kita akan membuat dua RoleBindings. Contoh file YAML yang mendefinisikan RoleBindings untuk
jean
:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: jean namespace: my-project-dev subjects: - kind: User name: jean apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: edit apiGroup: rbac.authorization.k8s.io --------------------------------- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: jean namespace: my-project-prod subjects: - kind: User name: jean apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: view apiGroup: rbac.authorization.k8s.io
Kami mengizinkan
jean
view
my-project-prod
dan mengedit
my-project-dev
. Hal yang sama perlu dilakukan dengan otorisasi untuk
sarah
. Untuk mengaktifkannya, jalankan perintah:
kubectl apply -f /path/to/your/yaml/file
Dalam hal ini,
kubectl apply
digunakan sebagai pengganti
kubectl create
. Perbedaan antara keduanya adalah bahwa
create
menciptakan objek dan tidak melakukan apa-apa lagi, dan
apply
- tidak hanya menciptakan objek (jika tidak ada), tetapi juga memperbarui jika perlu.
Mari kita periksa apakah pengguna kami telah menerima izin yang diperlukan.
- Pengguna:
sarah
( edit
di my-project-prod
)my-project-prod
- can daftar pods (1);
- dapat membuat penyebaran (2).
my-project-dev
- tidak dapat mencantumkan pod (4);
- tidak dapat membuat penyebaran (5).
(1) kubectl get pods -n my-project-prod No resources found. (2) kubectl run nginx --image=nginx --replicas=1 -n my-project-prod deployment.apps/nginx created (3) kubectl get pods -n my-project-prod NAME READY STATUS RESTARTS AGE nginx-7db9fccd9b-t14qw 1/1 Running 0 4s (4) kubectl get pods -n my-project-dev Error from server (Forbidden): pods is forbidden: User "sarah" cannot list resource "pods" in API group "" in the namespace "my-project-dev" (5) kubectl run nginx --image=nginx --replicas=1 -n my-project-dev Error from server (Forbidden): deployments.apps is forbidden: User "sarah" cannot create resource "deployments" in API group "apps" in the namespace "my-project-dev"
- Pengguna:
jean
( view
di my-project-prod
dan edit
di my-project-dev
)my-project-prod
- can daftar pods (1);
- dapat mendaftar deployment'ov (2);
- tidak dapat menghapus penyebaran (3).
- my-project-dev:
- can daftar pods (4);
- dapat membuat penyebaran (5);
- dapat mendaftar deployment'ov (6);
- dapat menghapus penyebaran (7).
(1) kubectl get pods -n my-project-prod NAME READY STATUS RESTARTS AGE nginx-7db9fccd9b-t14qw 1/1 Running 0 101s (2) kubectl get deploy -n my-project-prod NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 110s (3) kubectl delete deploy/nginx -n my-project-prod Error from server (Forbidden): deployments.extensions "nginx" is forbidden: User "jean" cannot delete resource "deployments" in API group "extensions" in the namespace "my-project-prod" (4) kubectl get pods -n my-project-dev No resources found. (5) kubectl run nginx --image=nginx --replicas=1 -n my-project-dev deployment.apps/nginx created (6) kubectl get deploy -n my-project-dev NAME READY UP-TO-DATE AVAILABLE AGE nginx 0/1 1 0 13s (7) kubectl delete deploy/nginx -n my-project-dev deployment.extensions "nginx" deleted (8) kubectl get deploy -n my-project-dev No resources found.
Manajemen dan otorisasi pengguna
Jadi, kami telah berhasil menetapkan berbagai peran dan otorisasi pengguna. Muncul pertanyaan: bagaimana sekarang mengelola semua ini? Bagaimana saya tahu jika izin untuk pengguna tertentu diatur dengan benar? Bagaimana saya tahu siapa yang memiliki wewenang untuk melakukan tindakan tertentu? Bagaimana cara mendapatkan gambaran umum tentang izin pengguna?
Kami membutuhkan jawaban untuk semua pertanyaan ini untuk memastikan keamanan cluster. Perintah
kubectl auth can-i
memungkinkan Anda untuk mengetahui apakah pengguna dapat melakukan tindakan tertentu:
Perintah pertama (1) memungkinkan pengguna untuk mengetahui apakah ia dapat melakukan beberapa tindakan. Yang kedua (2) - memungkinkan administrator untuk menyamar sebagai pengguna untuk mencari tahu apakah dia dapat melakukan tindakan tertentu. "Reinkarnasi" ini hanya diizinkan untuk pengguna dengan hak administrator cluster.
Ini praktis semua yang bisa dilakukan dengan toolkit bawaan. Itulah sebabnya saya akan mempresentasikan beberapa proyek Open Source yang memperluas kemampuan yang ditawarkan oleh tim can-i kubectl auth. Sebelum memperkenalkan mereka, mari kita tentukan dependensi:
Pergi dan
Krew .
Pergi instalasi
Go adalah bahasa pemrograman open source yang memungkinkan Anda membuat perangkat lunak yang sederhana, andal, dan efisien. Ini dikembangkan oleh Google di bawah inspirasi C dan Pascal, berdasarkan pada konsep asli
Robert Griesemer ,
Rob Pike dan
Ken Thompson .
wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
Instalasi Krew
Krew adalah alat yang menyederhanakan penggunaan
plugin kubectl . Krew membantu Anda menemukan, menginstal, dan mengelola plugin. Dari segi fungsi, itu menyerupai alat seperti apt, dnf atau minuman. Krew hanya kompatibel dengan kubectl versi 1.12 dan lebih tinggi.
set -x; cd "$(mktemp -d)" && curl -fsSLO "https://storage.googleapis.com/krew/v0.2.1/krew.{tar.gz,yaml}" && tar zxvf krew.tar.gz && ./krew-"$(uname | tr '[:upper:]' '[:lower:]')_amd64" install \ --manifest=krew.yaml --archive=krew.tar.gz export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
rakkess
Proyek ini memungkinkan Anda untuk melihat semua izin yang telah diberikan kepada pengguna. Misalnya, ini membantu menjawab pertanyaan tentang apa yang dapat dilakukan
jean
. Pertama-tama, mari kita instal:
kubectl krew install access-matrix
Dokumentasi proyek dapat ditemukan di
repositori di GitHub . Berikut ini contoh karyanya:
kubectl access-matrix -n my-project-dev --as jean

kubect-who-can
Proyek ini memungkinkan kami untuk mencari tahu pengguna mana yang dapat melakukan tindakan tertentu. Akan membantu menjawab pertanyaan: "Siapa yang bisa melakukan ini?" Instalasi:
go get -v github.com/aquasecurity/kubectl-who-can
Dokumentasinya ada di
repositori GitHub . Contoh kerja:
kubectl-who-can list pods -n default No subjects found with permissions to list pods assigned through RoleBindings CLUSTERROLEBINDING SUBJECT TYPE SA-NAMESPACE cluster-admin system:masters Group rbac-manager rbac-manager ServiceAccount rbac-manager system:controller:attachdetach-controller attachdetach-controller ServiceAccount kube-system system:controller:clusterrole-aggregation-controller clusterrole-aggregation-controller ServiceAccount kube-system system:controller:cronjob-controller cronjob-controller ServiceAccount kube-system system:controller:daemon-set-controller daemon-set-controller ServiceAccount kube-system system:controller:deployment-controller deployment-controller ServiceAccount kube-system system:controller:endpoint-controller endpoint-controller ServiceAccount kube-system system:controller:generic-garbage-collector generic-garbage-collector ServiceAccount kube-system system:controller:horizontal-pod-autoscaler horizontal-pod-autoscaler ServiceAccount kube-system system:controller:job-controller job-controller ServiceAccount kube-system system:controller:namespace-controller namespace-controller ServiceAccount kube-system system:controller:node-controller node-controller ServiceAccount kube-system system:controller:persistent-volume-binder persistent-volume-binder ServiceAccount kube-system system:controller:pod-garbage-collector pod-garbage-collector ServiceAccount kube-system system:controller:pvc-protection-controller pvc-protection-controller ServiceAccount kube-system system:controller:replicaset-controller replicaset-controller ServiceAccount kube-system system:controller:replication-controller replication-controller ServiceAccount kube-system system:controller:resourcequota-controller resourcequota-controller ServiceAccount kube-system system:controller:statefulset-controller statefulset-controller ServiceAccount kube-system system:coredns coredns ServiceAccount kube-system system:kube-controller-manager system:kube-controller-manager User system:kube-scheduler system:kube-scheduler User
rbac-lookup
Proyek ini memberikan gambaran umum tentang aturan RBAC. Ini membantu menjawab pertanyaan: "Peran apa yang dimiliki
jean
dan
sarah
?", "Peran apa yang dimiliki semua pengguna?", "Peran apa yang dimiliki seluruh kelompok?". Untuk menginstal, jalankan perintah:
kubectl krew install rbac-lookup
Dokumentasinya ada di
repositori GitHub . Ini adalah contoh pekerjaan:
kubectl-rbac_lookup jean SUBJECT SCOPE ROLE jean my-project-dev ClusterRole/edit jean my-project-prod ClusterRole/view kubectl-rbac_lookup sarah SUBJECT SCOPE ROLE sarah my-project-prod ClusterRole/edit kubectl-rbac_lookup --kind user SUBJECT SCOPE ROLE jean my-project-dev ClusterRole/edit jean my-project-prod ClusterRole/view sarah my-project-prod ClusterRole/edit system:anonymous kube-public Role/kubeadm:bootstrap-signer-clusterinfo system:kube-controller-manager kube-system Role/extension-apiserver-authentication-reader system:kube-controller-manager kube-system Role/system::leader-locking-kube-controller-manager system:kube-controller-manager cluster-wide ClusterRole/system:kube-controller-manager system:kube-proxy cluster-wide ClusterRole/system:node-proxier system:kube-scheduler kube-system Role/extension-apiserver-authentication-reader system:kube-scheduler kube-system Role/system::leader-locking-kube-scheduler system:kube-scheduler cluster-wide ClusterRole/system:kube-scheduler system:kube-scheduler cluster-wide ClusterRole/system:volume-scheduler kubectl-rbac_lookup --kind group SUBJECT SCOPE ROLE system:authenticated cluster-wide ClusterRole/system:basic-user system:authenticated cluster-wide ClusterRole/system:discovery system:authenticated cluster-wide ClusterRole/system:public-info-viewer system:bootstrappers:kubeadm:default-node-token cluster-wide ClusterRole/system:node-bootstrapper system:bootstrappers:kubeadm:default-node-token cluster-wide ClusterRole/system:certificates.k8s.io:certificatesigningrequests:nodeclient system:bootstrappers:kubeadm:default-node-token kube-system Role/kube-proxy system:bootstrappers:kubeadm:default-node-token kube-system Role/kubeadm:kubelet-config-1.14 system:bootstrappers:kubeadm:default-node-token kube-system Role/kubeadm:nodes-kubeadm-config system:masters cluster-wide ClusterRole/cluster-admin system:nodes kube-system Role/kubeadm:kubelet-config-1.14 system:nodes kube-system Role/kubeadm:nodes-kubeadm-config system:nodes cluster-wide ClusterRole/system:certificates.k8s.io:certificatesigningrequests:selfnodeclient system:unauthenticated cluster-wide ClusterRole/system:public-info-viewer
Manajer RBAC
Seperti yang tersirat dari nama
proyek ini , ia adalah manajer RBAC. Ini menyederhanakan banyak manipulasi yang diperlukan. Mungkin yang paling penting adalah pembuatan RoleBindings. Kami melihat sebelumnya bahwa ketika membuat peran yang berbeda untuk pengguna, perlu untuk membuat RoleBindings yang berbeda. RBAC Manager membantu dengan memungkinkan Anda membuat hanya satu RoleBinding dengan semua otorisasi sekaligus. Untuk menginstal, Anda harus mengunduh file YAML dari repositori di GitHub:
kubectl apply -f /path/to/rbac/manager/yaml/file
Dokumentasi resmi ada di
repositori GitHub . Contoh kerja:
apiVersion: rbacmanager.reactiveops.io/v1beta1 kind: RBACDefinition metadata: name: jose rbacBindings: - name: jose subjects: - kind: User name: jose roleBindings: - namespace: my-project-prod clusterRole: edit - namespace: my-project-dev clusterRole: edit
Kesimpulan
Kami menciptakan pengguna di kluster Kubernetes menggunakan sertifikat klien X.509 dengan OpenSSL dan memberdayakan mereka. Untuk pembuatan yang lebih mudah, Anda dapat menggunakan skrip yang tersedia di
repositori saya di GitHub (atau perintah kubeadm eksperimental - sekitar Terjemahan.) . Adapun administrasi klaster, Anda dapat menggunakan proyek Open Source yang disajikan dalam artikel:
- kubectl auth can-i : cari tahu apakah pengguna dapat melakukan beberapa tindakan;
- rakkess : cari tahu semua tindakan yang dapat dilakukan pengguna;
- kubectl-who-can : menentukan pengguna mana yang dapat melakukan beberapa tindakan;
- rbac-lookup : dapatkan gambaran umum tentang RBAC;
- Manajer RBAC : Sederhanakan konfigurasi dengan menggabungkan binding hak, mengotomatisasi perubahan ke RBAC, menggunakan label sebagai penyeleksi untuk menetapkan hak.
Membuat pengguna dapat berubah menjadi tugas yang sangat memakan waktu, terutama jika Anda perlu mengatur sejumlah besar pengguna sekaligus (atau sering membuatnya). Untuk meringankan situasi ini dapat menghubungkan LDAP perusahaan ke kluster Kubernetes. Beberapa proyek Sumber Terbuka (
Kismatik [ Objek tampak seperti ditinggalkan - kira-kira Terjemahkan.] Dan
ObjectifLibre ) menawarkan webhook Kubernetes yang memungkinkan otentikasi langsung melalui LDAP. Solusi lain yang mungkin adalah mengkonfigurasi server OpenID dengan LDAP perusahaan sebagai backend.
PS dari penerjemah
Baca juga di blog kami: