Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:ansible:playbook_example_07 [22.09.2022 12:45. ] – [Fazit und Ausblick] djangolinux:ansible:playbook_example_07 [22.07.2023 08:08. ] (aktuell) – [Tests] django
Zeile 410: Zeile 410:
 Als erstes befassen wir uns mit dem Standard UNIX Passwort-Manager **[[https://www.passwordstore.org/|pass]]**. Der Passwort-Manager **''pass''** haben wir ein einfach zu bedienendes wie auch strukturiertes Tool. Bei **''pass''** wird jedes Passwort in einer PGP-verschlüsselten Datei abgelegt, deren Dateiname der Titel der Website oder Ressource ist, für die das Passwort benötigt wird. Diese verschlüsselten Dateien können in sinnvollen Ordnerhierarchien organisiert, bei Bedarf von Host zu Host kopiert und im Allgemeinen mit Standard-Kommandozeilen-Dienstprogrammen für die Dateiverwaltung bearbeitet werden. Ferner kann der Passwortmanager einfach über sein **CLI** angesprochen und bedient werden. Als erstes befassen wir uns mit dem Standard UNIX Passwort-Manager **[[https://www.passwordstore.org/|pass]]**. Der Passwort-Manager **''pass''** haben wir ein einfach zu bedienendes wie auch strukturiertes Tool. Bei **''pass''** wird jedes Passwort in einer PGP-verschlüsselten Datei abgelegt, deren Dateiname der Titel der Website oder Ressource ist, für die das Passwort benötigt wird. Diese verschlüsselten Dateien können in sinnvollen Ordnerhierarchien organisiert, bei Bedarf von Host zu Host kopiert und im Allgemeinen mit Standard-Kommandozeilen-Dienstprogrammen für die Dateiverwaltung bearbeitet werden. Ferner kann der Passwortmanager einfach über sein **CLI** angesprochen und bedient werden.
  
-Bei der Nutzung von **''pass''** gehen wir davon aus, dass man bereits über einen eigneen PGP-Key verfügt und mit dessen Verwendung vertraut ist. Falls nicht, wird in diesem **[[centos:openpgp_beim_mua#openpgp_in_der_praxis|Kapitel]]** die Erstellung und Verwendung ausführlich beschrieben. Besonders sicherheitsbewussten Administratoren ist auch die Verwendung einer Kryptographie-Hardware z.B. eines **[[https://shop.nitrokey.com/de_DE/shop/product/nksa-nitrokey-start-6|Nitrokey Start]]** empfohlen. Die Erstellung von passenden Schlüsselmaterial wie ECDSA-basierten SSH-Schlüssel und PGP-Schlüssel ist z.B. in diesem **[[suse:nitrokey:start#nitrokey_start_und_gnupg|Kapitel in Djangos WIKI]]** ausführlich beschrieben und erklärt.+Bei der Nutzung von **''pass''** gehen wir davon aus, dass man bereits über einen eigenen PGP-Key verfügt und mit dessen Verwendung vertraut ist. Falls nicht, wird in diesem **[[centos:openpgp_beim_mua#openpgp_in_der_praxis|Kapitel]]** die Erstellung und Verwendung ausführlich beschrieben. Besonders sicherheitsbewussten Administratoren ist auch die Verwendung einer Kryptographie-Hardware z.B. eines **[[https://shop.nitrokey.com/de_DE/shop/product/nksa-nitrokey-start-6|Nitrokey Start]]** empfohlen. Die Erstellung von passenden Schlüsselmaterial wie ECDSA-basierten SSH-Schlüssel und PGP-Schlüssel ist z.B. in diesem **[[suse:nitrokey:start#nitrokey_start_und_gnupg|Kapitel in Djangos WIKI]]** ausführlich beschrieben und erklärt.
  
 Bevor wir uns nun eingehender mit **''pass''** beschäftigen installieren wir das Programm-Paket mit Hilfe des Paketverwaltungs-Tools unserer Distribution.  Bevor wir uns nun eingehender mit **''pass''** beschäftigen installieren wir das Programm-Paket mit Hilfe des Paketverwaltungs-Tools unserer Distribution. 
Zeile 419: Zeile 419:
   * **Ubuntu / Debian** : <code> $ sudo apt-get install pass</code>   * **Ubuntu / Debian** : <code> $ sudo apt-get install pass</code>
  
-Was das Programm **''pass''** alles an Befehlsoptionen mitbringt, offenbart uns die der Programmaufruf mit der Option ***''help''**.+Was das Programm **''pass''** alles an Befehlsoptionen mitbringt, offenbart uns die der Programmaufruf mit der Option **''help''**.
    $ pass --help    $ pass --help
 <code>============================================ <code>============================================
Zeile 482: Zeile 482:
  
 Im Homeverzeichnis unseres Admins findet sich nun das zugehörige verschlüsselte Dokument. Im Homeverzeichnis unseres Admins findet sich nun das zugehörige verschlüsselte Dokument.
-<code>/home/chrsitoph/.password-store/+<code>/home/christoph/.password-store/
 └── ansible-vault-password.gpg</code> └── ansible-vault-password.gpg</code>
  
Zeile 581: Zeile 581:
  
 === Beispiel mit nur einer Passwortabfrage === === Beispiel mit nur einer Passwortabfrage ===
-Jede Lösung und Anwendung in der IT-Welt steht und Fällt mit der Akzeptanz der Anwender. In unserem speziellen Fall ist das der Admin und für ihn kann es mitunter helfen, wenn man bei der Lösungsfindung eine akzeptable Mischung aus Sicherheit und Bequemlichkeit der Lösung finden kann. Und genau solch ein Beispiel wollen wir uns nun noch abschliessend genauer ansehen. Was werden wir nun machen? Nun, wir verlagern die Information zum **''become_passord''** weg von einer interaktiven Abfrage beim Starten eines Playbooks hin zur Datenvorhaltung in einem ansible-vault!+Jede Lösung und Anwendung in der IT-Welt steht und fällt mit der Akzeptanz der Anwender. In unserem speziellen Fall ist das der Admin und für ihn kann es mitunter helfen, wenn man bei der Lösungsfindung eine akzeptable Mischung aus Sicherheit und Bequemlichkeit der Lösung finden kann. Und genau solch ein Beispiel wollen wir uns nun noch abschliessend genauer ansehen. Was werden wir nun machen? Nun, wir verlagern die Information zum **''become_passord''** weg von einer interaktiven Abfrage beim Starten eines Playbooks hin zur Datenvorhaltung in einem ansible-vault!
  
 <WRAP center round important 80%> <WRAP center round important 80%>
-**Nein**, wir werden nicht den Admin-Aser in eine Gruppe **''sudo''** oder **''wheels''** packen und auf den Zielsystemen in der **''sudoers''** auf die Abfrage des Passwortes verzichten! **''NOPASSWD: ALL''** ist keine erstrebenswerte Idee! Übrigens genau so wenig wie das Vorhaben allen Admins einen direkten **root**-Access auf Zielsystemen zu geben. Aus Sicherheitsaspekten quasi der Super-GAU schlechthin - wenn auch in gewissen Kreisen seit Jahren Usus, aber das ist ein anders Thema ... :-X+**Nein**, wir werden nicht den Admin-Aser in eine Gruppe **''sudo''** oder **''wheels''** packen und auf den Zielsystemen in der **''sudoers''** auf die Abfrage des Passwortes verzichten! **''NOPASSWD: ALL''** ist **__keine__** erstrebenswerte Idee! Übrigens genau so wenig wie das Vorhaben allen Admins einen direkten **root**-Access auf Zielsystemen zu geben. Aus Sicherheitsaspekten quasi der Super-GAU schlechthin - wenn auch in gewissen Kreisen seit Jahren Usus, aber das ist ein anders Thema ... :-X
 </WRAP> </WRAP>
  
Zeile 603: Zeile 603:
  
 Dort hinterlegen wir zunächst die Optionen, die wir früher in der **''ansible.cfg''** vermerkt hatten. Dort hinterlegen wir zunächst die Optionen, die wir früher in der **''ansible.cfg''** vermerkt hatten.
-   $ vim ~/ansible/inventories/production/group_vars/all/ansible_enviroment.yml +   $ vim ~/ansible/inventories/production/group_vars/all/ansible_environment.yml 
-<file bash ansible_enviroment.yml>ansible_become:          True+<file bash ansible_environment.yml>ansible_become:          True
 ansible_become_method:   sudo ansible_become_method:   sudo
 ansible_become_user:     root ansible_become_user:     root
Zeile 631: Zeile 631:
  
  
-{{ :linux:ansible:ansible-krypto-stick.png?nolink&200|Bild: Ansible NitroKey Start}}Beim Aufruf eines Ansible-Playbooks liest das Programm **''ansible-playbook''** alle benötigten Dateien ein. Zum Abarbeiten benötigt Ansible natürlich die temporär entschlüsselten Informationen. Damit Ansible nun die verschlüsselten Informationen herankommt, benötigt Ansible natürlich vorübergehend das Vault-Passwort/-Passphrase, welches sich nun selbst verschlüsselt in einem Ansible-Vault befindet. Durch den Passwortmanager **''pass''** und unserem PGP-Schlüssel kommen wir nun direkt zu dem **Ansible Vault Passwort**. Wir brauchen also nur einmal das für den PGP zugehörige Passwort oder im Falle der Verwendung eines Security-Hardware-Devices wie eines **[[https://shop.nitrokey.com/de_DE/shop/product/nksa-nitrokey-start-6|Nitrokey Start]]**.+{{ :linux:ansible:ansible-krypto-stick.png?nolink&200|Bild: Ansible NitroKey Start}}Beim Aufruf eines Ansible-Playbooks liest das Programm **''ansible-playbook''** alle benötigten Dateien ein inklusive aller Hostdefinitionen aus dem Inventory ein, auch wenn diese gerade nicht zum Abarbeiten des Playbooks benötigt werden. Zum Abarbeiten benötigt Ansible natürlich die temporär entschlüsselten Informationen. Damit Ansible nun die verschlüsselten Informationen herankommt, benötigt Ansible natürlich vorübergehend das Vault-Passwort/-Passphrase, welches sich nun selbst verschlüsselt in einem Ansible-Vault befindet. Durch den Passwortmanager **''pass''** und unserem PGP-Schlüssel kommen wir nun direkt zu dem **Ansible Vault Passwort**. Wir brauchen also nur einmal das für den PGP zugehörige Passwort oder im Falle der Verwendung eines Security-Hardware-Devices wie eines **[[https://shop.nitrokey.com/de_DE/shop/product/nksa-nitrokey-start-6|Nitrokey Start]]**.
  
 Der Aufruf des Scripts **''01_create-user.ym''** aus **[[linux:ansible:playbook_example_01|Beispiel 1]]** würde dann lauten: Der Aufruf des Scripts **''01_create-user.ym''** aus **[[linux:ansible:playbook_example_01|Beispiel 1]]** würde dann lauten:
Zeile 641: Zeile 641:
 Aus dem Blickwinkel **Sicherheit** haben wir nun zum einen erreicht, dass schützenswerte Informationen nicht mehr als plain-text in unserer  Ansible-Entwicklungsumgebnung ungeschützt herumliegen. Darüber hinaus haben wir nun quasi einen **//zweiten Faktor//** bei der Abarbeitung unserer Ansible-Playbooks eingeführt - genauer gesagt sind es ja eher drei Dinge, über die der Admin verfügen muss: Aus dem Blickwinkel **Sicherheit** haben wir nun zum einen erreicht, dass schützenswerte Informationen nicht mehr als plain-text in unserer  Ansible-Entwicklungsumgebnung ungeschützt herumliegen. Darüber hinaus haben wir nun quasi einen **//zweiten Faktor//** bei der Abarbeitung unserer Ansible-Playbooks eingeführt - genauer gesagt sind es ja eher drei Dinge, über die der Admin verfügen muss:
   - Der Admin muss den SSH-Privat-Key besitzen und von dessen Passphrase Kenntnis haben. Wird ein **Nitrokey Start** USB-Schlüssel verwendet, kann bei Bedarf auch der **[[suse:nitrokey:start#nitrokey_start_und_secure_shell|SSH-Key bei Verwendung der SSH]]** benutzt werden. Die Zusätzliche Eingabe einer Passphrase erübrigt sich dadurch auch hier, wenn der SSH-Key auf dem Kryptostick verwendet wird!   - Der Admin muss den SSH-Privat-Key besitzen und von dessen Passphrase Kenntnis haben. Wird ein **Nitrokey Start** USB-Schlüssel verwendet, kann bei Bedarf auch der **[[suse:nitrokey:start#nitrokey_start_und_secure_shell|SSH-Key bei Verwendung der SSH]]** benutzt werden. Die Zusätzliche Eingabe einer Passphrase erübrigt sich dadurch auch hier, wenn der SSH-Key auf dem Kryptostick verwendet wird!
-  - Der Administrator muss beim Aufruf der Playbooks nunmehr **__nur noch__** den PGP-Schlüssel durch Eingabe der zugehörigen Passphrase entsperren. Das Passwort für die Rechteerweiterung wird von Ansible aus dem Vault gelesen, genau so wie das **''become_password''** zur Rechteerweiterung+  - Der Administrator muss beim Aufruf der Playbooks nunmehr **__nur noch__** den PGP-Schlüssel durch Eingabe der zugehörigen Passphrase entsperren. Das **''become_password''** Passwort für die Rechteerweiterung wird nun auch von Ansible aus dem Vault gelesen. 
  
 Aus Sicht von **IT-Security** haben wir auch hier einen erheblicher Zugewinn an Sicherheit. Die Akzeptanzschwelle ist durch Minimierung von mehrfachen Eingaben diverser Passworte durchaus niedrig, so dass für den Admin durchaus ein Mehrwert bei der täglichen administrativen Tätigkeit ausgemacht werden kann. Aus Sicht von **IT-Security** haben wir auch hier einen erheblicher Zugewinn an Sicherheit. Die Akzeptanzschwelle ist durch Minimierung von mehrfachen Eingaben diverser Passworte durchaus niedrig, so dass für den Admin durchaus ein Mehrwert bei der täglichen administrativen Tätigkeit ausgemacht werden kann.
  • linux/ansible/playbook_example_07.1663850742.txt.gz
  • Zuletzt geändert: 22.09.2022 12:45.
  • von django