Configuración de una política de seguridad de pod
Una política de seguridad de pod (PSP) es un recurso a nivel de clúster que controla los aspectos de seguridad confidenciales de la especificación de pod. El objeto de PodSecurityPolicy en Kubernetes define un grupo de condiciones que un pod debe cumplir para ser aceptado por el sistema, así como los valores predeterminados de los campos relacionados.
De forma predeterminada, el componente de control de acceso de PSP está habilitado para clústeres de v1.17.17 y se crea un PSP global predeterminado llamado psp-global. Puede modificar la política predeterminada (pero no eliminarla). También puede crear un PSP y vincularlo a la configuración de RBAC.
- Además de la PSP predeterminada global, el sistema configura PSP independientes para los componentes del sistema en el espacio de nombres kube-system. La modificación de la configuración psp-global no afecta a la creación de pods en el espacio de nombres kube-system.
- En Kubernetes 1.25, PSP se ha eliminado y reemplazado por Admisión de seguridad para pods. Para obtener más información, véase Configuración de admisión de seguridad de pods.
Modificación de la PSP global predeterminada
Antes de modificar la PSP global predeterminada, asegúrese de que se ha creado y conectado un clúster de CCE mediante kubectl.
- Ejecute el siguiente comando:
kubectl edit psp psp-global
- Modifique los parámetros según sea necesario. Para obtener más información, consulte PodSecurityPolicy.
Ejemplo de habilitación de Sysctls inseguros en la Política de Seguridad de Pods
Puede configurar los sistemas-unsafe-sysctls permitidos para un grupo de nodos. Para los clústeres de CCE de v1.17.17 y versiones posteriores, agregue configuraciones en allowedUnsafeSysctls de la política de seguridad del pod para que la configuración surta efecto. Para obtener más información, consulte PodSecurityPolicy.
Además de modificar la política de seguridad global de pods, puede agregar nuevas políticas de seguridad de pods. Por ejemplo, habilite sysctls inseguro net.core.somaxconn. A continuación se muestra un ejemplo de cómo agregar una política de seguridad de pod:
apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' name: sysctl-psp spec: allowedUnsafeSysctls: - net.core.somaxconn allowPrivilegeEscalation: true allowedCapabilities: - '*' fsGroup: rule: RunAsAny hostIPC: true hostNetwork: true hostPID: true hostPorts: - max: 65535 min: 0 privileged: true runAsGroup: rule: RunAsAny runAsUser: rule: RunAsAny seLinux: rule: RunAsAny supplementalGroups: rule: RunAsAny volumes: - '*' --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: sysctl-psp rules: - apiGroups: - "*" resources: - podsecuritypolicies resourceNames: - sysctl-psp verbs: - use --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: sysctl-psp roleRef: kind: ClusterRole name: sysctl-psp apiGroup: rbac.authorization.k8s.io subjects: - kind: Group name: system:authenticated apiGroup: rbac.authorization.k8s.io
Restauración de la PSP original
Si ha modificado la política de seguridad de pod predeterminada y desea restaurar la política de seguridad de pod original, realice las siguientes operaciones.
- Cree un archivo de descripción de política denominado policy.yaml. policy.yaml es un nombre de archivo de ejemplo. Puede cambiar el nombre según sea necesario.
vi policy.yaml
El contenido del archivo de descripción es el siguiente:
apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: psp-global annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' 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' --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: psp-global rules: - apiGroups: - "*" resources: - podsecuritypolicies resourceNames: - psp-global verbs: - use --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: psp-global roleRef: kind: ClusterRole name: psp-global apiGroup: rbac.authorization.k8s.io subjects: - kind: Group name: system:authenticated apiGroup: rbac.authorization.k8s.io
- Ejecute el siguiente comando:
kubectl apply -f policy.yaml