Cyber Security Academy · Pelajaran

Brankas dan Penyimpanan Rahasia

Memusatkan rahasia dengan alat seperti Vault.

Pelajaran 2 dari 413 langkah

Brankas dan Penyimpanan Rahasia adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Yang Diatasi oleh Penyimpanan Secret

Penyimpanan secret (atau brankas) adalah layanan terpusat yang diperkuat keamanannya dan tugasnya hanya menyimpan, mengendalikan, serta mengaudit akses ke secret. Layanan ini menggantikan berkas dan variabel lingkungan yang tersebar dan menyebabkan penyebaran secret.

Pengelola secret yang baik menyediakan empat kemampuan inti:

  • Penyimpanan terpusat satu sumber kebenaran yang menjadi acuan.
  • Kontrol akses kebijakan terperinci mengenai siapa dan apa yang dapat membaca setiap secret.
  • Pencatatan audit catatan setiap akses untuk respons insiden.
  • Enkripsi secret dienkripsi saat tersimpan dan saat dikirim.

Contohnya mencakup HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, dan GCP Secret Manager.

Struktur HashiCorp Vault

HashiCorp Vault adalah pengelola secret sumber terbuka yang populer. Layanan ini mengatur fungsionalitas ke dalam mesin secret yang dapat dipasang pada jalur tertentu.

  • Mesin KV menyimpan secret statis dalam pasangan kunci-nilai.
  • Mesin basis data menghasilkan kredensial basis data yang dinamis dan berumur pendek.
  • Mesin PKI menerbitkan sertifikat TLS sesuai permintaan.
  • Mesin Transit menyediakan enkripsi sebagai layanan tanpa mengekspos kunci.

Anda berinteraksi dengan Vault melalui antarmuka pemrograman HTTP atau CLI. Setiap jalur diatur oleh kebijakan yang menentukan siapa yang boleh membaca atau menulis di jalur tersebut.

# Enable a KV v2 secrets engine at the 'secret/' path
vault secrets enable -path=secret kv-v2

# Write and read a static secret
vault kv put secret/app/db password='S3cr3t' user='app'
vault kv get secret/app/db

Model Penyegelan dan Pembukaan Segel

Vault melindungi datanya dengan mekanisme penyegelan/pembukaan segel. Saat Vault dimulai, statusnya tersegel; Vault mengetahui lokasi data terenkripsi, tetapi tidak dapat mendekripsinya.

Kunci utama yang mendekripsi penyimpanan itu sendiri dienkripsi oleh kunci pembuka segel. Dengan menggunakan Pembagian Secret Shamir, kunci pembuka segel tersebut dipecah menjadi beberapa bagian yang dibagikan kepada operator yang berbeda.

Ambang batas yang dapat dikonfigurasi (misalnya 3 dari 5 bagian) harus diberikan untuk menyusun kembali kunci dan membuka segel Vault. Tidak ada satu orang pun yang dapat membukanya sendirian, sehingga hal ini melindungi dari penyusupan oleh orang dalam.

# Initialize Vault: 5 key shares, threshold of 3 to unseal
vault operator init -key-shares=5 -key-threshold=3

# Each operator supplies one shard until threshold is met
vault operator unseal <shard-1>
vault operator unseal <shard-2>
vault operator unseal <shard-3>

Autentikasi: Siapa Anda?

Sebelum membaca secret apa pun, klien harus melakukan autentikasi untuk memperoleh tanda autentikasi. Vault mendukung banyak metode autentikasi yang disesuaikan dengan berbagai identitas:

  • AppRole untuk aplikasi dan sistem integrasi berkelanjutan (ID peran + ID secret).
  • Kubernetes menggunakan tanda autentikasi akun layanan pod.
  • AWS/GCP/Azure IAM mempercayai identitas platform komputasi awan.
  • OIDC/LDAP untuk pengguna manusia melalui SSO.

Prinsip utamanya: identitas berasal dari platform, bukan dari kata sandi yang berumur panjang. Pod Kubernetes membuktikan identitasnya menggunakan tanda autentikasi akun layanannya sendiri; tidak ada secret awal yang dapat bocor.

# App authenticates via AppRole to receive a token
vault write auth/approle/login \
  role_id="db-app-role" \
  secret_id="$WRAPPED_SECRET_ID"
# Response includes client_token used for subsequent reads

Otorisasi dengan Kebijakan

