Tutoriales

Cómo administrar cuentas de servicio y restricciones de contexto de seguridad en OpenShift

Aprovechamiento de Kubernetes y OpenShift cuenta de usuario y cuenta de servicioLa diferencia es simple: las cuentas de usuario son para humanos, mientras que las cuentas de servicio son para procesos. En mi artículo anterior, demostré cómo usar cuentas de servicio y restricciones de contexto de seguridad (SCC) para garantizar que los pods tengan suficientes permisos para ejecutar procesos a nivel del sistema. Este artículo trata sobre el uso y la administración de cuentas de servicio y SCC.

Las cuentas de servicio existen dentro de un proyecto y cada nombre de usuario de cuenta de servicio se deriva de su proyecto. Cada cuenta de servicio es miembro de dos grupos:

  • Sistema: Cuenta de servicio Incluir todas las cuentas de servicio en el sistema.
  • Sistema: Cuenta de servicio: Incluye todas las cuentas de servicio del proyecto especificado.

usar oc Comando para ver todas las cuentas de servicio en el proyecto actual:

$ oc get sa

Si no está consultando elementos activos, utilice -n Opciones para especificar un proyecto o espacio de nombres.

usar oc create sa Cree una cuenta de servicio con un nombre arbitrario:

$ oc create sa sa-demo
serviceaccount/sa-demo created

usar describe Subcomando:

Name:                sa-demo
Namespace:           default
Labels:              none
Annotations:         none
Image pull secrets:  sa-demo-dockercfg-wx9mw
Mountable secrets:   sa-demo-token-zm6jh
                     sa-demo-dockercfg-wx9mw
Tokens:              sa-demo-token-lt7h8
                     sa-demo-token-zm6jh
Events:              none

Configurar restricciones de acceso a la cuenta de servicio

Después de crear una cuenta de servicio, use vinculaciones de roles para conectar la cuenta a un rol específico o vincularla a un SCC específico. Para otorgar el rol a la cuenta de servicio del proyecto activo, escriba:

$ oc adm policy add-role-to-user  \ 
system:serviceaccount::

[ Learn Kubernetes basics in this cheat sheet. ]

Usar restricciones de contexto de seguridad

SCC es un recurso de OpenShift que restringe un pod a un conjunto de recursos, similar al recurso de contexto de seguridad de Kubernetes. El objetivo principal de ambos es limitar el acceso del pod al entorno de alojamiento. Puede usar SCC para controlar los permisos de los pods de forma similar a como usa el control de acceso basado en roles (RBAC) para administrar los permisos de los usuarios.

Puede usar SCC para definir un conjunto de condiciones que un pod debe usar en tiempo de ejecución. Esta función le permite controlar cosas como si un pod puede ejecutar contenedores privilegiados, qué funciones puede solicitar un contenedor, el contexto SELinux del contenedor, el uso de tipos de volumen y más.

[ Improve your skills managing and using SELinux with this helpful guide. ]

Crear SCC personalizado

Puede crear un SCC como cualquier otro recurso: usando un archivo YAML. Aquí hay un ejemplo:

---
kind: SecurityContextConstraints
apiVersion: security.openshift.io/v1
metadata:
  name: scc-admin
allowPrivilegedContainer: true
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
fsGroup:
  type: RunAsAny
supplementalGroups:
  type: RunAsAny
users:
- sa-demo   # service account
requiredDropCapabilities:  # disallow these docker capabilities
- KILL
- MKNOD
- SYS_CHROOT

Trabajar con archivos YAML oc create:

$ oc create -f scc-admin.yaml
securitycontextconstraints.security.openshift.io/scc-admin created

Para ver detalles sobre la restricción de contexto de seguridad que acaba de crear, utilice oc get:

$ oc get scc | grep scc-admin
scc-admin     true       RunAsAny    RunAsAny           RunAsAny    RunAsAny       false          ["awsElasticBlockStore","azureDisk","azureFile","cephFS","cinder","configMap","csi","downwardAPI","emptyDir","ephemeral","fc","flexVolume","flocker","gcePersistentDisk","gitRepo","glusterfs","iscsi","nfs","persistentVolumeClaim","photonPersistentDisk",[…]

puedes ver mas detalles oc describe:

$ oc describe scc scc-admin
Name:					scc-admin
Priority:				none
Access:					
  Users:				sa-demo   #service account
  Groups:				none
Settings:				
  Allow Privileged:		true
  Allow Privilege Escalation:	true
  Default Add Capabilities:	none
  Required Drop Capabilities:	KILL,MKNOD,SYS_CHROOT
  [...]
  SELinux Context Strategy: RunAsAny		
    User:					none
    Role:					none
    Type:					none
    Level:					none
  FSGroup Strategy: RunAsAny			
    Ranges:					none
  Supplemental Groups Strategy: RunAsAny	
    Ranges:					none

Cuentas de servicio y SCC

Las cuentas de servicio y los SCC son formas importantes de administrar los permisos dentro de un clúster. OpenShift tiene muchas formas de consultar su proyecto y clúster en busca de recursos, así que familiarícese con los comandos y construcciones disponibles.

Puede explorar más a fondo las diversas opciones de SCC leyendo a continuación Documentación de OpenShift SCCLos temas particularmente útiles incluyen el control del contexto SELinux de un contenedor, la solicitud de funcionalidad adicional para un contenedor, el cambio de ID de usuario y el uso de directorios de host como volúmenes.

LEER  Cómo usar Redis con Python

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba