Met Ansible kunt u verschillende bewerkingen uitvoeren op externe machines met behulp van onbewerkte opdrachten of Ansible-playbooks. Standaard wordt een Ansible-playbook uitgevoerd op de externe host als dezelfde gebruiker op de Ansible-controller. Dat betekent dat als u een opdracht als een andere gebruiker op de externe computer moet uitvoeren, u dit expliciet moet specificeren in uw Ansible-playbook.
Om de functionaliteit van het uitvoeren van opdrachten als een andere gebruiker te implementeren, moet u de sudo-functie gebruiken die beschikbaar is in Linux-systemen. Met de Ansible word-richtlijn kunt u opdrachten uitvoeren als de opgegeven gebruiker.
De informatie van de gebruiker wordt gespecificeerd in een Ansible-playbook met behulp van de variabelen word, zoals word_pass, om het wachtwoord van de gebruiker word_user op te geven, evenals welke gebruiker de opdracht kan uitvoeren.
Hoe Ansible-taken als root uit te voeren
Om een specifieke opdracht uit te voeren als de rootgebruiker in Ansible, kun je de word-richtlijn implementeren en de waarde instellen op 'true.' Door dit te doen, vertelt Ansible om sudo te implementeren zonder argumenten bij het uitvoeren van de opdracht.
Overweeg bijvoorbeeld een Ansible-playbook dat het MySQL-serverpakket bijwerkt en vervolgens opnieuw opstart. Bij normale Linux-bewerkingen zou u moeten inloggen als de rootgebruiker om dergelijke taken uit te voeren. In Ansible kun je de word: yes-richtlijn gewoon aanroepen, zoals hieronder weergegeven:
- hosts: alleworden: ja
taken:
- naam: Ansible als root uitvoeren en sys bijwerken
jammie:
naam: mysql-server
staat: laatste
- naam:
onderhoud.onderhoud:
naam: mysqld
staat: herstart
In het bovenstaande playbook hebben we de word-instructie gebruikt en hebben we de gebruiker word_user niet gespecificeerd, omdat alle opdrachten onder de word-richtlijn standaard als root worden uitgevoerd.
Dit is vergelijkbaar met het specificeren als:
- hosts: alleworden: ja
word_gebruiker: root
taken:
- naam: Ansible als root uitvoeren en sys bijwerken
jammie:
naam: mysql-server
staat: laatste
- naam:dienst.onderhoud:
naam: mysqld
staat: herstart
Ansible-taken uitvoeren als Sudo
Om een Ansible-taak uit te voeren als een specifieke gebruiker, in plaats van de normale root-gebruiker, kunt u de instructie being_user gebruiken en de gebruikersnaam van de gebruiker doorgeven om de taak uit te voeren. Dit lijkt veel op het gebruik van de opdracht sudo -u in Unix.
Om de word_user-richtlijn te implementeren, moet u eerst de word-richtlijn activeren, omdat de word_user onbruikbaar is zonder dat deze richtlijn geactiveerd is.
Beschouw het volgende playbook, waarin de opdracht wordt uitgevoerd als de niemand-gebruiker:.
- naam: voer een opdracht uit als een andere gebruiker (niemand)commando: ps aux
worden: waar
word_methode: su
word_user: niemand
word_flags: '-s /bin/bash'
In het bovenstaande playbook-fragment hebben we de word-, word_user- en andere word-richtlijnen geïmplementeerd.
- worden_methode: Dit stelt de escalatiemethode voor bevoegdheden in, zoals su of sudo.
- word_user richtlijn: Dit specificeert de gebruiker om de opdracht uit te voeren als; dit betekent niet: ja.
- word_flags: Dit stelt de vlaggen in die moeten worden gebruikt voor de opgegeven taak.
U kunt nu het bovenstaande playbook uitvoeren met de ansible-playbook-bestandsnaam.yml en zie zelf het resultaat. Voor taken met een uitvoer, moet u mogelijk de debug-module implementeren.
Hoe Ansible uit te voeren wordt met wachtwoord
Als je een word-instructie wilt uitvoeren waarvoor een wachtwoord is vereist, kun je Ansible vertellen om een wachtwoord te vragen bij het aanroepen van het opgegeven playbook.
Als u bijvoorbeeld een playbook met een wachtwoord wilt uitvoeren, voert u de onderstaande opdracht in:
ansible-playbook geworden_pass.yml --vraag-word-passU kunt ook de vlag -K specificeren, die soortgelijke bewerkingen uitvoert als de bovenstaande opdracht. Bijvoorbeeld:
ansible-playbook geworden_pass.yml -KEenmaal opgegeven, wordt u om een wachtwoord gevraagd wanneer de taken worden uitgevoerd.
OPMERKING: U kunt de word-richtlijn ook gebruiken in onbewerkte Ansible AD HOC-opdrachten met behulp van de vlag -b. Bekijk de onderstaande documentatie voor meer informatie:
https://linkfy.tot/wordenDocumentatie
Conclusie
Na het lezen van dit artikel, zou u nu moeten weten hoe u de Ansible BECOME-richtlijn moet gebruiken om privilege-escalatie uit te voeren voor verschillende taken.
Om veiligheidsredenen is het beter om voor verschillende accounts beperkingen in te voeren en expliciet aan te geven wanneer ze worden gebruikt. Escalatie van bevoegdheden is dus een belangrijk aspect van het gebruik van sudo en su in Ansible.