how to install and setup vault by hashicorp

0
612

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