Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Cloud Container Engine/ Guía del usuario/ Permisos/ Seguridad del pod/ Configuración de una política de seguridad de pod
Actualización más reciente 2024-09-10 GMT+08:00

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.

  1. Ejecute el siguiente comando:

    kubectl edit psp psp-global

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

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

  2. Ejecute el siguiente comando:

    kubectl apply -f policy.yaml