Reset Carbonio Mesh Credentials pada Single Node

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.

Leave a Reply

Your email address will not be published. Required fields are marked *