View a markdown version of this page

Pertimbangan keamanan untuk Kemampuan EKS - Amazon EKS

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:

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 Role atau meng ClusterRole ikat 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:

  1. Mengaitkan kebijakan entri arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicy akses ke entri akses kemampuan

  2. 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