Konfigurasikan izin Argo CD - 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 Argo CD

Kemampuan terkelola Argo CD terintegrasi dengan AWS Identity Center untuk otentikasi dan menggunakan peran RBAC bawaan untuk otorisasi. Topik ini menjelaskan cara mengonfigurasi izin untuk pengguna dan tim.

Cara kerja izin dengan Argo CD

Kemampuan Argo CD menggunakan AWS Identity Center untuk otentikasi dan menyediakan tiga peran RBAC bawaan untuk otorisasi.

Saat pengguna mengakses Argo CD:

  1. Mereka mengautentikasi menggunakan Pusat AWS Identitas (yang dapat berfederasi ke penyedia identitas perusahaan Anda)

  2. AWS Identity Center menyediakan informasi pengguna dan grup ke Argo CD

  3. Argo CD memetakan pengguna dan grup ke peran RBAC berdasarkan konfigurasi Anda

  4. Pengguna hanya melihat aplikasi dan sumber daya yang mereka miliki izin untuk diakses

Peran RBAC bawaan

Kemampuan Argo CD menyediakan tiga peran bawaan yang Anda petakan ke pengguna dan grup Pusat AWS Identitas. Ini adalah peran cakupan global yang mengontrol akses ke sumber daya Argo CD seperti proyek, cluster, dan repositori.

penting

Peran global mengontrol akses ke Argo CD itu sendiri, bukan ke sumber daya cakupan proyek seperti Aplikasi. Pengguna EDITOR dan VIEWER tidak dapat melihat atau mengelola Aplikasi secara default—mereka memerlukan peran proyek untuk mengakses sumber daya cakupan proyek. Lihat Peran proyek dan akses cakupan proyek detail tentang pemberian akses ke Aplikasi dan sumber daya cakupan proyek lainnya.

ADMIN

Akses penuh ke semua sumber daya dan pengaturan Argo CD:

  • Buat, perbarui, dan hapus Aplikasi dan ApplicationSets dalam proyek apa pun

  • Kelola konfigurasi Argo CD

  • Mendaftarkan dan mengelola cluster target penyebaran

  • Konfigurasikan akses repositori

  • Membuat dan mengelola proyek

  • Lihat semua status dan riwayat aplikasi

  • Daftar dan akses semua cluster dan repositori

PENYUNTING

Dapat memperbarui proyek dan mengonfigurasi peran proyek, tetapi tidak dapat mengubah pengaturan CD Argo global:

  • Perbarui proyek yang ada (tidak dapat membuat atau menghapus proyek)

  • Konfigurasikan peran dan izin proyek

  • Lihat kunci dan sertifikat GPG

  • Tidak dapat mengubah konfigurasi CD Argo global

  • Tidak dapat mengelola cluster atau repositori secara langsung

  • Tidak dapat melihat atau mengelola Aplikasi tanpa peran proyek

PENAMPIL

Akses hanya-baca ke sumber daya Argo CD:

  • Lihat konfigurasi proyek

  • Buat daftar semua proyek (termasuk proyek yang tidak ditetapkan oleh pengguna)

  • Lihat kunci dan sertifikat GPG

  • Tidak dapat mencantumkan cluster atau repositori

  • Tidak dapat membuat perubahan apa pun

  • Tidak dapat melihat atau mengelola Aplikasi tanpa peran proyek

catatan

Untuk memberikan akses kepada pengguna EDITOR atau VIEWER ke Aplikasi, ADMIN atau EDITOR harus membuat peran proyek yang memetakan grup Pusat Identitas ke izin tertentu dalam proyek.

Peran proyek dan akses cakupan proyek

Peran global (ADMIN, EDITOR, VIEWER) mengontrol akses ke Argo CD itu sendiri. Peran proyek mengontrol akses ke sumber daya dan kemampuan dalam proyek tertentu, termasuk:

  • Sumber Daya: Aplikasi, ApplicationSets, kredensi repositori, kredensi cluster

  • Kemampuan: Akses log, akses exec ke pod aplikasi

Memahami model izin dua tingkat:

  • Cakupan global: Peran bawaan menentukan apa yang dapat dilakukan pengguna dengan proyek, cluster, repositori, dan pengaturan Argo CD

  • Ruang lingkup proyek: Peran proyek menentukan apa yang dapat dilakukan pengguna dengan sumber daya dan kemampuan dalam proyek tertentu

