Tentang Carbonio Mesh Credentials
Credential yang dipakai Carbonio Mesh disimpan di file /etc/zextras/service-discover/cluster-credentials.tar.gpg, yaitu sebuah tar archive yang dienkripsi dengan GPG. Archive tersebut berisi bootstrap token, internal CA Carbonio Mesh beserta private key-nya, dan encryption keys.
Peringatan: jika file cluster-credentials.tar.gpg sampai bocor, keamanan seluruh infrastruktur ikut terkompromi.
File credential ini harus ada dan bisa diakses selama berbagai aktivitas administrasi, seperti setup dan upgrade Carbonio, saat menjalankan pending-setups, dan saat mengerjakan task lain yang melibatkan komponen Carbonio.
File tersebut dienkripsi GPG menggunakan sebuah secret (yang pada dasarnya adalah password lain), yang tersimpan di /var/lib/service-discover/password dan hanya bisa diakses oleh user root. Secret ini dibutuhkan saat menjalankan perintah pending-setups dan selama Service Discover installation wizard.
Jadi, kalau kalian lupa passwordnya, login sebagai root ke salah satu Carbonio Mesh Server, lalu baca file /var/lib/service-discover/password.
Kalau ingin atau perlu mengganti secret ini (misalnya karena bocor, terkirim ke orang yang salah, atau salah satu admin resign), maka perlu dilakukan reset Carbonio Mesh Credentials.
Reset Carbonio Mesh Credentials
Sebelum memulai, identifikasi dulu leader node, tempat beberapa task awal dijalankan, lalu hapus token lama, generate yang baru, dan terakhir setup node lain dengan menyalin credential ke node sisanya lalu restart service. Cara menemukan leader node ada di bagian Find the Leader Node.
Hapus Credential Lama
Perlu diperhatikan, service Carbonio Mesh akan offline selama prosedur berlangsung.
Login ke leader node, lalu jalankan:
consul acl bootstrap
Perintah ini mengembalikan nilai reset index yang dibutuhkan selama prosedur. Outputnya selalu mirip seperti ini:
Failed ACL bootstrapping: Unexpected response code: 403 (Permission denied: ACL bootstrap no longer allowed (reset index: 908))
Nilai reset index ada di bagian akhir output (reset index: 908), pada contoh ini 908. Catat nilainya.
Task pertama, dijalankan sebagai user service-discover, adalah menuliskan reset index saat ini ke sebuah file supaya ACL token baru bisa digenerate. Sesuai contoh, nilainya 908 (sesuaikan dengan output yang kalian terima):
sudo -u service-discover bash -c "echo 908 > /var/lib/service-discover/data/acl-bootstrap-reset"
Kemudian stop service service-discover:
systemctl stop service-discover
Hapus dua file berikut:
rm /etc/zextras/service-discover/config.json
rm /etc/zextras/service-discover/main.json
Terakhir, hapus semua sertifikat terkait service-discover:
rm /var/lib/service-discover/*.pem
Generate Credential Baru
Task pertama adalah menentukan password baru yang kuat, yang kita simpan di variabel sementara demi keamanan. Ingat untuk menyimpan password di tempat yang aman kalau sewaktu-waktu dibutuhkan.
read -s -p "Insert Mesh Password:" MESH_SECRET
Catatan, password ini hanya bisa diakses user (root) di terminal saat ini. Tidak ada orang lain yang bisa mengaksesnya dan akan terhapus saat logout.
Saat diminta, masukkan password pilihan kalian, lalu jalankan setup sebagai first instance:
service-discover setup LEADER_IP --first-instance --password=$MESH_SECRET
Ini pada dasarnya perintah yang sama seperti saat konfigurasi Carbonio Mesh, bedanya di sini kita pakai IP address eksplisit dan menjalankannya sebagai first instance.
Jika perintah berhasil, kalian bisa unset password secara manual:
unset MESH_SECRET
Opsional, verifikasi ACL token dengan perintah berikut:
export CONSUL_HTTP_TOKEN=$(gpg -qdo - /etc/zextras/service-discover/cluster-credentials.tar.gpg | tar xOf - consul-acl-secret.json | jq .SecretID -r)
consul members
Contoh output:
Node Address Status Type Build Protocol DC Segment
mail.example.com 192.168.56.101:8301 alive server 1.9.3 2
Setup Node Lain
Untuk menyelesaikan prosedur, ulangi task berikut pada setiap node lainnya.
Login ke salah satu node, lalu salin credential dari leader node:
scp root@[LEADER_IP]:/etc/zextras/service-discover/cluster-credentials.tar.gpg
/etc/zextras/service-discover/cluster-credentials.tar.gpg
Stop service service-discover:
systemctl stop service-discover
Hapus dua file berikut:
rm /etc/zextras/service-discover/config.json
rm /etc/zextras/service-discover/main.json
Hapus juga semua sertifikat terkait service-discover:
rm /var/lib/service-discover/*.pem
Terakhir, jalankan setup Carbonio Mesh. Ambil password MESH_SECRET yang ditentukan pada leader node dan masukkan ke variabel:
read -s -p "Insert Mesh Password:" MESH_SECRET
Saat diminta, masukkan password, lalu jalankan setup:
service-discover setup $(hostname -i) --password=$MESH_SECRET
Jika perintah berhasil, unset password secara manual:
unset MESH_SECRET
Penutup
Intinya, reset mesh credentials dimulai dari leader node: ambil reset index dari consul acl bootstrap, tulis ke file acl-bootstrap-reset, bersihkan file config dan sertifikat, lalu generate password baru dengan setup first instance. Setelah leader beres, tinggal salin cluster-credentials.tar.gpg ke node lain dan jalankan setup memakai password yang sama. Selalu ingat menyimpan password baru di tempat aman dan menjaga file credential tetap rahasia.