Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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.
Pertimbangan keamanan untuk Kemampuan EKS
Topik ini mencakup pertimbangan keamanan penting untuk Kemampuan EKS, termasuk konfigurasi peran IAM, izin Kubernetes, dan pola arsitektur untuk penerapan multi-cluster dan manajemen sumber daya lintas akun. AWS
Kapabilitas EKS menggunakan kombinasi peran IAM, entri akses EKS, dan Kubernetes RBAC untuk menyediakan akses aman ke AWS layanan, sumber daya Kubernetes dalam cluster, dan integrasi dengan, Manajer Rahasia, dan layanan lainnya. AWS CodeConnections AWS AWS
Peran kemampuan IAM
Saat membuat kemampuan, Anda memberikan peran kemampuan IAM yang digunakan EKS untuk melakukan tindakan atas nama Anda. Peran ini harus:
-
Berada di AWS akun yang sama dengan sumber daya cluster dan kemampuan
-
Memiliki kebijakan kepercayaan yang memungkinkan prinsipal
capabilities---eks.amazonaws.com.rproxy.goskope.comlayanan untuk mengambil peran -
Miliki izin IAM yang sesuai untuk jenis kemampuan dan kasus penggunaan, tergantung pada kebutuhan Anda. Untuk informasi terperinci tentang izin IAM yang diperlukan, lihatConnect ke repositori Git dengan AWS CodeConnections,Kelola rahasia aplikasi dengan AWS Secrets Manager, dan Konfigurasikan izin ACK
Ini adalah praktik terbaik untuk mempertimbangkan ruang lingkup hak istimewa yang diperlukan untuk kasus penggunaan spesifik Anda dan hanya memberikan izin yang diperlukan untuk memenuhi persyaratan Anda. Misalnya, saat menggunakan Kapabilitas EKS untuk Kube Resource Orchestrator, tidak diperlukan izin IAM, sementara saat menggunakan Kapabilitas EKS untuk Peng AWS ontrol untuk Kubernetes, Anda dapat memberikan akses penuh ke satu atau beberapa layanan. AWS
penting
Meskipun beberapa kasus penggunaan mungkin menjamin penggunaan hak administratif yang luas, ikuti prinsip hak istimewa terkecil dengan hanya memberikan izin IAM minimum yang diperlukan untuk kasus penggunaan spesifik Anda, membatasi akses ke sumber daya tertentu menggunakan ARN dan kunci kondisi daripada menggunakan izin wildcard.
Untuk informasi terperinci tentang membuat dan mengonfigurasi peran IAM kemampuan, lihatPeran IAM kemampuan Amazon EKS.
Entri akses EKS
Saat Anda membuat kemampuan dengan peran IAM, Amazon EKS secara otomatis membuat entri akses untuk peran tersebut di cluster Anda. Entri akses ini memberikan izin dasar kemampuan Kubernetes untuk berfungsi.
catatan
Entri akses dibuat untuk cluster tempat kemampuan dibuat. Untuk penerapan CD Argo ke cluster jarak jauh, Anda harus membuat entri akses pada cluster tersebut dengan izin yang sesuai untuk kemampuan CD Argo untuk menyebarkan dan mengelola aplikasi.
Entri akses meliputi:
-
Peran IAM ARN sebagai kepala sekolah
-
Capability-specific kebijakan entri akses yang memberikan izin dasar Kubernetes
-
Lingkup yang sesuai (seluruh cluster atau ruang nama) berdasarkan jenis kemampuan
catatan
Untuk Argo CD, izin lingkup ruang nama diberikan ke namespace yang ditentukan dalam konfigurasi kemampuan (default ke). argocd
Kebijakan entri akses default berdasarkan kemampuan
Setiap jenis kemampuan memberikan peran kemampuan izin yang diperlukan, menetapkan kebijakan entri akses default yang berbeda sebagai berikut:
- kro
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSKROPolicy(bercakupan cluster)Memberikan izin untuk menonton ResourceGraphDefinitions dan mengelola serta membuat instance sumber daya khusus yang ditentukan oleh RGD.
-
- ACK
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSACKPolicy(bercakupan cluster)Memberikan izin untuk membuat, membaca, memperbarui, dan menghapus sumber daya khusus ACK di semua ruang nama.
-
- Argo CD
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDClusterPolicy(bercakupan cluster)Memberikan izin tingkat cluster untuk Argo CD untuk menemukan sumber daya dan mengelola objek bercakupan cluster.
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDPolicy(ruang lingkup nama)Memberikan izin tingkat ruang nama untuk Argo CD untuk menyebarkan dan mengelola aplikasi. Dicakup ke namespace yang ditentukan dalam konfigurasi kemampuan (default ke).
argocd
-
Lihat Tinjau izin kebijakan akses untuk informasi lebih rinci.
Izin Kubernetes tambahan
Beberapa kemampuan mungkin memerlukan izin Kubernetes tambahan di luar kebijakan entri akses default. Anda dapat memberikan izin ini menggunakan salah satu:
-
Kebijakan entri akses: Mengaitkan kebijakan terkelola tambahan ke entri akses
-
Kubernetes RBAC: Membuat
Roleatau mengClusterRoleikat untuk pengguna Kubernetes kemampuan
Izin pembaca rahasia ACK
Beberapa pengontrol ACK perlu membaca rahasia Kubernetes untuk mengambil data sensitif seperti kata sandi database. Pengontrol ACK berikut memerlukan akses baca rahasia:
-
acm,acmpca,documentdb,memorydb,mq,rds,secretsmanager
Untuk memberikan izin baca rahasia:
-
Mengaitkan kebijakan entri
arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicyakses ke entri akses kemampuan -
Cakupan kebijakan ke ruang nama tertentu di mana sumber daya ACK akan mereferensikan rahasia, atau memberikan akses seluruh cluster
penting
Izin baca rahasia dicakup ke ruang nama yang Anda tentukan saat mengaitkan kebijakan entri akses. Ini memungkinkan Anda untuk membatasi rahasia mana yang dapat diakses oleh kemampuan.
izin sumber daya sewenang-wenang kro
Secara default, kro dapat menonton dan mengelola ResourceGraphDefinitions (RGD) dan instansnya. Untuk mengelola sumber daya tersusun seperti Deployments, Services, atau ConfigMaps, konfigurasikan izin Kubernetes tambahan.
Untuk memberikan izin kro untuk membuat sumber daya:
Opsi 1: Akses kebijakan entri
Kaitkan kebijakan entri akses yang telah ditentukan sebelumnya seperti AmazonEKSAdminPolicy atau AmazonEKSEditPolicy ke entri akses kemampuan.
Opsi 2: Kubernetes RBAC
Buat ClusterRoleBinding yang memberi pengguna Kubernetes kemampuan izin yang diperlukan:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kro-cluster-admin subjects: - kind: User name: arn:aws:sts::111122223333:assumed-role/my-kro-role/KRO apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
catatan
Nama pengguna Kubernetes untuk kro mengikuti pola: arn:aws:sts::ACCOUNT_ID:assumed-role/ROLE_NAME/KRO
Nama sesi /KRO (huruf besar) secara otomatis diatur oleh kemampuan EKS kro.
Izin IAM yang diperlukan oleh kemampuan
- kro (Orkestrator Sumber Daya Kube)
-
Tidak diperlukan izin IAM. Anda dapat membuat peran kemampuan tanpa kebijakan terlampir. kro hanya memerlukan izin RBAC Kubernetes.
- ACK (Peng AWS ontrol untuk Kubernetes)
-
Memerlukan izin untuk mengelola AWS sumber daya yang akan dibuat dan dikelola ACK. Anda harus memasukkan izin ke layanan, tindakan, dan sumber daya tertentu berdasarkan kebutuhan Anda. Untuk informasi terperinci tentang mengonfigurasi izin ACK, termasuk praktik terbaik produksi dengan Pemilih Peran IAM, lihat. Konfigurasikan izin ACK
- Argo CD
-
Tidak ada izin IAM yang diperlukan secara default. Izin opsional mungkin diperlukan untuk:
-
AWS Manajer Rahasia: Jika menyimpan kredenSIAL repositori Git di Secrets Manager
-
AWS CodeConnections: Jika menggunakan CodeConnections untuk otentikasi repositori Git
-
Amazon ECR: Jika menggunakan grafik Helm yang disimpan dalam format OCI di Amazon ECR
-
Praktik terbaik keamanan
IAM memiliki hak istimewa terendah
Berikan sumber daya kemampuan Anda hanya izin yang diperlukan untuk kasus penggunaan Anda. Ini tidak berarti Anda tidak dapat memberikan izin administratif yang luas untuk kemampuan Anda jika diperlukan. Dalam kasus seperti itu, Anda harus mengatur akses ke sumber daya tersebut dengan tepat.
Peran kemampuan:
-
ACK: Jika memungkinkan, batasi izin IAM untuk AWS layanan dan sumber daya tertentu yang dibutuhkan tim Anda, berdasarkan kasus penggunaan dan persyaratan
-
Argo CD: Batasi akses ke repositori Git tertentu dan ruang nama Kubernetes
-
kro: Memerlukan peran kemampuan untuk kebijakan kepercayaan, tetapi tidak diperlukan izin IAM (hanya menggunakan cluster RBAC)
Contoh: Alih-alih"Resource": "*", tentukan pola untuk sumber daya tertentu atau kelompok sumber daya.
"Resource": [ "arn:aws:s3:::my-app-*", "arn:aws:rds:us-west-2:111122223333:db:prod-*" ]
Gunakan kunci kondisi IAM untuk membatasi akses lebih lanjut:
"Condition": { "StringEquals": { "aws:ResourceTag/Environment": "production" } }
Untuk informasi konfigurasi IAM tambahan, lihat bagian pertimbangan untuk setiap kemampuan.
Isolasi namespace untuk rahasia CD Argo
Kemampuan CD Argo yang dikelola memiliki akses ke semua rahasia Kubernetes dalam namespace yang dikonfigurasi (default:). argocd Untuk mempertahankan postur keamanan yang optimal, ikuti praktik isolasi namespace berikut:
-
Simpan hanya CD-relevant rahasia Argo dalam namespace CD Argo
-
Hindari menyimpan rahasia aplikasi yang tidak terkait di namespace yang sama dengan Argo CD
-
Gunakan ruang nama terpisah untuk rahasia aplikasi yang tidak diperlukan untuk operasi CD Argo
Isolasi ini memastikan bahwa akses rahasia Argo CD terbatas hanya pada kredenSIAL yang dibutuhkan untuk otentikasi repositori Git dan operasi Argo CD-specific lainnya.
Kubernetes RBAC
Kontrol pengguna dan akun layanan mana yang dapat membuat dan mengelola sumber daya kemampuan. Ini adalah praktik terbaik untuk menyebarkan sumber daya kemampuan dalam ruang nama khusus dengan kebijakan RBAC yang sesuai.
Contoh: Peran RBAC untuk bekerja dengan ACK, memungkinkan pengelolaan sumber daya S3 Bucket di app-team namespace:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: ack-s3-manager namespace: app-team rules: - apiGroups: ["s3.services.k8s.aws"] resources: ["buckets"] verbs: ["get", "list", "create", "update", "delete"]
Pencatatan audit
CloudTrail: Semua operasi API Kemampuan EKS (buat, perbarui, hapus) dicatat AWS CloudTrail.
Aktif CloudTrail kan logging untuk melacak:
-
Siapa yang membuat atau memodifikasi kemampuan
-
Ketika konfigurasi kemampuan berubah
-
Peran kemampuan apa yang digunakan
Akses jaringan dan titik akhir VPC
Akses API CD Argo pribadi
Anda dapat membatasi akses ke server Argo CD API dengan mengaitkan satu atau lebih titik akhir VPC dengan titik akhir CD Argo yang dihosting. Ini memungkinkan konektivitas pribadi dari dalam VPC Anda tanpa melintasi internet publik. Titik akhir VPC menyediakan akses ke UI web Argo CD dan API CD Argo (termasuk akses CLI).
catatan
Titik akhir VPC terhubung ke titik akhir API Argo CD yang dihosting (menggunakan kemampuan eks. region.amazonaws.com) tidak mendukung kebijakan titik akhir VPC.
Menyebarkan ke klaster pribadi
Kemampuan Argo CD dapat menerapkan aplikasi ke cluster EKS yang sepenuhnya pribadi, memberikan manfaat operasional yang signifikan dengan menghilangkan kebutuhan untuk peering VPC atau konfigurasi jaringan yang kompleks. Namun, saat merancang arsitektur ini, pertimbangkan bahwa Argo CD akan menarik konfigurasi dari repositori Git (yang mungkin publik) dan menerapkannya ke cluster pribadi Anda.
Pastikan Anda:
-
Gunakan repositori Git pribadi untuk beban kerja sensitif
-
Menerapkan kontrol akses repositori Git yang tepat dan otentikasi
-
Tinjau dan setujui perubahan melalui permintaan tarik sebelum menggabungkan
-
Pertimbangkan untuk menggunakan jendela sinkronisasi Argo CD untuk mengontrol kapan penerapan dapat terjadi
-
Pantau log audit Argo CD untuk perubahan konfigurasi yang tidak sah
Kepatuhan
Kemampuan EKS sepenuhnya dikelola dan memiliki sertifikasi kepatuhan Amazon EKS.
Untuk informasi kepatuhan saat ini, lihat AWS Layanan dalam Lingkup berdasarkan Program Kepatuhan
Langkah selanjutnya
-
Konfigurasikan izin ACK- Konfigurasikan izin IAM untuk ACK
-
Konfigurasikan izin kro- Konfigurasikan Kubernetes RBAC untuk kro
-
Konfigurasikan izin CD Argo- Konfigurasikan integrasi Identity Center untuk Argo CD
-
Memecahkan Masalah Kemampuan EKS- Memecahkan masalah keamanan dan izin