Skip to content

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>