ENV exporta en docker entry_point.sh que se ejecuta desde CI

1

Suponiendo que tengo la siguiente línea en la configuración de Django:

OKPAY_API_KEY = os.environ.get('Ok_PAY_API_KEY')

Luego, impórtelo a mi proceso de compilación en wercker CI

Y luego escribe esta var en el entrypoint.sh de mi contenedor en el paso build de wercker . de la siguiente manera:

export OKPAY_API_KEY=${OKPAY_API_KEY}

Mi pregunta es: ¿qué pasa si alguien obtiene acceso a ese contenedor docker de alguna manera o al archivo entrypoint.sh (por ejemplo, el repositorio del docker está comprometido o el atacante obtiene acceso al contenedor en ejecución)?

¿Hay una mejor práctica? ¿O al menos una forma de incapsular más estos datos?

P.S. El proyecto en cuestión es un intercambio de BTC y Altcoin, por lo que la seguridad de los fondos de mis usuarios es la máxima prioridad para mí.

    
pregunta Oleg Belousov 18.01.2017 - 15:52
fuente

2 respuestas

1

Si el contenedor está comprometido, el juego termina para ti, creo que ... de todos modos podría ser una buena práctica tratar de poner tantos obstáculos como sea posible. La defensa en profundidad suena bien para ti.

Tal vez en lugar de tener las claves en "plano" en Dockerfiles, puede intentar almacenarlas en algún tipo de mecanismo de seguridad. No sé, tal vez una base de datos segura o algo así. Tal vez con algún tipo de script puede conectarse a esa base de datos e intentar recuperar el OKPAY_API_KEY pero tendrá un problema similar con la clave para conectarse a esa base de datos. ¿Dónde guardarlo? ¿Cómo almacenarlo? Es una historia sin fin. Al final, siempre habrá un lugar sensible donde algo (una clave, un token, una contraseña o lo que sea) podría verse comprometido y después de eso, todo es una "casa de naipes".

Solo tú conoces tu estructura, así que prepara un plan. Cuídalo con cuidado, intenta definir los puntos sensibles. Intente crear diferentes capas y, por supuesto, si es posible, contrate los servicios de una empresa de pentester o pentest de confianza para intentar piratear su estructura. Parece importante en tu caso.

    
respondido por el OscarAkaElvis 02.03.2017 - 22:04
fuente
2

A partir de Docker 1.13, Docker proporciona un sistema de administración de secretos que se puede usar para almacenar datos de forma segura, como credenciales y claves de API. Hay un blog en él aquí

Lo que puede hacer es almacenar la clave en forma cifrada en el disco y luego suministrarla al contenedor en tiempo de ejecución. Si alguien tiene acceso al contenedor en ejecución, seguirán teniendo problemas ya que, obviamente, el proceso necesita la clave, por lo que no hay una manera real de evitar eso (aunque podría hacer algo como dividir la sección de su La aplicación trata de la API en su propio contenedor e intenta reducir la superficie de ataque).

La administración de secretos de Docker se destina principalmente (por ahora de todos modos) a lidiar con las configuraciones de enjambres de Docker, por lo que si está buscando algo más generalizado en términos de administración de secretos de contenedores, sugeriría algo como HashiCorp Vault

    
respondido por el Rоry McCune 04.03.2017 - 10:23
fuente

Lea otras preguntas en las etiquetas