Ansible Vault ile Hassas Verilerinizi Koruyun: Şifreleri Gizleme
Pardus ETAP etkileşimli tahtaları yönetirken kullandığınız etapadmin şifrelerini veya özel anahtarlarınızı düz metin (plain text) olarak saklamak büyük bir güvenlik riskidir.
Önceki yazılarımızda Ansible ile Pardus ETAP tahtalarımızı nasıl yöneteceğimizi ve çeşitli otomasyon senaryolarını incelemiştik. Ancak bir sorunumuz var: Yazdığımız Playbook dosyalarında veya envanter listelerinde kullanıcı şifrelerini açık bir şekilde yazıyoruz. Bu, dosyalara erişimi olan herkesin tahta şifrelerini ele geçirmesi demektir.
Bugün, bu sorunu çözmek için Ansible'ın yerleşik şifreleme aracı olan Ansible Vault'u öğreneceğiz.
Ansible Vault Nedir?
Ansible Vault; değişkenleri, dosyaları veya tüm Playbook'ları şifrelemenize olanak tanıyan bir özelliktir. Bu sayede hassas veriler (şifreler, API anahtarları vb.) diske şifrelenmiş olarak kaydedilir ve sadece doğru anahtar ile çözülerek çalıştırılabilir.
1. Şifrelenmiş Yeni Bir Dosya Oluşturma
Hassas verilerimizi saklayacağımız yeni bir şifreli dosya oluşturmak için şu komutu kullanırız:
ansible-vault create sırlar.yml
Bu komutu yazdığınızda size bir "Vault password" soracaktır. Bu şifre, dosyanın anahtarıdır. Şifreyi belirledikten sonra dosya açılır; içine verilerinizi şu formatta yazabilirsiniz:
etap_admin_sifre: "CokGucluSifre123"
db_sifre: "OzelVeritabaniSifresi"
Dosyayı kaydedip çıktığınızda, cat sırlar.yml komutuyla içeriğe bakarsanız sadece anlamsız karakterler yığını görürsünüz.
2. Mevcut Dosyaları Şifreleme veya Düzenleme
Eğer elinizde daha önceden oluşturduğunuz ve içinde şifreler olan bir dosya varsa onu şu komutla şifreleyebilirsiniz:
ansible-vault encrypt envanter.ini
Şifreli bir dosyayı güncellemek isterseniz edit komutunu kullanmalısınız:
ansible-vault edit sırlar.yml
3. Şifrelenmiş Değişkenleri Playbook İçinde Kullanma
Şifrelediğimiz değişkenleri Playbook dosyalarımızda normal bir değişkenmiş gibi çağırabiliriz.
Örnek kullanici_olustur.yml:
---
- name: Yeni Kullanıcı Ekle
hosts: siniflar
become: yes
vars_files:
- sırlar.yml # Şifreli dosyamızı buraya dahil ediyoruz
tasks:
- name: Etapadmin şifresini güncelle
user:
name: etapadmin
password: "{{ etap_admin_sifre | password_hash('sha512') }}"
4. Playbook'u Çalıştırma (Vault Şifresiyle)
Dosyalarımız şifreli olduğu için artık klasik çalıştırma komutu hata verecektir. Ansible'a "şifreli dosyaları açmak için bana şifreyi sor" dememiz gerekiyor:
ansible-book -i tahtalar.ini kullanici_olustur.yml --ask-vault-pass
Komutu çalıştırdığınızda size Vault şifresini soracak, ardından şifreli dosyayı bellekte çözerek tahtalara güvenli bir şekilde uygulayacaktır.
Profesyonel İpucu: Şifre Dosyası Kullanmak
Her seferinde elle Vault şifresi girmek yorucu olabilir (özellikle cron işlerinde). Bunun yerine şifrenizi sadece sizin erişebildiğiniz gizli bir dosyaya yazıp Ansible'a bu yolu gösterebilirsiniz:
Şifrenizi bir dosyaya yazın:
echo "kendi_gizli_anahtarim" > ~/.vault_passDosya izinlerini kısıtlayın:
chmod 600 ~/.vault_passKomutu şu şekilde çalıştırın:
ansible-playbook -i tahtalar.ini playbook.yml --vault-password-file ~/.vault_pass
Sonuç
Pardus ETAP sistem yönetimi süreçlerinizde güvenliği en ön planda tutmalısınız. Ansible Vault sayesinde, okul ağındaki hassas verilerinizi koruma altına alabilir ve yapılandırma dosyalarınızı gönül rahatlığıyla saklayabilirsiniz.
Güvenlik notu: Vault şifrenizi asla unutmayın! Unutursanız, şifrelediğiniz dosyalara bir daha erişmeniz mümkün olmayacaktır.
Yorumlar