Sécuriser ses container docker
Bonjour à tous,
J'ai une question sécurité sur Docker / docker-compose.
J'ai mis en place une structure composée de 3 containers :
- web-api (gestion des routes et de l'authentification) : ouvert sur l'extérieur
- oms-api (gestion des commandes) : interne, appelé uniquement par la web-api
- mysql (bdd) : interne, appelé par les 2 webservices.
Voici le docker-compose :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
version: '3.5'
services:
web-api:
build:
context: .
dockerfile: ./web-api/Dockerfile
environment:
- NODE_ENV=dev
volumes:
- ./web-api:/home/web_api
- /home/web_api/node_modules
ports:
- "3333:3333"
networks:
- default
depends_on:
- app-mysql
oms-api:
build:
context: .
dockerfile: ./oms-api/Dockerfile
environment:
- NODE_ENV=dev
volumes:
- ./oms-api:/home/oms_api
- /home/oms_api/node_modules
ports:
- "3335"
networks:
- default
depends_on:
- app-mysql
app-mysql:
image: mysql:5.7
ports:
- '3306'
volumes:
- mysql-data:/var/lib/mysql
environment:
MYSQL_USER: ${DB_USER}
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ALLOW_EMPTY_PASSWORD: ${DB_ALLOW_EMPTY_PASSWORD}
networks:
- default
#define network
networks:
default:
name: default_network
volumes:
mysql-data: |
J'utilise axios pour communiquer entre les webervices (sans header/Authorization particulier dans les communications container<>container)
N'ayant pas de port exposé vers l'extérieur sur oms-api et app-mysql sont-il réellement "protégé" de tout accès extérieur ?
Est-ce que je peux faire un simple appel axios.get('http://oms-api:3334/') sans risque ? ou faut-il rajouter d'autres élément pour sécuriser mes 2 webservices ?
Avez-vous des conseils sécurité la-dessus ?
Merci à vous,