Memahami kebijakan keamanan pod yang EKS dibuat Amazon (PSP) - 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.

Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.

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

Memahami kebijakan keamanan pod yang EKS dibuat Amazon (PSP)

Bagian Kubernetes Pod pengontrol penerimaan kebijakan keamanan memvalidasi Pod pembuatan dan pembaruan permintaan terhadap seperangkat aturan. Secara default, EKS kluster Amazon dikirimkan dengan kebijakan keamanan yang sepenuhnya permisif tanpa batasan. Untuk informasi selengkapnya, lihat Kebijakan Keamanan Pod di Kubernetes dokumentasi.

catatan

Yang PodSecurityPolicy (PSP) tidak digunakan lagi di Kubernetes versi 1.21 dan dihapus di Kubernetes 1.25. PSPs sedang diganti dengan Pod Security Admission (PSA), sebuah pengontrol masuk bawaan yang mengimplementasikan kontrol keamanan yang diuraikan dalam Standar Keamanan Pod () PSS. PSAdan keduanya PSS telah mencapai status fitur beta, dan diaktifkan di Amazon secara EKS default. Untuk mengatasi PSP penghapusan di1.25, kami sarankan Anda menerapkan PSS di AmazonEKS. Untuk informasi selengkapnya, lihat Menerapkan Standar Keamanan Pod EKS di Amazon di AWS blog.

Amazon EKS default Pod kebijakan keamanan

EKSCluster Amazon dengan Kubernetes versi 1.13 atau lebih tinggi memiliki default Pod Kebijakan keamanan bernamaeks.privileged. Kebijakan ini tidak memiliki batasan pada jenis apa Pod dapat diterima ke dalam sistem, yang setara dengan menjalankan Kubernetes dengan PodSecurityPolicy pengontrol dinonaktifkan.

catatan

Kebijakan ini dibuat untuk memelihara kompatibilitas ke belakang dengan klaster yang tidak memiliki pengendali PodSecurityPolicy yang aktif. Anda dapat membuat kebijakan yang lebih ketat untuk klaster Anda, juga untuk namespace individual serta akun layanan, dan kemudian hapus kebijakan default untuk mengaktifkan kebijakan yang lebih ketat.

Anda dapat melihat kebijakan default dengan perintah berikut.

kubectl get psp eks.privileged

Contoh output adalah sebagai berikut.

NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES eks.privileged true * RunAsAny RunAsAny RunAsAny RunAsAny false *

Untuk lebih jelasnya, Anda dapat mendeskripsikan kebijakan dengan perintah berikut.

kubectl describe psp eks.privileged

Contoh output adalah sebagai berikut.

Name: eks.privileged Settings: Allow Privileged: true Allow Privilege Escalation: 0xc0004ce5f8 Default Add Capabilities: <none> Required Drop Capabilities: <none> Allowed Capabilities: * Allowed Volume Types: * Allow Host Network: true Allow Host Ports: 0-65535 Allow Host PID: true Allow Host IPC: true Read Only Root Filesystem: false SELinux Context Strategy: RunAsAny User: <none> Role: <none> Type: <none> Level: <none> Run As User Strategy: RunAsAny Ranges: <none> FSGroup Strategy: RunAsAny Ranges: <none> Supplemental Groups Strategy: RunAsAny Ranges: <none>

Anda dapat melihat YAML file lengkap untuk eks.privileged Pod kebijakan keamanan, peran klaster, dan pengikatan peran klaster di Instal atau pulihkan default Pod kebijakan keamanan Instal atau pulihkan kebijakan keamanan Pod default.

Hapus Amazon default EKS Pod kebijakan keamanan

Jika Anda membuat kebijakan yang lebih ketat untuk Anda Pods, lalu setelah melakukannya, Anda dapat menghapus Amazon default EKS eks.privileged Pod kebijakan keamanan untuk mengaktifkan kebijakan kustom Anda.

penting

Jika Anda menggunakan versi 1.7.0 atau yang lebih baru dari CNI plugin dan Anda menetapkan kustom Pod Kebijakan keamanan untuk aws-node Kubernetes akun layanan yang digunakan untuk aws-node Pods dikerahkan oleh Daemonset, maka kebijakan harus ada NET_ADMIN di allowedCapabilities bagiannya bersama dengan hostNetwork: true dan privileged: true di kebijakan. spec

  1. Buat file bernama privileged-podsecuritypolicy.yaml dengan konten dalam file contoh di Instal atau pulihkan default Pod kebijakan keamanan Instal atau pulihkan kebijakan keamanan Pod default.

  2. Hapus YAML dengan perintah berikut. Ini menghapus default Pod kebijakan keamanan, yangClusterRole, dan yang ClusterRoleBinding terkait dengannya.

    kubectl delete -f privileged-podsecuritypolicy.yaml

Instal atau pulihkan default Pod kebijakan keamanan

Jika Anda memutakhirkan dari versi sebelumnya Kubernetes, atau telah memodifikasi atau menghapus Amazon default EKS eks.privileged Pod kebijakan keamanan, Anda dapat mengembalikannya dengan langkah-langkah berikut.

  1. Buat file bernama privileged-podsecuritypolicy.yaml dengan konten berikut.

    apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: eks.privileged annotations: kubernetes.io/description: 'privileged allows full unrestricted access to Pod features, as if the PodSecurityPolicy controller was not enabled.' seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policy spec: privileged: true allowPrivilegeEscalation: true allowedCapabilities: - '*' volumes: - '*' hostNetwork: true hostPorts: - min: 0 max: 65535 hostIPC: true hostPID: true runAsUser: rule: 'RunAsAny' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'RunAsAny' fsGroup: rule: 'RunAsAny' readOnlyRootFilesystem: false --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:podsecuritypolicy:privileged labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policy rules: - apiGroups: - policy resourceNames: - eks.privileged resources: - podsecuritypolicies verbs: - use --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:podsecuritypolicy:authenticated annotations: kubernetes.io/description: 'Allow all authenticated users to create privileged Pods.' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policy roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:podsecuritypolicy:privileged subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated
  2. Terapkan YAML dengan perintah berikut.

    kubectl apply -f privileged-podsecuritypolicy.yaml