Become di Ansible
Di dunia nyata, haram hukumnya lu login SSH langsung pake user root. Itu celah keamanan yang gede banget. Standar industri yang bener adalah lu masuk pake user biasa, baru deh "pinjem" kesaktian root pas eksekusi perintah.
Di
Pengertian
Become adalah mekanisme di Ansible yang memungkinkan lu buat menjalankan tugas dengan hak akses user lain. Biasanya, fitur ini dipake buat
Konsep
Secara default, Ansible bakal eksekusi perintah pake user yang lu gunain buat konek via SSH. Tapi, banyak tugas sistem (kayak install paket atau edit file config di /etc) butuh hak akses administratif.
Konsep Become ini mengandalkan tool pihak ketiga di sisi server target, yang paling umum adalah sudo (su di sistem Unix lama.
Cara Kerja
Lu tentukan parameter
become: yesdi dalam Playbook.Ansible bakal konek ke server target pake user biasa (misal:
engineer).Setelah konek, Ansible bakal manggil perintah
sudo(atau metode lain yang lu tentukan).Ansible bakal ngirim password sudo (kalau dibutuhin) lewat saluran aman.
Perintah lu dieksekusi dengan privilege root, dan hasilnya dibalikin ke lu.
Tujuan
Tujuan utamanya cuma satu: Keamanan. Dengan nggak ngijinin login langsung sebagai root, lu bisa memantau siapa aja yang masuk ke server. Selain itu, ini adalah bentuk penerapan prinsip Least Privilege, di mana user cuma dapet hak akses tinggi pas bener-bener butuh doang.
Analogi
Bayangin lu adalah seorang Karyawan Magang di sebuah kantor. Lu nggak punya kunci brankas utama. Tapi, lu punya surat mandat dari Direktur (Root). Pas lu mau buka brankas, lu kasih liat surat itu ke satpam (Sudo). Satpam bakal bukain pintu buat lu karena lu bawa bukti izin dari atasan. Selesai urusan di brankas, lu balik lagi jadi anak magang biasa.
Kelebihan dan Kekurangan
| Kelebihan | Kekurangan |
| Audit Trail: Log sistem bakal nyatet siapa user biasa yang "menjadi" root. | Konfigurasi Tambahan: Lu harus mastiin user biasa tadi udah masuk daftar sudoers. |
| Security Best Practice: Menutup celah serangan | Security Risk: Kalau password sudo bocor atau ditaruh di file teks tanpa enkripsi, bahaya juga. |
Tutorial & Problem Solving Lengkap
Gua bakal tunjukin gimana caranya lu deploy sesuatu pake user biasa tapi eksekusinya sebagai root.
1. Persiapan di Server Target (Managed Node)
User lu (misal namanya junior) harus punya akses sudo. Cara ngetesnya, coba login manual terus ketik sudo whoami. Kalau keluarnya root, berarti aman.
2. Konfigurasi di Playbook
Lu bisa naro parameter become di tingkat Play (seluruh file) atau per-Task (tugas tertentu aja).
Playbook dengan Become (install_service.yml):
---
- name: Demo Privilege Escalation
hosts: all
user: junior # User biasa buat login SSH
become: yes # Aktifkan fitur "pinjem" akses root
become_method: sudo # Metode yang dipake (defaultnya sudo)
tasks:
- name: Coba bikin file di direktori sistem yang terlarang
copy:
content: "Halo dari Ansible Become!"
dest: /etc/rahasia_negara.txt
# Task ini butuh root, tanpa 'become' bakal error "Permission Denied"
- name: Update sistem (Butuh root)
apt:
update_cache: yes
3. Cara Menangani Password Sudo
Kalau server lu minta password pas ngetik sudo, lu nggak bisa langsung jalanin Ansible gitu aja. Ada dua cara:
Opsi A: Pakai Flag
--ask-become-pass(Paling Aman)Jalanin command ini, nanti Ansible bakal minta lu ngetik password sudo secara interaktif.
ansible-playbook -i hosts.ini install_service.yml --ask-become-passOpsi B: Simpan di Inventory (Kurang Aman, tapi praktis)
Tambahin variabel di file
hosts.ini:[servers] 192.168.1.10 ansible_user=junior ansible_become_pass=PasswordSudoLuTips Senior: Kalau pake cara ini, wajib pake
buat enkripsi file inventory-nya!Ansible Vault
Kesimpulan
Fitur Become ini adalah nyawa dari otomasi server yang aman. Jangan pernah males buat nge-set sudoers di server target demi kemudahan login root. Sebagai engineer yang pinter, lu harus selalu mikirin aspek security di tiap baris kode yang lu tulis.
Glosarium Engineer
Become: Parameter Ansible untuk melakukan eskalasi hak akses user.
Privilege Escalation: Proses meningkatkan hak akses dari level rendah ke level administratif.
Root: User tertinggi dalam sistem operasi berbasis Unix/Linux yang punya akses tanpa batas.
Sudo (Superuser Do): Program pada sistem operasi Unix yang mengizinkan user biasa untuk menjalankan perintah sebagai superuser.
Least Privilege: Prinsip keamanan di mana user hanya diberikan akses minimal yang diperlukan untuk tugasnya.
Brute-force Attack: Metode serangan dengan mencoba semua kemungkinan password secara otomatis.
Ansible Vault: Fitur Ansible untuk mengenkripsi file sensitif seperti password atau kunci API.
Comments
Post a Comment