Autentikasi membuktikan identitas; kebijakan menentukan tindakan yang boleh dilakukan oleh identitas tersebut. Kebijakan Vault ditulis dalam HCL dan mengikuti prinsip hak akses minimum, yaitu hanya memberikan jalur dan kemampuan yang dibutuhkan beban kerja.

Kebijakan ini memungkinkan suatu layanan membaca secret basis datanya sendiri dan tidak lebih dari itu:

Kemampuan dipetakan ke kata kerja antarmuka pemrograman: read, create, update, delete, dan list. Tolak secara bawaan; berikan izin secara eksplisit.

# policy: billing-app.hcl
path "secret/data/billing/*" {
  capabilities = ["read"]
}
path "database/creds/billing-readonly" {
  capabilities = ["read"]
}
# everything else is implicitly denied

Penyimpanan Secret Berbasis Awan

Jika Anda berjalan di satu komputasi awan, penyimpanan terkelola milik penyedia menghilangkan beban operasional: tidak ada penyegelan atau pembukaan segel, dan tidak ada server yang perlu diperbarui:

  • AWS Secrets Manager terintegrasi dengan IAM dan mendukung fungsi Lambda bawaan untuk rotasi.
  • Azure Key Vault menyimpan secret, kunci, dan sertifikat dengan RBAC.
  • GCP Secret Manager menyediakan secret berversi yang dilindungi oleh pengikatan IAM.

Akses diatur oleh IAM milik komputasi awan, sehingga suatu beban kerja membaca secret menggunakan peran yang sudah dimilikinya tanpa kata sandi terpisah. Imbalannya adalah keterikatan pada vendor dan dukungan multi-awan yang lebih lemah dibandingkan Vault.

# Read a secret from AWS Secrets Manager (workload uses its IAM role)
aws secretsmanager get-secret-value \
  --secret-id prod/billing/db \
  --query SecretString --output text

# GCP equivalent
gcloud secrets versions access latest --secret=billing-db

Enkripsi sebagai Layanan

Terkadang Anda tidak ingin menyimpan secret sama sekali; Anda ingin mengenkripsi data aplikasi tanpa aplikasi Anda pernah memegang kunci enkripsi. Mesin Transit milik Vault melakukan tepat seperti itu.

Aplikasi mengirimkan teks biasa ke Vault, menerima teks sandi, dan tidak pernah melihat kuncinya. Dekripsi bekerja dengan cara yang sama. Inilah yang disebut enkripsi sebagai layanan.

Manfaatnya: kunci hanya berada di dalam Vault, dapat dirotasi secara terpusat, dan aplikasi yang disusupi tidak dapat membocorkan kunci yang tidak pernah dimilikinya.

# Encrypt data without the app ever seeing the key
vault write transit/encrypt/orders-key \
  plaintext=$(echo -n 'card=4111...' | base64)
# returns: ciphertext=vault:v1:abc123...

# Decrypt later
vault write transit/decrypt/orders-key ciphertext='vault:v1:abc123...'

Memasukkan Secret ke Beban Kerja

Brankas hanya berguna jika aplikasi dapat menggunakan secret tanpa menulis jalur atau tanda autentikasi secara langsung. Pola penyisipan yang umum:

  • Pendamping/agen Agen Vault berjalan bersama aplikasi, melakukan autentikasi, dan menulis secret ke volume dalam memori yang digunakan bersama.
  • Pengandar CSI Kubernetes memasang secret sebagai berkas melalui pengandar CSI Penyimpanan Secret.
  • Pengambilan melalui SDK aplikasi memanggil antarmuka pemrograman brankas secara langsung saat dimulai.

Utamakan pemasangan ke sistem berkas dalam memori (tmpfs) daripada variabel lingkungan, dan hindari menulis secret ke disk karena secret tersebut dapat bertahan di sana.

# Vault Agent template renders a secret to an in-memory file
template {
  contents = "DB_PASS={{ with secret \"secret/app/db\" }}{{ .Data.data.password }}{{ end }}"
  destination = "/run/secrets/db.env"
}

Pencatatan Audit dan Akuntabilitas

Setiap peristiwa pembacaan, penulisan, dan autentikasi di Vault harus dicatat dalam catatan audit. Inilah yang membuat pengelolaan rahasia dapat dipertanggungjawabkan selama terjadi insiden.

Catatan audit menjawab pertanyaan penting: siapa yang mengakses rahasia yang mana, kapan, dan dari mana. Vault menghasilkan ringkasan kriptografis dari nilai sensitif dalam catatan, sehingga catatan itu sendiri tidak membocorkan rahasia.

