Ik moet voor mijn werk nogal wat emails naar PDF converteren (voornamelijk bonnetjes van hotels, vliegtickets, etc). Aangezien ik er een beetje moe van wordt om steeds maar weer de mail naar PDF te "printen", in een map te plaatsen en uploaden naar de expense reporting applicatie zoek ik een betere oplossing.
Die heb ik deels gevonden in procmail. Ik maak een alias aan op mijn domain en laat procmail een script draaien wat de binnenkomende email naar PDF converteert en daarna upload naar Dropbox. Voor converteren naar PDF gebruik ik eerst MhonArc om de email naar HTML om te zetten en daarna naar PDF met wkhtmltopdf.
Aangezien vooral wkhtmltopdf met een gigantische berg dependencies komt bedacht ik me dat ik dat beter in een Docker container kon gieten om het nog een beetje behappelijk te houden. De oplossing is dus geworden:
email-to-pdf (een docker container die een bestand naar PDF converteert, Github), Dropbox-Uploader en het volgende shell script:
Dit werkt op zich allemaal prima, maar ik zit nog met 1 probleem: beveiliging. Om dit alles werkend te krijgen moet de user waaronder het procmail shell script draait toegang krijgen tot de Docker daemon. Dat is natuurlijk makkelijk te doen door gewoon die user in de docker groep te gooien, maar dan krijgt 'ie zo ongeveer direct root toegang en dat lijkt me wat onwenselijk.
Op zich is het beveiligingsprobleem nog redelijk beperkt omdat:
[ul]
• Er gaat geen input van het netwerk direct naar de Docker daemon
• Het proces wat de email omzet binnenin de container draait als "nobody", heeft dus nergens schrijfrechten en kan ook niet als root met de kernel kan praten.
• Het shell script is niet schrijfbaar door de user waaronder procmail draait dus het "docker run" command kan niet gewijzigd worden.
Heeft er iemand een idee over hoe ik die docker container kan draaien zonder de user die hem uitvoert direct root te maken of anders nog andere maatregelen anders dan bovenstaande die ik kan toevoegen om de beveiliging te verbeteren?
Die heb ik deels gevonden in procmail. Ik maak een alias aan op mijn domain en laat procmail een script draaien wat de binnenkomende email naar PDF converteert en daarna upload naar Dropbox. Voor converteren naar PDF gebruik ik eerst MhonArc om de email naar HTML om te zetten en daarna naar PDF met wkhtmltopdf.
Aangezien vooral wkhtmltopdf met een gigantische berg dependencies komt bedacht ik me dat ik dat beter in een Docker container kon gieten om het nog een beetje behappelijk te houden. De oplossing is dus geworden:
email-to-pdf (een docker container die een bestand naar PDF converteert, Github), Dropbox-Uploader en het volgende shell script:
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #!/bin/bash set -e UUID=`uuidgen` # Write the email to a temporary file cat > $HOME/tmp/$UUID.eml chmod 644 $HOME/tmp/$UUID.eml # Convert to PDF docker run --rm -v $HOME/tmp:/vol gerco/email-to-pdf $UUID.eml > $HOME/pdf/$UUID.pdf # Upload file DIRNAME=`date "+%Y-%m-%d"` $HOME/dropbox_uploader.sh upload $HOME/pdf/$UUID.pdf /$DIRNAME/ # Remove temporary files rm $HOME/tmp/$UUID.eml rm $HOME/pdf/$UUID.pdf |
Dit werkt op zich allemaal prima, maar ik zit nog met 1 probleem: beveiliging. Om dit alles werkend te krijgen moet de user waaronder het procmail shell script draait toegang krijgen tot de Docker daemon. Dat is natuurlijk makkelijk te doen door gewoon die user in de docker groep te gooien, maar dan krijgt 'ie zo ongeveer direct root toegang en dat lijkt me wat onwenselijk.
Op zich is het beveiligingsprobleem nog redelijk beperkt omdat:
[ul]
• Er gaat geen input van het netwerk direct naar de Docker daemon
• Het proces wat de email omzet binnenin de container draait als "nobody", heeft dus nergens schrijfrechten en kan ook niet als root met de kernel kan praten.
• Het shell script is niet schrijfbaar door de user waaronder procmail draait dus het "docker run" command kan niet gewijzigd worden.
Heeft er iemand een idee over hoe ik die docker container kan draaien zonder de user die hem uitvoert direct root te maken of anders nog andere maatregelen anders dan bovenstaande die ik kan toevoegen om de beveiliging te verbeteren?
[ Voor 14% gewijzigd door Gerco op 24-11-2015 02:12 ]
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!