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
-
konsep kro- Memahami konsep kro dan komposisi sumber daya
-
konsep kro- Memahami SimpleSchema, ekspresi CEL, dan pola komposisi
-
Pertimbangan keamanan untuk Kemampuan EKS- Tinjau praktik terbaik keamanan untuk kemampuan