Contenido
Integración a HashiCorp Vault
Kaspersky Container Security permite transferir de forma segura contraseñas, tokens y secretos mediante HashiCorp Vault, un servicio de almacenamiento externo. La solución genera anotaciones en el pod, que el inyector Vault utiliza para montar los secretos necesarios del almacenamiento en el inicio.
Kaspersky Container Security es compatible con la integración a HashiCorp Vault 1.7 o una versión posterior.
La versión 2.0 de Kaspersky Container Security es compatible con HashiCorp Vault solo en el modo secundario con contenedores secundarios. En este caso, solo se admite la autenticación de Kubernetes.
Si el servicio considera pods no definidos y se utilizan cuentas predeterminadas del servicio, no recomendamos asignar los roles específicos del almacenamiento a dichas cuentas del servicio, en cumplimiento de los requisitos de seguridad críticos.
Los valores de la configuración de HashiCorp Vault se especifican en el archivo de configuración values.yaml y se despliegan al iniciar el paquete de Helm Chart.
La configuración de HashiCorp en el archivo de configuración values.yaml es de la siguiente manera:
- Si el parámetro
enabled
del bloquevault
tiene el valorfalse
, no se realizará la integración a Vault. - Si el parámetro
enabled
del bloquevault
tiene el valortrue
, se realizará la integración a Vault y se priorizarán los valores de las variables en el bloque de la configuración devault
.
El bloque de la configuración de vault
tiene las siguientes secciones:
secret
: para especificar secretos y credenciales.certificate
: para especificar certificados y claves de certificados.
En la sección secret
, se enumeran las rutas a los archivos que contienen los secretos para estos parámetros:
- Secretos de los servidores proxy ante solicitudes al entorno de información externo
- Credenciales de la base de datos de PostgreSQL
- Credenciales de un almacenamiento compatible con S3 para los archivos que genera la solución
- Credenciales del sistema de gestión de bases de datos ClickHouse
Los secretos se especifican con el formato key:value
donde:
<key>
es el nombre de la variable de entorno<value>
es la ruta completa al secreto en el almacenamiento, seguida del símbolo @ y el nombre de la clave del secreto creado en el almacenamiento
Por ejemplo, POSTGRES_USER:kv/secret/kcs/psql@POSTGRES_USER
Para obtener un certificado, en la sección vault.certificate
, debe especificar los siguientes parámetros:
- Para obtener un certificado de CA, el parámetro
ca
debe tener el valortrue.
En este caso, la ruta para acceder al certificado se forma a partir de la ruta estándarcert/ca
según el nombre de la infraestructura de clave pública (PKI). Si el certificado de CA no es un certificado raíz, use el parámetrocaList
para enumerar todos los certificados, incluido el certificado raíz. Por ejemplo:cert-ca:
ca: true
tls.crt: pki_kcs/cert/ca
caList:
- pki/cert/ca
- Para generar certificados y claves, debe especificar la ruta del nombre de PKI con la ruta estándar
issue
y el nombre del rol creado. El nombre común (cn
) y todos los nombres alternativos posibles (altname
) se añaden automáticamente al certificado. De ser necesario, puede especificar los valores decn
,altname
eipsans
de forma manual, como se muestra debajo para una base de datos externa:cert-pguser:
cn: pguser
altname: pguser,pguser.psql,pguser.psql.svc,pguser.psql.svc.cluster.local,localhost
ipsans: 0.0.0.0,127.0.0.1
- Para configurar la vigencia del certificado, debe especificar el valor del parámetro
ttl
. El valor predeterminado es 8760.El valor del parámetro no puede ser mayor del valor establecido en la PKI de HashiCorp Vault.
La sección certificate
, también contiene las rutas a los archivos que contienen los certificados y las claves siguientes:
- Certificado de CA y certificado del cliente para la base de datos externa de PostgreSQL
- Certificados obligatorios para los componentes de la solución:
- Certificado de CA y clave del certificado de CA para el controlador de admisión
- Certificado y clave del certificado para el módulo de licencias de Kaspersky Container Security
- Certificado y clave del certificado para el módulo que contiene la lógica corporativa principal de la solución
- Certificado y clave del certificado para la plataforma de llamada a procedimientos externos (GRPC)
- Certificado y clave del certificado para el servidor de análisis
- Certificado y clave del certificado para la API del servidor de análisis
- Certificado y clave del certificado para el servidor de archivos de actualización para redes corporativas privadas
- Certificado y clave del certificado para el almacenamiento de archivos compatible con S3
- Certificado y clave del certificado para el broker de eventos
- Certificado y clave del certificado para el broker de agentes
- Certificado y clave del certificado para el sistema de gestión de bases de datos ClickHouse
Configuración del almacenamiento HashiCorp Vault
Para que Kaspersky Container Security funcione con HashiCorp Vault, debe especificar los valores de los siguientes parámetros en el archivo de configuración values.yaml:
- La marca
enabled
activa la integración al almacenamiento. El valorvault.enabled = true
indica que se estableció la integración a HashiCorp Vault. Los valores de las variables de entorno se obtienen del almacenamiento. El valor predeterminado esfalse
. mountPath
: ruta para montar secretos de Vault al pod. La ruta predeterminada es/vault/secrets
.- El parámetro
role
es el rol para usarse en la autenticación del almacenamiento.Al crear un rol en Vault, debe especificar todos los valores existentes de la sección serviceAccount en el archivo values.yaml.
agentInitFirst
: variable para definir la cola de inicialización del contenedor init. El valortrue
indica que el pod primero inicializa el contenedor init de Vault. Debe configurar este valor cuando otros contenedores de la inicialización necesitan secretos para poder funcionar. Si el valor esfalse
, el orden de inicialización de los contenedores será al azar. El valor predeterminado estrue
.agentPrePopulate
: variable para activar el contenedor init y completar la memoria compartida con secretos antes de iniciar los contenedores. El valor predeterminado estrue
.agentPrePopulateOnly
: variable que indica si el contenedor init será el único inyectado en el pod. Si el valor estrue
, no se añadirá ningún contenedor secundario durante la ejecución del pod. El valor predeterminado esfalse
.preserveSecretCase
: variable para conservar las mayúsculas de los nombres de los secretos al crear archivos con secretos. El valor predeterminado estrue
.agentInjectPerms
: variable que define los derechos de acceso al archivo montado con secretos del almacenamiento. El valor predeterminado es0440
(el propietario y el grupo tienen permiso de lectura).annotations
: instrucciones para configurar el correcto funcionamiento del contenedor secundario. Puede añadir instrucciones al bloquevault
para que lo usen todos los componentes de Helm Chart o especificarlas en la secciónArchitecture
de forma independiente para cada componente. Por ejemplo:kcs-middleware:
enabled: true
appType: deployment
annotations:
vault.hashicorp.com/agent-limits-cpu: 200m
Limitaciones en cuanto al almacenamiento
Existen algunas limitaciones no críticas cuando Kaspersky Container Security funciona con HashiCorp Vault:
- La integración a HashiCorp Vault funciona solo con almacenamientos KV1 y KV2 y componentes de Secrets Engine para rotar los certificados de PKI.
- La solución no admite el funcionamiento con componentes externos de Secrets Engine, salvo los secretos de PKI.
- Kaspersky Container Security no admite el procesamiento dinámico de secretos. Para actualizar un secreto, deberá reiniciar la solución.
- Si usa la integración a Vault, puede especificar las credenciales solo para una base de datos externa de PostgreSQL en la sección
vault
. Para usar una base de datos interna de PostgreSQL, debe desactivar estas credenciales.