halo sobat sekolahlinux, pada tutorial kali ini saya akan coba membuat tutorial sederhana tentang vault, beberapa hal yang akan dibahas pada tutorial kali ini adalah:
- how to install & setup vault on linux
- how to run vault
- how to create secret & key value on vault
- how to create policy on vault
- how to create user with policy on vault
- how to generate token with policy on vault
disini saya akan beranggapan kita punya 2 server, yaitu:
- server-vault
- server-client
how to install & setup vault on linux
for setup vault on linux you can follow this link below, run this step on server-vault & server-client
- https://learn.hashicorp.com/tutorials/vault/getting-started-install#install-vault
how to run vault
sesudah kamu install vault di linux os, kamu bisa membuat konfigurasi config.hcl lalu isi dengan konfigurasi dibawah ini
storage "raft" { path = "./vault/data" node_id = "node1" } listener "tcp" { address = "0.0.0.0:8200" tls_disable = "true" } disable_mlock = true api_addr = "http://0.0.0.0:8200" cluster_addr = "https://127.0.0.1:8201" ui = true
masih di folder yang sama dengan dengan file config.hcl, buat folder vault/data dengan command dibawah
mkdir -p ./vault/data
maka layoutnya akan seperti dibawah ini
. ├── config.hcl └── vault └── data
setelah itu jalankan vault dengan perintah dibawah didalam folder yang sama dengan file config.hcl dan folder vault
sudo vault server -config=config.hcl
lalu jika sudah jalankan perintah dibawah ini untuk provisioning awal vault, oh iya perintah dibawah hanya dijalankan sekali saja pada saat vault baru selesai di install, perintah dibawah bisa dijalankan di sisi server-client, tapi sebelumnya kalian harus set variable seperti dibawah ini pada server-client
export VAULT_ADDR="http://IP_SERVER_VAULT:8200"
lalu jalankan perintah dibawah di server-client
vault operator init
selanjutnya akan muncul 5 unseal_key dan 1 root token, yang mana unseal_key ini nanti digunakan untuk unseal vault ketika vault sehabis di restart atau stop, simpan baik2 unseal key dan juga root_token
unseal_key dan root_token dibawah ini hanya sample, hasilnya bisa berbeda disaat menajalankan perintah diatas
Unseal Key 1: hcbWxgMGxc4npuo7e9fFKhPLwQS4LmxERjdy3//eybye Unseal Key 2: rOug2H1F4CSOtuJk+4Cz3Vn7u+h8jZfCFrt0ayLUeu8+ Unseal Key 3: BYBiepznIpEejH4JsEXdKp/mj98GS3ffadqrS5W4l/O7 Unseal Key 4: 92Hwarlx0HvYzb6+SEqAQdn+m7VleijGU+oIBhnPEniH Unseal Key 5: n7vlwFiyjVlMlFH4iPtfhODbwo4U2XKkz3BJdyR22QdF Initial Root Token: hvs.OeL8btzLW1hGr6Eg1kcXRtrO
selanjutnya di vault-server buat systemd supaya kita bisa auto start vault ketika vm habis di reboot
buat file /etc/systemd/system/vault.service dengan perintah dibawah
sudo vim /etc/systemd/system/vault.service
lalu isi dengan konfigurasi dibawah pada file vault.service
[Unit] Description="vault by hasicorp" Requires=network-online.target After=network-online.target [Service] User=ubuntu WorkingDirectory=/home/ubuntu/vault ExecStart=/usr/bin/vault server -config=config.hcl Restart=always LimitNOFILE=65536 LimitMEMLOCK=infinity [Install] WantedBy=multi-user.target
selanjutnya jalankan perintah dibawah
sudo systemctl daemon-reload sudo systemctl enable vault sudo systemctl start vault
how to create secret & key value on vault
buka browser dan masukan url dibawah
http://IP_SERVER_VAULT:8200
lalu jika sudah pilih methode “Token” dan isi dengan token yang kalian dapat diatas
lalu jika sudah login seperti gambar dibawah klik menu “Enable new engine”
lalu selanjutnya kalian akan dibawa pada pilihan seperti dibawah, pilih generic “KV” lalu klik next
selanjutnya masukan secret name yang akan dibuat, disini saya menamai sesuai env yaitu untuk env dev
jika sudah klik enable engine, kalian akan dibawa ke page dibawah
selanjut nya kita akan buat secret dari web-ui, pada tampilan page diatas klik “Create secret” dan akan tampil page seperti dibawah, isi textbox “Path for this secret” disini saya isi sesuai nama service nya, lalu pada textbox “secret data” masukkan variable dan value nya, jika sudah klik save
ulangi langkah diatas untuk membuat 1 path secret lagi, contohnya seperti dibawah
oke sekarang kita puntya 2 path secret seperti dibawah “fe_service” dan “be_service”
how to create policy on vault
pada step diatas kita membuat 2 buah path yaitu path “fe_service” dan path “be_service”, dan di step ini kita juga akan buat 2 policy berbeda, satu policy nantinya punya akses service “fe_service” satunya lagi untuk akses service “be_service”
-
policy “fe_service”
path "dev/*" { capabilities = ["list"] } path "dev/+/fe_service" { capabilities = ["create", "read", "update", "patch", "delete", "list"] }
- policy “be_service”
path "dev/*" { capabilities = ["list"] } path "dev/+/be_service" { capabilities = ["create", "read", "update", "patch", "delete", "list"] }
maka kita akan punya 2 policy seperti dibawah ini
how to create user with policy on vault
pilin top menu “Access” lalu klik link “Enable new methode”.
jika sudah anda akan dibawa pada page seperti dibawah, pilih generic “Username & Password” lalu klik button next
selanjutnya klik button enable methode seperti pada gambar dibawah
lalu pada tampilan page dibawah set agar TTL menjadi 60 minutes, karena by default TTL nya adalah 30 Second, lalu klik button “update options”
lalu di tampilan page dibawah selanjutnya pada authetication methods, kita bisa lihat sekarang ada methode “userpass” klik methode tersebut
lalu kita akan dibawa pada page dibawah, selanjutnya klik menu “Create user”
lalu ini field “username” dan “password” dan isi juga field “generated token’s policies” dibawah dengan policy name yang sebelumnya kita buat, disini saya isi dengan policy name “fe_service”, lalu klik button “save”
how to generate token with policy on vault
untuk part ini kita harus menggunakan cli, pastikan kalian sudah set env-var dibawah di os kalian di server-client, pastikan juga kalian sudah install vault cli di server-client
export VAULT_ADDR="http://IP_SERVER_VAULT:8200" export VAULT_TOKEN="ROOT_TOKEN"
ganti IP_SERVER_VAULT dengan ip-address server-vault, dan ganti ROOT_TOKEN dengan token yang didapat setelah kalian menjalankan vault operator init
lalu jalankan perintah dibawah ini untuk membuat token dengan policy “fe_service”
vault token create -policy=fe_service
result:
atau kalian juga bisa attach lebih dari 1 policy dalam sebuah token dengan menjalankan perintah dibawah
vault token create -policy=fe_service -policy=be_service
result:
selanjutnya untuk pengetesan kalian bisa coba login ke web-ui dengan menggunakan 2 token tersebut, dan lihat perbedaannya, yang satu bisa akses secret dev/fe_service namun tidah bisa akses ke dev/be_service namun yang satu lagi bisa akses ke 2 nya