Ansible adalah alat otomatisasi dan orkestrasi fantastis yang populer di antara banyak pengembang karena kesederhanaan dan kemudahan penggunaannya. Salah satu fitur terpenting yang disertakan dengan Ansible adalah Ansible Vault. Seperti yang Anda duga sekarang, Ansible vault adalah fitur keamanan yang digunakan untuk mengenkripsi atau mengamankan informasi sensitif dalam playbook atau file alih-alih memilikinya dalam teks biasa yang akan menimbulkan ancaman signifikan jika terjadi pelanggaran. Data tersebut mencakup sandi , Token API dan sertifikat SSL untuk menyebutkan beberapa. Anda dapat mengenkripsi seluruh buku pedoman YAML file string dalam buku pedoman dengan informasi sensitif seperti kata sandi.
Dalam panduan ini, kami melihat berbagai cara agar Ansible vault dapat membantu Anda mengunci informasi sensitif atau rahasia Anda dan mencegah pengintai.
Buat File Terenkripsi menggunakan Ansible Vault
Ansible vault menggunakan alat utilitas baris perintah ansible-vault untuk mengenkripsi informasi sensitif menggunakan algoritme AES256. Ini menyediakan enkripsi simetris yang disematkan ke kata sandi yang ditentukan. Seorang pengguna dapat menggunakan kata sandi yang sama untuk mengenkripsi atau mendekripsi file untuk mengakses konten.
Untuk membuat file terenkripsi, gunakan alat utilitas ansible-vault seperti yang ditunjukkan
$ ansible-vault create file.yml
Misalnya, untuk membuat file, beri nama secret_file.yml , jalankan perintah
$ ansible-vault create secret_file.yml
Anda akan diminta untuk memberikan kata sandi vault baru. Masukkan kata sandi pilihan Anda dan konfirmasi. Setelah Anda mengonfirmasi kata sandi , editor vim akan diluncurkan.
Setelah itu, ketik konten file yang ingin Anda enkripsi oleh Ansible vault dan simpan file tersebut. Di bawah ini adalah beberapa contoh teks.
Hello, this is my secret file
Saat Anda melihat file, Anda akan menemukan bahwa file tersebut telah dienkripsi menggunakan algoritma AES256 seperti yang ditunjukkan.
$ vim secret_file.yml
Mengedit File Terenkripsi dengan Ansible Vault
Untuk membuat perubahan pada file yang sudah ada yang dienkripsi gunakan sintaks:
$ ansible-vault edit file.yml
Dari contoh file yang telah kita buat sebelumnya, perintah untuk mengedit file tersebut adalah:
$ ansible-vault edit secret_file.yml
Sekali lagi, Anda akan dimintai kata sandi vault, dan setelah memberikannya, Anda akan diberikan akses ke file untuk melakukan modifikasi.
Melihat File Terenkripsi
Untuk mengintip file terenkripsi, gunakan sintaks:
$ ansible-vault view file.yml
Dengan menggunakan file kami, perintahnya akan menjadi
$ ansible-vault view secret_file.yml
Mengenkripsi File yang Ada menggunakan Ansible Vault
Misalkan Anda ingin mengenkripsi file yang sudah ada yang tidak terenkripsi, katakanlah file inventaris. Bagaimana Anda melakukannya? Untuk mencapai ini, gunakan sintaks:
$ ansible-vault mengenkripsi file.yml
Misalnya, untuk mengenkripsi file file1.yml jalankan perintah:
$ ansible-vault encrypt file1.yml
Tentukan kata sandi vault dan konfirmasikan untuk mengenkripsi file.
Dekripsi File menggunakan Ansible Vault
Untuk mendekripsi file dan kembali ke teks biasa, jalankan perintah:
$ ansible-vault decrypt file1.yml
Jika semuanya berjalan dengan baik, Anda akan mendapatkan pesan 'Dekripsi berhasil'. Sekarang Anda dapat menggunakan perintah cat untuk melihat konten file.
Setel Ulang Sandi Vault yang Memungkinkan
Anda juga dapat mengatur ulang atau mengubah kata sandi Vault. Ini dilakukan dengan menggunakan rekey opsi dalam perintah vault yang memungkinkan seperti yang ditunjukkan:
$ ansible-vault rekey secret_file.yml
Tentukan kata sandi vault saat ini terlebih dahulu , lalu buat kata sandi baru dan konfirmasikan.
Mendekripsi Konten pada Waktu Proses di Playbook yang Memungkinkan
Sebelum Ansible 2.4, mendekripsi file selama waktu proses memerlukan penggunaan –ask-vault-pass parameter seperti yang ditunjukkan dengan mungkin atau ansible-playbook perintah:
$ ansible-playbook playbook_example.yml --ask-vault-pass
Anda kemudian akan dimintai kata sandi Vault dan dekripsi akan dimulai saat runtime.
Namun, itu telah ditinggalkan. Sejak Ansible 2.4, metode standar untuk meminta kata sandi adalah dengan menggunakan –vault-id pilihan seperti yang ditunjukkan.
$ ansible-playbook playbook_example.yml --vault-id @prompt
@prompt akan meminta kata sandi
Trik sederhana untuk menghindari permintaan kata sandi setiap kali Anda mendekripsi file selama runtime adalah dengan menyimpan kata sandi vault dalam file.
Sebelum Ansible 2.4 cara untuk mencapai ini adalah penggunaan –vault-password-file parameter untuk menentukan jalur ke file yang berisi sandi yang disimpan.
Misalnya, dalam demonstrasi di bawah ini, file kata sandi terletak di file /etc/ansible/vault_pass.txt.
$ ansible-playbook playbook_example.yml --vault-password-file /etc/ansible/vault_pass.txt
Namun, seperti –ask-vault-pass opsi, opsi –vault-password-file tidak digunakan lagi untuk membuka jalan bagi –vault-id pilihan. Oleh karena itu, perintahnya terlihat seperti ini:
$ ansible-playbook playbook_example.yml --vault-id /etc/ansible/vault_pass.txt
Mengenkripsi variabel di Playbook yang Dimungkinkan
Selain mengenkripsi seluruh buku pedoman, ansible-vault juga memberi Anda kemampuan untuk mengenkripsi variabel saja. Dalam kebanyakan kasus, ini adalah variabel yang memuat informasi yang sangat rahasia &sensitif seperti kata sandi dan kunci API.
Playbook di bawah ini dimaksudkan untuk mencetak nilai variabel my_secret yang berisi sandi yang didefinisikan sebagai [dilindungi email].
Secara umum, menyimpan sandi dalam teks biasa adalah ide yang buruk karena jika ada yang memegang file playbook, keamanan Anda dapat dikompromikan.
Oleh karena itu Anda disajikan dengan 2 pilihan:untuk mengenkripsi seluruh file atau mengenkripsi nilai variabel.
Untuk mengenkripsi variabel, gunakan encrypt_string pilihan seperti yang ditunjukkan.
$ ansible-vault encrypt_string 'string' –nama 'variable_name'
Untuk mengenkripsi nilai variabel my_secret pada contoh buku pedoman, perintahnya adalah:
$ ansible-vault encrypt_string '[email protected]' --name 'my_secret'
Output di atas menunjukkan bahwa kata sandi telah dienkripsi dengan enkripsi AES 256 . Dari sini, salin seluruh kode terenkripsi dari !vault | . Buka file playbook dan hapus nilai kata sandi plaintext dan tempel nilai terenkripsi seperti yang ditunjukkan.
Simpan dan keluar dari file. Sekarang jalankan playbook dan verifikasi apakah itu akan tetap menampilkan nilai kata sandi yang disimpan di my_secret variabel.
Output di atas menunjukkan bahwa playbook memberikan hasil yang diinginkan yang menyiratkan bahwa kami berhasil mengenkripsi variabel.
Ini mengakhiri tutorial ini tentang Ansible Vault. Sekarang Anda dapat mengamankan file dan menyimpan informasi rahasia Anda dari mata-mata.