Ini berarti:

  • Pengguna ADMIN dapat mengakses semua sumber daya dan kemampuan proyek tanpa konfigurasi tambahan

  • Pengguna EDITOR dan VIEWER harus diberikan peran proyek untuk mengakses sumber daya dan kemampuan proyek

  • Pengguna EDITOR dapat membuat peran proyek untuk memberikan akses kepada diri mereka sendiri dan orang lain dalam proyek yang dapat mereka perbarui

Contoh alur kerja:

  1. ADMIN memetakan grup Pusat Identitas ke peran EDITOR secara global

  2. Admin membuat proyek untuk tim

  3. EDITOR mengonfigurasi peran proyek dalam proyek tersebut untuk memberikan anggota tim akses ke sumber daya cakupan proyek

  4. Anggota tim (yang mungkin memiliki peran global VIEWER) sekarang dapat melihat dan mengelola Aplikasi dalam proyek tersebut berdasarkan izin peran proyek mereka

Untuk detail tentang mengonfigurasi peran proyek, lihatKontrol akses berbasis proyek.

Konfigurasikan pemetaan peran

Peta pengguna dan grup Pusat AWS Identitas ke peran CD Argo saat membuat atau memperbarui kemampuan.

Contoh pemetaan peran:

{ "rbacRoleMapping": { "ADMIN": ["AdminGroup", "alice@example.com"], "EDITOR": ["DeveloperGroup", "DevOpsTeam"], "VIEWER": ["ReadOnlyGroup", "bob@example.com"] } }
catatan

Nama peran peka huruf besar/kecil dan harus huruf besar (ADMIN, EDITOR, VIEWER).

penting

Integrasi Kemampuan EKS dengan AWS Identity Center mendukung hingga 1.000 identitas per kemampuan Argo CD. Identitas dapat berupa pengguna atau grup.

Perbarui pemetaan peran:

aws eks update-capability \ --region us-east-1 \ --cluster-name cluster \ --capability-name capname \ --endpoint "https://eks.ap-northeast-2.amazonaws.com" \ --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \ --configuration '{ "argoCd": { "rbacRoleMappings": { "addOrUpdateRoleMappings": [ { "role": "ADMIN", "identities": [ { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" } ] } ] } } }'

Penggunaan akun admin

Akun admin dirancang untuk penyiapan awal dan tugas administratif seperti mendaftarkan cluster dan mengkonfigurasi repositori.

Kapan akun admin sesuai:

  • Pengaturan dan konfigurasi kemampuan awal

  • Pengembangan solo atau demonstrasi cepat

  • Tugas administratif (pendaftaran cluster, konfigurasi repositori, pembuatan proyek)

Praktik terbaik untuk akun admin:

  • Jangan komit token akun ke kontrol versi

  • Putar token segera jika terpapar

  • Batasi penggunaan token akun untuk pengaturan dan tugas administratif

  • Atur waktu kedaluwarsa pendek (maksimum 12 jam)

  • Hanya 5 token akun yang dapat dibuat pada waktu tertentu

Kapan menggunakan akses berbasis proyek sebagai gantinya:

  • Lingkungan pengembangan bersama dengan banyak pengguna

  • Lingkungan apa pun yang menyerupai produksi

  • Bila Anda membutuhkan jejak audit tentang siapa yang melakukan tindakan

  • Ketika Anda perlu menegakkan pembatasan sumber daya atau batas akses

Untuk lingkungan produksi dan skenario multi-pengguna, gunakan kontrol akses berbasis proyek dengan peran RBAC khusus yang dipetakan ke grup Pusat Identitas. AWS

Kontrol akses berbasis proyek

Gunakan Argo CD Projects (AppProject) untuk menyediakan kontrol akses halus dan isolasi sumber daya untuk tim.

penting

Sebelum menetapkan pengguna atau grup ke peran khusus proyek, Anda harus terlebih dahulu memetakannya ke peran CD Argo global (ADMIN, EDITOR, atau VIEWER) dalam konfigurasi kemampuan. Pengguna tidak dapat mengakses Argo CD tanpa pemetaan peran global, meskipun mereka ditugaskan ke peran proyek.

