Key Management System (KMS)¶
Kuigi Ansible Vault (krüpteeritud failid) on turvaline, on sellel suurtes ettevõtetes puudusi:
- Audit: Me ei tea, kes ja millal faili dekrüpteeris.
- Rotation: Kui parool lekib, tuleb kõik failid uuesti krüpteerida ja Giti lükata.
- Tsentraalsus: Igal tiimil/projektil on omad failid.
Seetõttu kasutavad suured organisatsioonid spetsiaalseid servereid (nagu HashiCorp Vault, AWS Secrets Manager, Azure Key Vault), kus saladusi hoitakse. Ansible loeb need sealt välja ainult playbooki käivitamise hetkel.
Ettevalmistus¶
Selleks, et Ansible saaks Vaultiga suhelda, on vaja Pythoni teeki hvac.
Samuti on vaja installida Ansible Galaxy collection community.hashi_vault.
Andmete lugemine Vaultist¶
Meie eesmärk on lugeda andmebaasi parool Vaultist, selle asemel et hoida seda failis.
Me kasutame selleks community.hashi_vault.hashi_vault lookup pluginat.
Complete
Tee näidis playbook:
- hosts: localhost
user: root
vars:
vault_url: "https://vault.ansible.hashify.ee" # Vaulti aadress
vault_username: "training" # Vaulti kasutajanimi (testimiseks)
vault_password: "KalaLammasKoer123" # Vaulti parool (testimiseks)
tasks:
- name: Retrieve secret from Vault
debug:
msg: "The database password is: {{ lookup('community.hashi_vault.hashi_vault', 'secret=secrets/example:password', url=vault_url, auth_method='userpass', username=vault_username, password=vault_password) }}"
Verify
Jooksuta playbooki: ansible-playbook vault_test.yml.
Kui kõik on õige, peaksid nägema parooli, mis asub serveris (mitte sinu arvutis).
Kuidas seda päriselt (Enterprise) tehakse?¶
Ülaltoodud näites kirjutasime oma Vaulti parooli otse playbooki (vars alla). See on turvarisk ja seda tehakse ainult õppimiseks.
Päriselt peaks logima admin/operaator enda identiteediga kuskile sisse, ja kasutama sealt saadud informatsiooni, et jooksutada neid operatsioone. Kuskil päriselt kasutajanime/parooli/tokenit ei vedele.
Väga algeline näide:
# "Päris" kood - ei mingeid paroole playbookis!
vars:
device_pass: "{{ lookup('community.hashi_vault.hashi_vault', 'secret=secret/prod/db:password') }}"
Selle saavutamiseks eksporditakse enne käivitamist muutujad:
export VAULT_ADDR=https://vault.ansible.hashify.ee
export VAULT_AUTH_METHOD=userpass
export VAULT_USER=training-1
export VAULT_PASSWORD=...
ansible-playbook <playbook>