HashiCorp Vault adalah platform manajemen keamanan yang digunakan untuk mengelola akses ke data sensitif, seperti kunci enkripsi, token otentikasi, dan kata sandi. Vault membantu memastikan bahwa data sensitif tersimpan dengan aman, dengan memberikan akses hanya kepada orang-orang yang memiliki hak akses yang sesuai.

Vault dapat diintegrasikan dengan berbagai sistem, seperti Kubernetes, AWS, dan database, sehingga memudahkan pengelolaan akses ke data sensitif pada berbagai sistem tersebut. Vault juga menawarkan fitur audit yang memungkinkan pengguna untuk melacak siapa yang mengakses data sensitif dan kapan.

HashiCorp Vault dikembangkan oleh perusahaan teknologi HashiCorp, yang juga dikenal dengan produk-produk open source terkenalnya seperti Vagrant, Terraform, dan Consul.

Prasyarat

  1. Menggunakan OS Ubuntu 20.04
  2. Memiliki akses root

Tambahkan GPG Key

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -

Add Repository

apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"

Install Vault

apt update
apt install vault -y

Cek Versi Vault

Untuk mengecek versi vault yang terinstall bisa menggunakan perintah berikut

vault -v

Enable dan Start Service

systemctl enable vault
systemctl start vault

Cek Service Vault

Cek apakah vault sudah aktif atau belum

systemctl status vault

Cek Konfigurasi Vault

nano /etc/vault.d/vault.hcl

disini kita bisa melihat konfigurasi yang aktif.

# Full configuration options can be found at https://www.vaultproject.io/docs/configuration

ui = true

#mlock = true
#disable_mlock = true

storage "file" {
  path = "/opt/vault/data"
}

#storage "consul" {
#  address = "127.0.0.1:8500"
#  path    = "vault"
#}

# HTTP listener
#listener "tcp" {
#  address = "127.0.0.1:8200"
#  tls_disable = 1
#}

# HTTPS listener
listener "tcp" {
  address       = "0.0.0.0:8200"
  tls_cert_file = "/opt/vault/tls/tls.crt"
  tls_key_file  = "/opt/vault/tls/tls.key"
}

# Enterprise license_path
# This will be required for enterprise as of v1.8
#license_path = "/etc/vault.d/vault.hclic"

# Example AWS KMS auto unseal
#seal "awskms" {
#  region = "us-east-1"
#  kms_key_id = "REPLACE-ME"
#}

# Example HSM auto unseal
#seal "pkcs11" {
#  lib            = "/usr/vault/lib/libCryptoki2_64.so"
#  slot           = "0"
#  pin            = "AAAA-BBBB-CCCC-DDDD"
#  key_label      = "vault-hsm-key"
#  hmac_key_label = "vault-hsm-hmac-key"
#}

Dari konfigurasi tersebut kita bisa tau bahwa fitur apa saja yang aktif.

  1. UI
  2. Penyimpanan menggunakan filesystem dan disimpan di /opt/vault/data
  3. Listen TCP di port 8200 untuk semua interface (0.0.0.0) HTTPS

Jadi kita bisa akses melalui https://ip-vm:8200

Tentukan key shares dan treshold kemudian klik initialize.

Disini saya membuat 10 key share, dan minimal 6 key dibutuhkan untuk membuka brankas

Jika sudah di unseal, kita bisa masuk menggunakan root token nya.

Membuat NGINX Reverse Proxy

Kita menggunakan nginx untuk proxy, https, dan memungkinkan untuk whitelist ip

apt install nginx certbot python3-certbot-nginx

Ubah konfigurasi vault listen ke localhost dan matikan https nya.

nano /etc/vault.d/vault.hcl

Uban menjadi seperti berikut

listener "tcp" {
  address = "127.0.0.1:8200"
  tls_disable = 1
}

Kemudian restart vault

systemctl restart vault

Buat NGINX config

buat file di /etc/nginx/sites-available/vault.tkjpedia.com (sesuaikan nama domain kamu)

server {
    server_name vault.tkjpedia.com;

    location / {
        proxy_pass         http://127.0.0.1:8200/;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    }
    
    listen 80;
}

Enable config NGINX dengan membuat link ke sites enabled

ln -s /etc/nginx/sites-available/vault.tkjpedia.com /etc/nginx/sites-enabled/vault.tkjpedia.com

kemudian restart nginx dengan perintah service nginx restart.

Selanjutnya arahkan domain ke IP vault kamu, kemudian gunakan certbot untuk mendapatkan SSL gratis dari letsencrypt

Jika sudah, coba buka nama domain kamu maka vault kamu sudah menggunakan tls dari letsencrypt

Selamat!