Pertimbangkan untuk memetakan pengguna ke peran VIEWER secara global, lalu berikan izin tambahan melalui peran khusus proyek. Ini memberikan akses dasar sambil memungkinkan kontrol berbutir halus di tingkat proyek.

Proyek menyediakan:

  • Pembatasan sumber: Batasi repositori Git mana yang dapat digunakan

  • Pembatasan tujuan: Batasi cluster dan ruang nama mana yang dapat ditargetkan

  • Pembatasan sumber daya: Batasi tipe sumber daya Kubernetes mana yang dapat digunakan

  • Integrasi RBAC: Memetakan proyek ke grup Pusat AWS Identitas atau peran CD Argo

Contoh proyek untuk isolasi tim:

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: description: Team A applications # Required: Specify which namespaces this project watches for Applications sourceNamespaces: - argocd # Source restrictions sourceRepos: - https://github.com/myorg/team-a-apps # Destination restrictions destinations: - namespace: team-a-* server: arn:aws:eks:us-west-2:111122223333:cluster/production # Resource restrictions clusterResourceWhitelist: - group: '' kind: Namespace namespaceResourceWhitelist: - group: 'apps' kind: Deployment - group: '' kind: Service - group: '' kind: ConfigMap

Ruang nama sumber

Saat menggunakan kemampuan CD EKS Argo, spec.sourceNamespaces bidang ini diperlukan dalam AppProject definisi. Bidang ini menentukan namespace mana yang dapat berisi Aplikasi atau referensi proyek ApplicationSets ini.

penting

Kemampuan EKS Argo CD hanya mendukung satu namespace untuk Aplikasi dan ApplicationSets —namespace yang Anda tentukan saat membuat kemampuan (biasanya). argocd Ini berbeda dari CD Argo open source yang mendukung beberapa ruang nama.

AppProject konfigurasi

Semua AppProjects harus menyertakan namespace yang dikonfigurasi kemampuan di: sourceNamespaces

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a-project namespace: argocd spec: description: Applications for Team A # Required: Specify the capability's configured namespace (configuration.argoCd.namespace) sourceNamespaces: - argocd # Must match your capability's namespace configuration # Source repositories this project can deploy from sourceRepos: - 'https://github.com/my-org/team-a-*' # Destination restrictions destinations: - namespace: 'team-a-*' server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
catatan

Jika Anda menghilangkan namespace kemampuan darisourceNamespaces, Aplikasi atau ApplicationSets dalam namespace itu tidak dapat mereferensikan proyek ini, yang mengakibatkan kegagalan penerapan.

Tetapkan pengguna ke proyek:

Peran proyek memberi pengguna EDITOR dan VIEWER akses ke sumber daya proyek (Aplikasi, ApplicationSets, repositori, dan kredensi cluster) dan kemampuan (log, exec). Tanpa peran proyek, pengguna ini tidak dapat mengakses sumber daya ini bahkan jika mereka memiliki akses peran global.

Pengguna ADMIN memiliki akses ke semua Aplikasi tanpa memerlukan peran proyek.

Contoh: Memberikan akses Aplikasi ke anggota tim

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: # ... project configuration ... sourceNamespaces: - argocd # Project roles grant Application-level access roles: - name: developer description: Team A developers - can manage Applications policies: - p, proj:team-a:developer, applications, *, team-a/*, allow - p, proj:team-a:developer, clusters, get, *, allow # See cluster names in UI groups: - 686103e0-f051-7068-b225-e6392b959d9e # Identity Center group ID - name: viewer description: Team A viewers - read-only Application access policies: - p, proj:team-a:viewer, applications, get, team-a/*, allow - p, proj:team-a:viewer, clusters, get, *, allow # See cluster names in UI groups: - 786203e0-f051-7068-b225-e6392b959d9f # Identity Center group ID
catatan

Sertakan clusters, get, *, allow dalam peran proyek untuk memungkinkan pengguna melihat nama cluster di UI. Tanpa izin ini, cluster tujuan ditampilkan sebagai “tidak diketahui”.

Memahami kebijakan peran proyek:

Format kebijakan adalah: p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>

