CONTINOUS DELIVERYAber sicher?!DevDay 2016 -- Dresden, 12.04.2016
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 1
Jan Dittberner
T-Systems Multimedia Solutions GmbH
▶ Softwarearchitekt▶ Themen: Linux, PKI, Automatisierung, …▶ Debian Developer
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 2
Continous Delivery
Entwicklungsumgebungen
Nachvollziehbare Deployments
Security-Aspekte
Fazit
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 3
CONTINOUS DELIVERYWARUM?
▶ Features schneller beim Anwender▶ schnelles Feedback▶ Qualitätssteigerung▶ mehr
”Denkarbeit“ statt langweiliger Routine
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 5
CONTINOUS DELIVERYAUTOMATISIERUNG
▶ Softwarebuild▶ Unit-, Acceptance-, Integration-, Performance-, …-Test▶ Umgebungsbereitstellung (Provisionierung)▶ Deployment▶ Lieferprozesse▶ Dokumentation▶ Monitoring/Reporting▶ …alles was sonst noch Routine sein sollte
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 6
ENTWICKLUNGSUMGEBUNGENSYSTEMKONTEXT
Datenbank
Filesystem
Scheduler
Webservice
WebappHTTP-ProxyLoad-Balancer
Spooler
SMTP-MTASMTP-Proxy
DNS-Server
Abbildung: vereinfachtes Architekturbild
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 7
ENTWICKLUNGSUMGEBUNGENPUPPET
https://puppetlabs.com
▶ Tool für Configuration Management▶ Infrastruktur wird als Code beschrieben (Puppet DSL,
YAML, Ruby)▶ neue Maschinen können innerhalb weniger Minuten
nachvollziehbar eingerichtet werden▶ kann auch mit anderen Tools realisiert werden (Beispiel
cfengine, Saltstack, Ansible, …)
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 8
ENTWICKLUNGSUMGEBUNGENPACKER UND VAGRANT
https://www.packer.iohttps://www.vagrantup.com
▶ Mit Packer kann man sauber definierte Basisimageserstellen
▶ Vagrant steuert (lokale) VMs über eine textuelleBeschreibung
▶ dadurch können Entwickler mit einem produktionsnahenOS arbeiten
▶ gleicher Puppet-Code für lokale und andere Umgebungen▶ lokaler Test von Deployments möglich
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 9
ENTWICKLUNGSUMGEBUNGENSECURITY
Auch Sicherheitsfunktionalität sollte produktionsnah umgesetzt sein:
möglichst gleiche Einstellungen, Schlüssellängen, Algorithmen, …auch in Entwicklungs- undTestumgebungen
so nichtQuelle: starecat.com
so auch nicht …sondern so
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 10
NACHVOLLZIEHBARE DEPLOYMENTSDEPLOYMENTS
▶ …müssen nachvollziehbar sein und zur Softwarepassen
▶ …müssen getestet werden▶ auch Änderungen an der Persistenzschicht (z.B.
Datenbankänderungen) gehören dazu▶ … und natürlich Konfigurationsdaten
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 11
NACHVOLLZIEHBARE DEPLOYMENTSJENKINS
▶ Software übersetzen, paketieren, automatisch testen mitMaven oder anderem Build-Tool
▶ Konfiguration der Software vor dem Deployment▶ Ausführen von Datenbankmigrationen (bei uns mit
Liquibase)▶ Deployment auf Entwicklungs- und Testumgebungen
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 12
NACHVOLLZIEHBARE DEPLOYMENTSMETADATEN
Information welcher Softwarestand,in welcher Konfiguration, wo deployt ist
▶ benötigt für Testaussagen▶ benötigt für Monitoring▶ beim Build werden Versionen in definierte Dateien
geschrieben▶ beim Deployment werden daraus Custom Facts für Puppet
und Wiki-Seiten▶ von Puppet in PuppetDB übertragen
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 13
NACHVOLLZIEHBARE DEPLOYMENTSMONITORING
▶ Auch für Entwicklungs- und Testsysteme nützlich▶ Vermeiden von
”Blindflug“ , Früherkennung von
Problemen▶ Üben für den Wirkbetrieb▶ um manuelle Einrichtung zu vermeiden registrieren
sich unsere Maschinen beim Puppetlauf selbst fürsMonitoring durch Icinga2
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 14
SECURITY-ASPEKTEVERSCHLÜSSELUNG VON CREDENTIALS
▶ betriebliche Anforderung: keine Klartextpasswörteron Disk
▶ Lösungen:▶ Jasypt▶ Wildfly-Vault (Applikationsserver-spezifischer
Mechanismus)▶ Encrypted Tablespaces in Datenbank
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 15
SECURITY-ASPEKTEVERSCHLÜSSELUNG VON CREDENTIALS
Jasypt
http://www.jasypt.org/
▶ Verschlüsselung von Properties, Texten oder ganzenDateien mit Standard-Algorithmen
▶ einfach integrierbar mit Spring, Hibernate undanderen Java-Frameworks
▶ Verschlüsselung passiert bei uns während derDeploymentkonfiguration
▶ Entschlüsselung beim Applikationsstart/ zur Laufzeit
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 16
SECURITY-ASPEKTEZERTIFIKATE
▶ Anforderung: Alle Netzwerkverbindungen müssenTLS-verschlüsselt sein
▶ Herausforderung: mehrere hundert gültige Zertifikatein unterschiedlichsten Keystore-Formaten benötigt
▶ Lösung:▶ Projekt-CA inkl. OCSP-Responder für Entwicklung
und Test (aktuell auf Basis von OpenSSL)▶ Maven-Plugins für Erzeugung von Signing-Request
und Keystore-Formaten▶ Jenkins-Jobs für Steuerung der CA, Erzeugung von
umgebungsspezifischen Keystores und Checks aufZertifikatsablauf
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 17
SECURITY-ASPEKTEZUGRIFF AUF MASCHINEN
▶ dedizierte Applikationsnutzer▶ zentrale Verwaltung von SSH-Keys (SKM)▶ Verteilung des SKM-Master-Keys per Puppet▶ kein Zugriff auf Produktionsmaschinen für
Entwicklungs-/Testteam
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 18
SECURITY-ASPEKTEABSICHERUNG DER (ORACLE-)DATENBANK
▶ Encrypted Tablespaces▶ Database Vault
▶ ermöglicht Vier-Augen-Prinzip fürDatenbankänderungen
▶ verhindert Datenzugriff auch für DBAs
▶ zu beachten bei Datenbankmigrationen
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 19
SECURITY-ASPEKTEABSICHERUNG VON DEPLOYMENTS
▶ unkonfigurierte Lieferartefakte▶ Konfigurationsdateien nur als Templates in der
Lieferung▶ Konfigurationsdaten liegen in getrennten
Repositories▶ Konfiguration findet auf separaten Maschinen statt▶ Deployment per Key-Based SSH
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 20
FAZIT
▶ Continuos Delivery ist sinnvoll – auch fürsicherheitsrelevante Projekte
▶ Entwicklungs- und Testumgebungen sowirkbetriebsnah wie möglich
▶ Alles automatisieren – auch Security-Aspekte
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 21
KONTAKT
Jan Dittberner
T-Systems Multimedia Solutions GmbH
Mail: [email protected]: @jandd
https://coffeestats.org/
Jan Dittberner DevDay 2016 – Dresden, 12.04.2016 22