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 Ansible, fitur ini namanya Become. Yuk, kita bedah biar lu makin jago navigasiin hak akses server.


Pengertian

Become adalah mekanisme di Ansible yang memungkinkan lu buat menjalankan tugas dengan hak akses user lain. Biasanya, fitur ini dipake buat Privilege Escalation, yaitu naik kelas dari user biasa yang terbatas ke user Root yang punya kendali penuh atas sistem.


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 (Superuser Do) di keluarga Linux atau su di sistem Unix lama.


Cara Kerja

  1. Lu tentukan parameter become: yes di dalam Playbook.

  2. Ansible bakal konek ke server target pake user biasa (misal: engineer).

  3. Setelah konek, Ansible bakal manggil perintah sudo (atau metode lain yang lu tentukan).

  4. Ansible bakal ngirim password sudo (kalau dibutuhin) lewat saluran aman.

  5. 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

KelebihanKekurangan
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 Brute-force langsung ke user root.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-pass
    
  • Opsi 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=PasswordSudoLu
    

    Tips Senior: Kalau pake cara ini, wajib pake Ansible Vault buat enkripsi file inventory-nya!


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

Popular posts from this blog

Apa itu Link Aggregation?

Apa Itu Port Security di Switch Cisco