En este documento, se describe cómo configurar los perfiles de Seccomp (modo de computación segura) de Kubernetes para los Pods de Apigee hybrid con el objetivo de mejorar la seguridad restringiendo las llamadas al sistema (syscalls) que pueden realizar los contenedores.
Acerca de los perfiles de Seccomp en Kubernetes
Seccomp es una función de seguridad del kernel de Linux que limita las llamadas al sistema que puede realizar un proceso. Cuando se usa con Kubernetes, puedes aplicar perfiles de Seccomp al securityContext de un pod para restringir las llamadas al sistema disponibles para sus contenedores. Esto ayuda a reducir la superficie de ataque del contenedor y mitiga el riesgo de escapes del contenedor o elevación de privilegios, ya que se aplica el principio de privilegio mínimo.
Para obtener más información sobre Seccomp en Kubernetes, consulta Secure Computing (Seccomp) en la documentación de Kubernetes.
En la nube híbrida, los perfiles de Seccomp no están habilitados de forma predeterminada. Puedes aplicar un perfil de Seccomp a los componentes híbridos agregando el objeto seccompProfile a tu archivo overrides.yaml.
Cómo configurar perfiles de Seccomp
Puedes aplicar perfiles de Seccomp de forma global, por entorno o por componente en tu archivo overrides.yaml agregando el bloque de configuración securityContext.seccompProfile. Hybrid admite los siguientes tipos de perfiles de Seccomp:
RuntimeDefault: Es el perfil predeterminado especificado por el entorno de ejecución del contenedor. Esta es la opción recomendada, ya que proporciona un nivel de seguridad razonable y, al mismo tiempo, mantiene la compatibilidad con la mayoría de las cargas de trabajo.Unconfined: No aplica restricciones de Seccomp al Pod. Esta es la opción menos segura y debe usarse con precaución.
Prioridad de la configuración
Puedes establecer el seccompProfile en los siguientes niveles de overrides.yaml. La configuración a nivel del componente tiene prioridad sobre la configuración a nivel del entorno, y la configuración a nivel del entorno tiene prioridad sobre la configuración global:
- Nivel de componente: Se aplica a un componente específico (por ejemplo,
runtimeocassandra). - Nivel del entorno: Se aplica a todos los componentes dentro de un entorno específico definido en el array
envs[], a menos que se anule a nivel del componente. - Nivel global: Se aplica a todos los componentes del clúster, a menos que se anule a nivel del entorno o del componente.
Ejemplos
Configuración global
Para aplicar el perfil de Seccomp RuntimeDefault a todos los componentes que no tienen una anulación a nivel del entorno o del componente, agrega lo siguiente al nivel superior de tu overrides.yaml:
securityContext: seccompProfile: type: RuntimeDefault
Configuración del entorno
Para aplicar el perfil de RuntimeDefault Seccomp a todos los componentes de un entorno específico, agrega la configuración en el elemento envs[]:
envs: - name: "my-environment" securityContext: seccompProfile: type: RuntimeDefault ...
Configuración de componentes
Para aplicar el perfil de RuntimeDefault Seccomp a un componente específico (por ejemplo, el componente de tiempo de ejecución), agrega la configuración en ese componente:
runtime: securityContext: seccompProfile: type: RuntimeDefault ...