Konfigurasikan izin kro - Amazon EKS

Bantu tingkatkan halaman ini

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan izin kro

Tidak seperti ACK dan Argo CD, kro tidak memerlukan izin IAM. kro beroperasi sepenuhnya di dalam klaster Kubernetes Anda dan tidak melakukan panggilan API. AWS Kontrol akses ke sumber daya kro menggunakan Kubernetes RBAC standar.

Cara kerja izin dengan kro

kro menggunakan dua jenis sumber daya Kubernetes dengan cakupan yang berbeda:

ResourceGraphDefinitions: Sumber daya dengan cakupan cluster yang mendefinisikan kustom. APIs Biasanya dikelola oleh tim platform yang merancang dan memelihara standar organisasi.

Instance: Sumber daya kustom dengan cakupan nama dibuat dari. ResourceGraphDefinitions Dapat dibuat oleh tim aplikasi dengan izin RBAC yang sesuai.

Secara default, kemampuan kro memiliki izin untuk mengelola ResourceGraphDefinitions dan instansinya melalui kebijakan entri AmazonEKSKROPolicy akses. Namun, kro memerlukan izin tambahan untuk membuat dan mengelola sumber daya Kubernetes yang mendasari yang ditentukan dalam ResourceGraphDefinitions (seperti Deployment, Services, atau resource ACK). Anda harus memberikan izin ini melalui kebijakan entri akses atau Kubernetes RBAC. Untuk detail tentang pemberian izin ini, lihat izin sumber daya arbitrer kro.

Izin tim platform

Tim platform memerlukan izin untuk membuat dan mengelola ResourceGraphDefinitions.

Contoh ClusterRole untuk tim platform:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kro-platform-admin rules: - apiGroups: ["kro.run"] resources: ["resourcegraphdefinitions"] verbs: ["*"]

Mengikat anggota tim platform:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: platform-team-kro-admin subjects: - kind: Group name: platform-team apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: kro-platform-admin apiGroup: rbac.authorization.k8s.io

Izin tim aplikasi

Tim aplikasi memerlukan izin untuk membuat instance sumber daya khusus di ruang nama mereka.

Contoh Peran untuk tim aplikasi:

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: kro-app-developer namespace: my-app rules: - apiGroups: ["kro.run"] resources: ["webapps", "databases"] verbs: ["create", "get", "list", "update", "delete", "patch"]

Mengikat anggota tim aplikasi:

apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: app-team-kro-developer namespace: my-app subjects: - kind: Group name: app-team apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: kro-app-developer apiGroup: rbac.authorization.k8s.io
catatan

Grup API dalam Peran (kro.rundalam contoh ini) harus cocok dengan yang apiVersion ditentukan dalam skema Anda ResourceGraphDefinition.

Akses hanya-baca

Berikan akses hanya-baca ke tampilan ResourceGraphDefinitions dan instance tanpa izin modifikasi.

Hanya baca ClusterRole:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kro-viewer rules: - apiGroups: ["kro.run"] resources: ["resourcegraphdefinitions"] verbs: ["get", "list", "watch"]

Peran hanya-baca untuk instance:

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: kro-instance-viewer namespace: my-app rules: - apiGroups: ["kro.run"] resources: ["webapps", "databases"] verbs: ["get", "list", "watch"]

Akses multi-namespace

Berikan tim aplikasi akses ke beberapa ruang nama menggunakan dengan ClusterRoles . RoleBindings

ClusterRole untuk akses multi-namespace:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kro-multi-namespace-developer rules: - apiGroups: ["kro.run"] resources: ["webapps"] verbs: ["create", "get", "list", "update", "delete"]

Mengikat ke ruang nama tertentu:

apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: app-team-dev-access namespace: development subjects: - kind: Group name: app-team apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: kro-multi-namespace-developer apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: app-team-staging-access namespace: staging subjects: - kind: Group name: app-team apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: kro-multi-namespace-developer apiGroup: rbac.authorization.k8s.io

Praktik terbaik

Prinsip hak istimewa terkecil: Berikan hanya izin minimum yang diperlukan untuk tanggung jawab masing-masing tim.

Gunakan grup alih-alih pengguna individu: Ikat peran ke grup daripada pengguna individu untuk pengelolaan yang lebih mudah.

Masalah platform dan aplikasi terpisah: Tim platform mengelola ResourceGraphDefinitions, tim aplikasi mengelola instance.

Isolasi namespace: Gunakan ruang nama untuk mengisolasi tim atau lingkungan yang berbeda, dengan RBAC mengontrol akses ke setiap namespace.

Akses hanya-baca untuk audit: Menyediakan akses hanya-baca ke tim keamanan dan kepatuhan untuk tujuan audit.

Langkah selanjutnya