El objetivo de Kf es ofrecer una experiencia de desarrollo similar a la de Cloud Foundry, replicando el ciclo de vida de compilación, envío e implementación. Para ello, crea una capa de experiencia de usuario para desarrolladores sobre tecnologías ampliamente conocidas, usadas y adoptadas, como Kubernetes, Istio y los registros de contenedores, en lugar de implementar todas las piezas desde cero.
Descripción general de la seguridad
A la hora de tomar decisiones sobre seguridad, Kf ofrece soluciones completas que son nativas de sus respectivos componentes y que se pueden complementar con otros mecanismos. Vamos a analizar estos elementos por separado:
- Soluciones completas: Kf intenta no proporcionar soluciones parciales que puedan generar una falsa sensación de seguridad.
- Nativo significa que las soluciones deben formar parte del componente en lugar de ser una estructura de Kf para evitar cambios que provoquen errores.
- Se puede aumentar: el enfoque de Kf debería funcionar a la perfección con otras herramientas de Kubernetes y Google Cloud para ofrecer una defensa en profundidad.
Cuestiones importantes
Además de las limitaciones actuales que se describen a continuación, es importante que lea y comprenda los elementos que se indican en esta sección.
Workload Identity
De forma predeterminada, Kf usa Workload Identity para proporcionar una entrega y una rotación seguras de las credenciales de la cuenta de servicio que usa Kf para interactuar con tu proyecto de Google Cloud . Workload Identity lo consigue asociando una cuenta de servicio de Kubernetes (KSA) a una cuenta de servicio de Google (GSA). El controlador Kf se ejecuta en el espacio de nombres kf
y usa un KSA llamado controller
asignado a tu GSA para hacer lo siguiente:
- Escribir métricas en Stackdriver
- Cuando se crea un nuevo espacio de Kf (
kf create-space
), el controlador de Kf crea un nuevo KSA llamadokf-builder
en el nuevo espacio y lo asigna al mismo GSA. - Tekton usa la
kf-builder
KSA para insertar y extraer imágenes de contenedor en Google Container Registry (gcr.io).
En este diagrama se ilustran esas interacciones:
Limitaciones actuales
- Kf no proporciona roles de control de acceso basado en roles predefinidos.
- Hasta que Kf proporcione esta función, usa el control de acceso basado en roles.
- Un desarrollador que envíe una aplicación con Kf también puede crear pods (con
kubectl
) que puedan usar el KSAkf-builder
con los permisos de su GSA asociado. - Para implementar en Kf, se necesita acceso de escritura a un registro de contenedores.
- Despliega Kf en un proyecto específico sin acceso a los recursos de producción.
- Concede a los desarrolladores acceso para enviar código al repositorio de artefactos concediéndoles el rol
roles/storage.admin
en el proyecto o en los contenedores que utiliza el repositorio de artefactos.
- Kf usa el mismo pod para obtener, compilar y almacenar imágenes.
- Ten en cuenta que los autores y editores de los buildpacks que utilices pueden conocer las credenciales que proporciones.
- Kf no admite cuotas para protegerse frente a vecinos ruidosos.
- Usa cuotas de recursos de Kubernetes.
Otros recursos
General
- Descripción general de la seguridad de GKE
- Clústeres con varios propietarios en GKE
- Workload Identity
- GKE y políticas de IAM