Kebijakan sumber daya:

  • applications, , team-a/, allow- Akses penuh ke semua Aplikasi dalam tim-proyek

  • applications, get, team-a/*, allow- Akses hanya-baca ke Aplikasi

  • applications, sync, team-a/*, allow- Dapat menyinkronkan Aplikasi tetapi tidak membuat/menghapus

  • applications, delete, team-a/*, allow- Dapat menghapus Aplikasi (gunakan dengan hati-hati)

  • applicationsets, , team-a/, allow- Akses penuh ke ApplicationSets

  • repositories, *, *, allow- Akses ke kredensi repositori

  • clusters, *, *, allow- Akses ke kredensi cluster

Kebijakan kemampuan:

  • logs, , team-a/, allow- Akses ke log aplikasi

  • exec, , team-a/, allow- Akses Exec ke pod aplikasi

catatan

Pengguna EDITOR dapat membuat peran proyek untuk memberikan izin kepada diri mereka sendiri dan orang lain dalam proyek yang dapat mereka perbarui. Hal ini memungkinkan lead tim untuk mengontrol akses ke sumber daya cakupan proyek untuk tim mereka tanpa memerlukan intervensi ADMIN.

catatan

Gunakan grup Pusat Identitas IDs (bukan nama grup) di groups bidang. Anda juga dapat menggunakan pengguna Pusat Identitas IDs untuk akses pengguna individu. Temukan ini IDs di konsol Pusat AWS Identitas atau menggunakan AWS CLI.

Pola izin umum

Pola 1: Tim admin dengan akses penuh

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam", "SRETeam"] } }

Pengguna ADMIN dapat melihat dan mengelola semua sumber daya cakupan proyek tanpa konfigurasi tambahan.

Pola 2: Pemimpin tim mengelola proyek, akses pengembang melalui peran proyek

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
  1. ADMIN membuat proyek untuk setiap tim

  2. Pemimpin tim (EDITOR) mengonfigurasi peran proyek untuk memberikan pengembang mereka akses ke sumber daya proyek (Aplikasi, ApplicationSets, kredensi) dan kemampuan (log, eksekutif)

  3. Pengembang (VIEWER) hanya dapat mengakses sumber daya dan kemampuan yang diizinkan oleh peran proyek mereka

Pola 3: Akses berbasis tim dengan peran proyek

  1. ADMIN membuat proyek dan tim peta mengarah ke peran EDITOR secara global

  2. Pemimpin tim (EDITOR) menetapkan anggota tim untuk peran proyek dalam proyek mereka

  3. Anggota tim hanya membutuhkan peran global VIEWER — peran proyek menyediakan akses ke sumber daya dan kemampuan proyek

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }

Praktik terbaik

Gunakan grup alih-alih pengguna individu: Petakan grup Pusat AWS Identitas ke peran CD Argo daripada pengguna individu untuk pengelolaan yang lebih mudah.

Mulailah dengan hak istimewa paling sedikit: Mulailah dengan akses VIEWER dan berikan EDITOR atau ADMIN sesuai kebutuhan.

Gunakan proyek untuk isolasi tim: Buat terpisah AppProjects untuk tim atau lingkungan yang berbeda untuk menegakkan batasan.

Federasi Pusat Identitas Leverage: Konfigurasikan Pusat AWS Identitas untuk berfederasi dengan penyedia identitas perusahaan Anda untuk manajemen pengguna terpusat.

Tinjauan akses reguler: Tinjau pemetaan peran dan tugas proyek secara berkala untuk memastikan tingkat akses yang sesuai.

Batasi akses klaster: Ingat bahwa Argo CD RBAC mengontrol akses ke sumber daya dan operasi Argo CD, tetapi tidak sesuai dengan Kubernetes RBAC. Pengguna dengan akses CD Argo dapat menyebarkan aplikasi ke cluster yang dapat diakses oleh Argo CD. Batasi cluster mana Argo CD dapat mengakses dan menggunakan batasan tujuan proyek untuk mengontrol di mana aplikasi dapat digunakan.

AWS izin layanan

Untuk menggunakan AWS layanan secara langsung di sumber daya Aplikasi (tanpa membuat sumber daya Repositori), lampirkan izin IAM yang diperlukan ke Peran Kemampuan.

ECR untuk grafik Helm:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

CodeCommit repositori:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "arn:aws:codecommit:region:account-id:repository-name" } ] }

CodeConnections (GitHub, GitLab, Bitbucket):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:UseConnection" ], "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id" } ] }

Lihat Konfigurasikan akses repositori untuk detail tentang menggunakan integrasi ini.

Langkah selanjutnya