Artikel ini akan membahas tentang proses management secret storege dengan menggunakan vault dan consul .
Instalasi consul
Download consul versi terbaru disini download consul. Extract di suatu folder, contoh : /opt/consul_app setelah itu kita set environment variable untuk consul.
CONSUL_HOME=/opt/consul_app
export CONSUL_HOME
export PATH=$PATH:$CONSUL_HOME
Kemudian cek apakah variable CONSUL_HOME sudah dikenali sistem
echo $CONSUL_HOME
Selanjutnya cek apakah consul sudah terinstal dan di kenali oleh system dengan cara sebagai berikut :
consul -version
Konfigurasi dan menjadikan consul sebagai service
Buat folder dengan nama ‘data’ di /opt/consul_app kemudian, buat file consule.service di /etc/systemd/system
|
parameter ‘-data-dir /opt/consul_app/data’ artinya file penyimpanan untuk consul akan disimpan di folder -data-dir /opt/consul_app/data.
Selanjutnya cek apakah consul sudah dikenali sistem sebagai service
service consul status
untuk menjalankan consul lakukan perintah berikut
service consul start
Instalasi Vault
Download vault versi terbaru disini download consul. Extract di suatu folder, contoh : /opt/vault_app setelah itu kita set environment variable untuk vault.
VAULT_HOME=/opt/vault_app
VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_HOME
export VAULT_ADDR
export PATH=$PATH:$VAULT_HOME
Kemudian cek apakah variable CONSUL_HOME sudah dikenali sistem
echo $VAULT_HOME
Selanjutnya cek apakah consul sudah terinstal dan di kenali oleh system dengan cara sebagai berikut :
vault -version
Konfigurasi dan menjadikan vault sebagai service
Selanjutnya kita akan membuat file konfigurasi untuk vault, dan mengarahkan storage vault ke dalam consul.
Buat file config.hcl di /opt/vault_app
storage "consul" {
address = "127.0.0.1:8500"
path = "vault"
}
listener "tcp" {
address = "127.0.0.1:8200"
tls_disable = 1
}
kemudian jadikan vault sebagai service di sistem, buat file vault.service di /etc/systemd/system
|
Kemudian cek apakah vault sudah dikenali sistem sebagai service
service vault status
Untuk menjalankan service vault jalankan perintah berikut
service vault start
Setelah vault dan consul berhasil terinstall di sistem selanjutnya lakukan langkah-langkah berikut untuk memulai bekerja dengan vault
Initializing Vault
langkah pertama yang harus dilakukan setelah instalasi vault adalah inisialisasi vault tersebut, proses ini cukup dilakukan sekali untuk mendapatkan token root token dan unseal key.
vault init
jika berhasil maka akan muncul output seperti berikut
|
Ada beberapa key yang berhasil digenerate olah vault
Unseal key
Adalah key yang digunakan untuk proses unseal, kita tidak bisa melakukan apapun jika status vault masih dalam keadaan seal (protected), olehkarena itu kita membutuhkan key tersebut untuk membuat vault menjadi unseal dan siap digunakan. Dari keterangan diatas dapat dapat kita ketahui bahwa kita hanya cukup menggunakan 3 dari 5 unseal key untuk merubah status vault menjadi unseal. Jika kehilangan key tersebut maka vault tidak bisa dugunakan kembali, dan harus melakukan proses inisialisasi ulang , yang artinya data-data yang sebelumnya telah kita simpan akan hilang.
Initial Root Token
Adalah key yang digunakan untuk proses autentikasi sebagai root.
Unseal vault
Untuk melakukan proses unseal cukup dengan perintah
vault unseal
kemudian masukan unseal key yang telah kita dapatkan sebelumnya, jika berhasil maka akan muncul output seperti berikut
|
lakukan proses tersebut sebanya 3 kali, jalankan perintah berikut untuk melihat status vault
vault status
kemudian akan muncul seperti dibawh ini
|
jika kita berhasil melakukan proses unseal sebanyak 3 kali , status vault akan berubah manjadi status seal akan berubah menjadi false
Autentikasi / login
Untuk melakukan autentikasi sebagai root , lakukan perintah berikut
vault auth
masukan root token yang telah didapat sebelumnya, jika berhasil akan muncul seperti dibawah ini
Successfully authenticated! You are now logged in.
token: cad1c4ce-43ef-4218-1ff6-e2480cdb19ce
token_duration: 0
token_policies: [root]
Menulis dan membaca nilai pada vault
Untuk menulis secret didalam vault cukup lakukan perintah berikut
vault write secret/belajar password=123
jika berhasil akan keluar output seperti berikut
Success! Data written to: secret/belajar
printah diatas artinya kita menulis sebuah secret dengan key = password dan value = 123 didalam prefix secret/, secret yang tersimpan didalam vault bersifat ‘key value’ .
Untuk membaca secret yang telah kita simpan cukup lakukan perintah
vault read secret/belajar
jika berhasil akan muncul seperti dibawah ini
Key Value
--- -----
refresh_interval 768h0m0s
password 123
kita juga bisa menyimpan beberapa key didalam vault , contoh
vault write secret/belajar password=123 secret=456
vault read secret/belajar
jika berhasil akan muncul seperti dibawah ini
Key Value
--- -----
refresh_interval 768h0m0s
password 123
secret 456
Untuk menyimpan beberapa value disarankan menggunakan format json, vault sendiri sudah mendukung penyimpanan secret dengan menggunakan format json. Sebagai contoh kita akan membuat file json dengan nama secret.json di folder /tmp yang berisi
|
vault write secret/belajar @/tmp/secret.json
jika kita membaca secret tersebut dengan perintah
vault read secret/belajar
hasilnya akan seperti ini
Key Value
--- -----
refresh_interval 768h0m0s
data map[excited:yes value:world]
Secret Backend
Sebelumnya kita sudah mencoba menulis dan membaca nilai secret pada vault didalam prefix secret/. Prefix tersebut mengarah kepada backend yang akan kita gunakan, secara default prefix secret/ mengarah kepada backend yang dinamalan generic, generic backend menulis dan membaca raw data ke dalam backend storage. Selain generic backend ada beberapa backend yang di sediakan oleh vault, lebih lengkapnya ada disini
Selain prefix secret/ kita juga bisa menambah prefix sendiri yang mengarah kepada secret backend yang kita inginkan. Contoh
vault mount -path=rahasia generic
jika berhasil akan muncul keterangan berikut
Successfully mounted 'generic' at 'rahasia'!
Selanjutnya untuk melihat prefix apa saja yang ada dan mengarah ke backend mana bisa melakukan perintah berikut
vault mounts
jika berhasil akan muncul keterangan berikut
|
Selain itu kita bisa menghapus path yang telah kita buat sebelumnya, yang berarti data-data yang telah kita simpan di path tersebut akan ikut terhapus, berikut adalah perintah untuk menghapus / unmount path yang telah kita buat sebelumnya
vault unmount rahasia
Vault Policy
Vault policy adalah sebuah otorisasi didalam vault yang membatasi akses dari masing-masing user / akses token. Policy tersebut disimpan dalam file konfigurasi .hcl (HashiCorp Configuration Language) untuk lebih lengkapnya bisa dibaca disini. Untuk membuat policy, langkah pertama yang kita lakukan adalah membuat buat file misalnya configPolicy.hcl yang isinya sebagai berikut
|
Selanjutnya kita simpan policy tersebut kedalam vault dengan perintah berikut
vault policy-write agent-policy configPolicy.hcl
Perintah diatas artinya kita membuat policy dengan nama agent-policy yang aturannya diambil dari file configPolicy.hcl. Selanjutnya kita akan mambuat akses token dengan policy agent-policy.
vault token-create -policy="agent-policy"
jika berhasil akan keluar keterangan sebagai berikut
|
Kemudian kita login menggunakan akses token tersebut untuk memastikan akses token tersebut sudah benar-benar terikat dengan policy ‘agent-policy’
vault auth d1ccfad6-375a-f3ef-8ca0-a5a633495832
tulis sebuah nilai didalam path secret/data
vault write secret/data secret=123
karena policy ‘agent-policy’ tidak membolehkan untuk menulis di path secret/data maka akan muncul keterangan berikut
Error writing data to secret/data: Error making API request.
URL: PUT http://127.0.0.1:8200/v1/secret/data
Code: 403. Errors:
* permission denied