Kirimkan catatan audit ke sistem terpisah yang dapat mendeteksi perubahan (SIEM), sehingga penyerang yang berhasil menyusupi host Vault juga tidak dapat menghapus bukti tentang hal-hal yang telah diaksesnya.

# Enable a file audit device (HMAC-hashes secret values)
vault audit enable file file_path=/var/log/vault/audit.log

# Forward to a SIEM/syslog endpoint for tamper resistance
vault audit enable syslog tag="vault" facility="AUTH"

Melindungi Vault Itu Sendiri

Penyimpanan terpusat memusatkan risiko: jika Vault tumbang, semuanya ikut tumbang. Perkuat Vault sebagai aset Anda yang paling penting:

  • Jalankan dengan TLS di semua titik akhir; jangan pernah mengekspos antarmuka pemrograman tanpa enkripsi.
  • Letakkan Vault di jaringan privat di balik aturan firewall yang ketat.
  • Aktifkan pembukaan segel otomatis melalui KMS berbasis cloud untuk menghindari penanganan pecahan kunci secara manual, tetapi lindungi kunci KMS tersebut dengan ketat.
  • Gunakan TTL token yang singkat dan sewa yang dapat diperpanjang agar token yang dicuri cepat kedaluwarsa.
  • Segera pasang perbaikan dan pantau catatan audit untuk menemukan anomali.

Vault menukar banyak titik kegagalan dengan satu titik yang sangat terlindungi.

Memilih Penyimpanan yang Tepat

Tidak ada satu alat yang paling baik; sesuaikan penyimpanan dengan lingkungan Anda:

  • Satu cloud, kebutuhan sederhana gunakan pengelola bawaan (AWS/Azure/GCP) untuk beban operasional paling rendah.
  • Multi-cloud atau lokal HashiCorp Vault memberikan abstraksi yang konsisten dan portabel.
  • Memerlukan rahasia dinamis atau enkripsi sebagai layanan mesin Vault adalah yang paling mumpuni.
  • Kubernetes sebagai komponen utama gabungkan penyimpanan dengan pengandar CSI atau operator seperti External Secrets.

Apa pun pilihan Anda, tujuannya sama: satu sumber kebenaran yang diaudit dan dikendalikan aksesnya, sebagai pengganti teks biasa yang tersebar.

Pemeriksaan Singkat

Uji pemahaman Anda tentang model perlindungan Vault.

Ringkasan: Vault dan Penyimpanan Rahasia

Anda telah mempelajari cara mengganti rahasia yang tersebar dengan penyimpanan terpusat yang diaudit.

  • Penyimpanan rahasia menyediakan penyimpanan terpusat, pengendalian akses, pencatatan audit, dan enkripsi.
  • HashiCorp Vault menggunakan mesin rahasia yang dapat dipasang-lepas serta model penyegelan/pembukaan segel yang dilindungi oleh Pembagian Rahasia Shamir.
  • Metode autentikasi memperoleh identitas dari platform (Kubernetes, IAM, AppRole), sedangkan kebijakan menegakkan hak akses paling rendah.
  • Penyimpanan berbasis cloud (AWS, Azure, GCP) mengorbankan portabilitas demi beban operasional yang rendah.
  • Mesin Transit menyediakan enkripsi sebagai layanan, sehingga aplikasi tidak pernah menyimpan kunci.
  • Masukkan rahasia melalui agen atau CSI ke penyimpanan dalam memori, catat setiap akses, dan perkuat Vault sebagai aset Anda yang paling penting.

Selanjutnya, Anda akan membuat rahasia lebih aman dengan membuatnya secara dinamis dan berumur pendek.

Gratis untuk memulai

Belajar Cyber Security Academy dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
76
Pelajaran
303

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Brankas dan Penyimpanan Rahasia” gratis?

Ya — teks lengkap “Brankas dan Penyimpanan Rahasia” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Brankas dan Penyimpanan Rahasia”?

Memusatkan rahasia dengan alat seperti Vault. Kamu berlatih Cyber Security Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cyber Security Academy?

Tidak diperlukan pengalaman sebelumnya. Cyber Security Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Brankas dan Penyimpanan Rahasia” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cyber Security Academy ini?

Ya. Setiap pelajaran Cyber Security Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Masalah Rahasia yang Tersebar
  2. Brankas dan Penyimpanan Rahasia
  3. Rahasia Dinamis dan Penyewaan
  4. Rotasi Kunci dan Deteksi
← Kembali ke Cyber Security Academy