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
- Menggunakan OS Ubuntu 20.04
- 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.
- UI
- Penyimpanan menggunakan filesystem dan disimpan di /opt/vault/data
- 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!