Lab ini dikembangkan dengan partner kami, Hashicorp. Informasi pribadi Anda mungkin akan dibagikan kepada Hashicorp, yang merupakan sponsor lab ini, jika Anda memilih untuk menerima info terbaru terkait produk, pengumuman, dan penawaran di Profil Akun Anda.
GSP1004
Ringkasan
Vault menggunakan kebijakan untuk mengatur perilaku klien dan menginstrumentasikan Role-Based Access Control (RBAC) dengan menentukan hak istimewa akses (otorisasi). Kebijakan menyediakan cara deklaratif untuk memberikan atau melarang akses ke jalur dan operasi tertentu. Dalam lab interaktif ini, Anda akan mempelajari cara menulis dan menggunakan kebijakan Vault.
Tujuan
Dalam lab ini, Anda akan:
- Membuat kebijakan Vault
- Mengelola kebijakan Vault
- Mengaitkan kebijakan Vault
- Memverifikasi dan menguji kebijakan Vault
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Konsol Google Cloud
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kanan terdapat panel Lab setup and access yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Kredensial sementara (nama pengguna dan sandi) yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
Perhatikan bahwa timer lab terletak di dekat bagian atas halaman, yang menampilkan waktu yang tersisa.
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab setup and access.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab setup and access.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Penggunaan akun Google Cloud sendiri untuk lab ini mungkin dikenai biaya tambahan.
-
Klik untuk melanjutkan ke halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan daftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Menginstal Vault
- Di Cloud Shell, tambahkan kunci GPG HashiCorp:
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
Catatan: Abaikan peringatan jika ada.
- Tambahkan repositori Linux HashiCorp resmi:
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
- Update dan instal Vault:
sudo apt-get update
sudo apt-get install vault
Memverifikasi penginstalan
Setelah menginstal Vault, pastikan penginstalan berhasil dengan memeriksa apakah program biner Vault tersedia.
- Jalankan perintah
vault untuk memverifikasi penginstalan:
vault
Anda akan melihat output bantuan yang mirip dengan contoh berikut:
Usage: vault <command> [args]
Common commands:
read Read data and retrieves secrets
write Write data, configuration, and secrets
delete Delete secrets and configuration
list List data or secrets
login Authenticate locally
agent Start a Vault agent
server Start a Vault server
status Print seal and HA status
unwrap Unwrap a wrapped secret
Other commands:
audit Interact with audit devices
auth Interact with auth methods
debug Runs the debug command
kv Interact with Vault's Key-Value storage
lease Interact with leases
monitor Stream log messages from a Vault server
namespace Interact with namespaces
operator Perform operator-specific tasks
path-help Retrieve API help for paths
plugin Interact with Vault plugins and catalog
policy Interact with policies
print Prints runtime configurations
secrets Interact with secrets engines
ssh Initiate an SSH session
token Interact with tokens
Tugas 2. Memulai server Vault
Setelah Vault diinstal, langkah berikutnya adalah memulai server Vault.
Vault beroperasi sebagai aplikasi klien/server. Server Vault adalah satu-satunya bagian dari arsitektur Vault yang berinteraksi dengan penyimpanan data dan backend. Semua operasi yang dilakukan melalui Vault CLI berinteraksi dengan server melalui koneksi TLS.
Di lab ini, Anda akan memulai dan berinteraksi dengan server Vault yang berjalan dalam mode pengembangan.
Server mode pengembangan (dev) ini tidak memerlukan penyiapan lebih lanjut, dan Vault CLI lokal Anda akan diautentikasi untuk berkomunikasi dengannya. Hal ini memudahkan Anda bereksperimen dengan Vault atau memulai instance Vault untuk pengembangan. Setiap fitur Vault tersedia dalam mode "dev". Flag -dev hanya mengabaikan banyak penyiapan ke default yang tidak aman.
Peringatan: Jangan pernah menjalankan server mode "dev" dalam produksi. Server dalam mode ini tidak aman dan akan kehilangan data setiap kali dimulai ulang (karena menyimpan data dalam memori). Server ini hanya dibuat untuk pengembangan atau eksperimen.
Memulai server dev
Pertama, mulai server dev Vault. Server dev adalah server bawaan yang telah dikonfigurasi sebelumnya dan tidak terlalu aman, tetapi berguna untuk bereksperimen dengan Vault secara lokal.
- Untuk memulai server dev Vault, jalankan:
vault server -dev
Anda akan melihat output yang terkait dengan konfigurasi server Vault Anda. Perhatikan bahwa nilai Unseal Key dan Root Token ditampilkan:
==> Vault server configuration:
Api Address: http://127.0.0.1:8200
Cgo: disabled
Cluster Address: https://127.0.0.1:8201
Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
Log Level: info
Mlock: supported: false, enabled: false
Recovery Mode: false
Storage: inmem
Version: Vault v1.4.1
WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory
and starts unsealed with a single unseal key. The root token is already
authenticated to the CLI, so you can immediately begin using Vault.
You may need to set the following environment variable:
$ export VAULT_ADDR='http://127.0.0.1:8200'
The unseal key and root token are displayed below in case you want to
seal/unseal the Vault or re-authenticate.
Unseal Key: 1+yv+v5mz+aSCK67X6slL3ECxb4UDL8ujWZU/ONBpn0=
Root Token: s.XmpNPoi9sRhYtdKHaQhkHP6x
Development mode should NOT be used in production installations!
Catatan: Server dev menyimpan semua datanya dalam memori (tetapi masih dienkripsi), memproses localhost tanpa TLS, dan otomatis membuka serta menampilkan kunci pembuka dan kunci akses root.
Catatan: Operasi tidak aman
Jangan menjalankan server dev Vault dalam produksi. Pendekatan ini hanya digunakan di sini untuk menyederhanakan proses pembukaan untuk demonstrasi ini.
Setelah server pengembangan Vault berjalan, Anda dapat melanjutkan penyiapan akses ke server tersebut.
-
Buka tab Cloud Shell baru.
-
Salin dan jalankan perintah ekspor VAULT_ADDR ... dari output terminal. Perintah ini akan mengonfigurasi klien Vault untuk berkomunikasi dengan server dev:
export VAULT_ADDR='http://127.0.0.1:8200'
Vault CLI menentukan server Vault mana yang akan mengirim permintaan menggunakan variabel lingkungan VAULT_ADDR.
Memastikan server berjalan
- Pastikan server berjalan dengan menjalankan perintah
vault status:
vault status
Jika berhasil dijalankan, output-nya akan terlihat seperti berikut:
$ vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 1.13.2
Build Date 2023-04-25T13:02:50z
Storage Type inmem
Cluster Name vault-cluster-e2392b81
Cluster ID 48d7aba0-5416-a36b-2c27-0b256b222f57
HA Enabled false
Bagus! Anda telah memulai server pengembangan Vault pertama Anda. Sekarang Anda dapat melanjutkan ke bagian berikutnya untuk mempelajari cara menulis kebijakan Vault.
Tugas 3. Kebijakan Vault
Vault membuat kebijakan root selama inisialisasi. Kebijakan root dapat melakukan setiap operasi untuk semua jalur. Kebijakan ini ditetapkan ke token root yang ditampilkan saat inisialisasi selesai. Hal ini menyediakan superuser awal untuk mengaktifkan mesin secret, menentukan kebijakan, dan mengonfigurasi metode autentikasi.
Vault juga membuat kebijakan default. Kebijakan default menentukan serangkaian kemampuan umum yang memungkinkan token merefleksikan dan mengelola dirinya sendiri. Kebijakan ini juga ditetapkan ke token root, dan dikaitkan ke semua token secara default.
Sintaksis kebijakan
Kebijakan ditulis dalam HCL atau JSON dan menjelaskan jalur mana di Vault yang boleh diakses oleh pengguna atau mesin. Kebijakan menentukan daftar jalur. Setiap jalur menyatakan kemampuan yang diizinkan. Kemampuan untuk suatu jalur harus diberikan, karena Vault secara default menolak kemampuan ke jalur untuk memastikan bahwa Vault aman secara default.
Format dasar kebijakan adalah sebagai berikut:
path "<path>" {
capabilities = ["list of capabilities"]
}
Berikut adalah kebijakan yang sangat sederhana yang memberikan kemampuan baca ke jalur "secret/foo":
path "secret/foo" {
capabilities = ["read"]
}
Saat kebijakan ini ditetapkan ke token, token tersebut dapat membaca dari "secret/foo". Namun, token tidak dapat memperbarui atau menghapus "secret/foo" karena kemampuannya tidak mengizinkannya. Karena kebijakan menolak secara default, token tidak akan memiliki akses lain di Vault. Artinya, kebijakan Vault yang kosong tidak memberikan izin apa pun dalam sistem.
Kemampuan
Kebijakan menentukan satu atau beberapa jalur dan daftar kemampuan yang diizinkan. Setiap jalur harus menentukan satu atau beberapa kemampuan yang memberikan kontrol terperinci atas operasi yang diizinkan (atau ditolak). Seperti yang akan Anda lihat dalam contoh di bawah, kemampuan selalu ditentukan sebagai daftar string, meskipun hanya ada satu kemampuan. Sebagian besar kemampuan ini dipetakan ke kata kerja HTTP yang didukung oleh Vault API. Berikut daftar kemampuannya:
| Kemampuan Kebijakan |
Kata Kerja HTTP Terkait |
| create |
POST/PUT |
| read |
GET |
| update |
POST/PUT |
| delete |
DELETE |
| list |
LIST |
| patch |
PATCH |
| sudo |
- |
| deny |
- |
Kemampuan sudo memungkinkan akses ke jalur yang dilindungi root (lihat bagian tutorial Endpoint yang dilindungi root). Kemampuan deny menonaktifkan akses ke jalur. Jika digabungkan dengan kemampuan lain, kemampuan ini selalu diprioritaskan.
Contoh kebijakan
Kebijakan yang lebih mendetail untuk memberikan semua akses pada "secret/*" dapat ditentukan sebagai berikut:
path "secret/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
Jika Anda ingin menentukan batasan lebih lanjut, hal ini dapat dilakukan dengan menambahkan kemampuan deny berikut:
path "secret/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
path "secret/super-secret" {
capabilities = ["deny"]
}
Meskipun Anda mengizinkan secret/*, baris tambahan di atas secara eksplisit menolak secret/super-secret. Tindakan ini lebih diprioritaskan dalam penolakan.
Kebijakan juga dapat menentukan parameter allowed, disallowed, dan required parameters. Di sini, kunci "secret/restricted" hanya dapat berisi "foo" (nilai apa pun) dan "bar" (salah satu dari "zip" atau "zap").
path "secret/restricted" {
capabilities = ["create"]
allowed_parameters = {
"foo" = []
"bar" = ["zip", "zap"]
}
}
Kebijakan menggunakan pencocokan berbasis jalur untuk menguji serangkaian kemampuan terhadap suatu permintaan. Jalur kebijakan dapat menentukan jalur yang tepat untuk dicocokkan, atau dapat menentukan pola glob yang menginstruksikan Vault untuk menggunakan pencocokan awalan.
Misalnya, kebijakan ini hanya mengizinkan pembacaan "secret/foo" atau "secret/foo/bar".
path "secret/foo" {
capabilities = ["read"]
}
Selain itu, kebijakan ini mengizinkan pembacaan semua hal di "secret/bar". Token terkait dapat membaca "secret/bar/zip", "secret/bar/zip/zap", tetapi tidak dapat membaca "secret/bars/zip".
path "secret/bar/*" {
capabilities = ["read"]
}
Selain itu, kebijakan ini akan mengizinkan pembacaan semua hal yang diawali dengan "zip-". Token yang dikaitkan dapat membaca "secret/zip-zap" atau "secret/zip-zap/zong", tetapi tidak "secret/zip/zap.
path "secret/zip-*" {
capabilities = ["read"]
}
Terakhir, + dapat digunakan untuk menunjukkan sejumlah karakter yang dibatasi dalam satu segmen jalur. Kebijakan berikut akan mengizinkan pembacaan jalur "teamb" di jalur tingkat atas mana pun di bawah secret/.
path "secret/+/teamb" {
capabilities = ["read"]
}
Kebijakan ini akan mengizinkan pembacaan secret/foo/bar/teamb, secret/bar/foo/teamb, dll.
path "secret/+/+/teamb" {
capabilities = ["read"]
}
Seperti yang Anda lihat, arsitektur Vault mirip dengan sistem file. Setiap tindakan di Vault memiliki jalur dan kemampuan yang sesuai, bahkan endpoint konfigurasi inti internal Vault berada di jalur "sys/". Kebijakan menentukan akses ke jalur dan kemampuan ini, yang mengontrol akses token ke kredensial di Vault.
Kebijakan bertemplate
Sintaksis kebijakan memungkinkan penggantian variabel dalam beberapa string kebijakan dengan nilai yang tersedia untuk token. Saat ini, informasi identity dapat disisipkan, dan saat ini kunci path dalam kebijakan mengizinkan penyisipan. Untuk saat ini, Anda tidak perlu mengkhawatirkan entity atau alias—hal ini hanya disertakan untuk referensi nanti.
Parameter
| Nama |
Deskripsi |
identity.entity.id |
ID entity |
identity.entity.name |
Nama entity |
identity.entity.metadata.<metadata key> |
Metadata yang terkait dengan entity untuk kunci yang diberikan |
identity.entity.aliases.<mount accessor>.id |
ID alias entity untuk mount yang diberikan |
identity.entity.aliases.<mount accessor>.name |
Nama alias entity untuk mount yang diberikan |
identity.entity.aliases.<mount accessor>.metadata.<metadata key> |
Metadata yang terkait dengan alias untuk kunci metadata dan mount yang diberikan |
identity.entity.aliases.<mount accessor>.custom_metadata.<custom_metadata key> |
Metadata kustom yang terkait dengan alias untuk mount dan kunci metadata kustom yang diberikan |
identity.groups.ids.<group id>.name |
Nama grup untuk ID grup yang diberikan |
identity.groups.names.<group name>.id |
ID grup untuk nama grup yang diberikan |
identity.groups.ids.<group id>.metadata.<metadata key> |
Metadata yang terkait dengan grup untuk kunci yang diberikan |
identity.groups.names.<group name>.metadata.<metadata key> |
Metadata yang terkait dengan grup untuk kunci yang diberikan |
Contoh
Kebijakan berikut membuat bagian dari KVv2 Secret Engine untuk pengguna tertentu:
path "secret/data/{{identity.entity.id}}/*" {
capabilities = ["create", "update", "read", "delete"]
}
path "secret/metadata/{{identity.entity.id}}/*" {
capabilities = ["list"]
}
Untuk mengetahui informasi selengkapnya tentang kebijakan bertemplate, lihat dokumentasi Kebijakan Bertemplate.
Catatan: Saat mengembangkan kebijakan bertemplate, gunakan ID jika memungkinkan. Setiap ID bersifat unik bagi pengguna, sedangkan nama dapat berubah seiring waktu dan dapat digunakan kembali. Hal ini memastikan bahwa jika nama pengguna atau grup tertentu diubah, kebijakan akan dipetakan ke entity atau grup yang dituju.
Memverifikasi kemampuan kebijakan bawaan
Setelah melihat cara penulisan kebijakan, mari kita lihat kemampuan kebijakan root dan default.
- Di tab Cloud Shell yang terbuka, jalankan perintah berikut untuk login ke Vault dengan token root Anda:
vault login token=<your root token>
Anda akan melihat output berikut:
Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token.
Key Value
--- -----
token s.mCWmZyVNi6ZDU7HSq7vQXwvj
token_accessor nFDgTnm7FYCHNLSERwiVsbWf
token_duration ∞
token_renewable false
token_policies ["root"]
identity_policies []
policies ["root"]
Catatan: Perhatikan bahwa kebijakan yang dikaitkan adalah kebijakan root.
- Karena kebijakan root memungkinkan Anda melakukan apa pun di Vault, jalankan perintah dasar untuk memverifikasi bahwa hal ini benar:
vault secrets list
Output Anda akan terlihat seperti berikut:
Path Type Accessor Description
---- ---- -------- -----------
cubbyhole/ cubbyhole cubbyhole_f0f2e28e per-token private secret storage
identity/ identity identity_a554d41f identity store
secret/ kv kv_ca28f047 key/value secret storage
sys/ system system_1a7dcf93 system endpoints..
Sekarang, Anda akan mencoba menjalankan perintah yang sama sebagai pengguna yang hanya memiliki kebijakan default yang terkait.
- Mulai dengan mengaktifkan metode autentikasi
userpass dan membuat pengguna baru:
vault auth enable userpass
vault write auth/userpass/users/example-user password=password!
- Selanjutnya, login ke Vault dengan pengguna baru yang Anda buat:
vault login -method=userpass username=example-user password=password!
Anda akan menerima hal berikut:
Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token.
Key Value
--- -----
token s.Ov9GkScxp5AYDjzmbdHNN4r0
token_accessor UewGCCotUMjccmD1EjssgHqf
token_duration 768h
token_renewable true
token_policies ["default"]
identity_policies []
policies ["default"]
token_meta_username example-user
Catatan: Perhatikan bahwa kebijakan yang dikaitkan adalah kebijakan default.
- Jalankan perintah yang sama seperti sebelumnya untuk memeriksa kemampuan kebijakan:
vault secrets list
Anda akan menerima error berikut:
Error listing secrets engines: Error making API request.
URL: GET http://127.0.0.1:8200/v1/sys/mounts
Code: 403. Errors:
* 1 error occurred:
* permission denied
Seperti yang Anda lihat di sini, Vault membuat permintaan API GET ke jalur sys/mounts. Karena Anda menerima error penolakan izin, Anda tidak dapat mengakses jalur dan menampilkan daftar mesin secret. Sekarang saatnya menulis kebijakan pertama Anda untuk mendapatkan akses ke jalur ini dan menampilkan daftar mesin secret.
Tugas 4. Membuat kebijakan
Karena Vault mengamankan, menyimpan, dan mengontrol akses ke secret secara terpusat di seluruh infrastruktur dan aplikasi yang terdistribusi, sangat penting untuk mengontrol izin sebelum pengguna atau mesin dapat memperoleh akses.
Solusinya adalah dengan membatasi penggunaan kebijakan root, dan menulis kebijakan yang mendetail untuk mempraktikkan hak istimewa terendah. Misalnya, jika aplikasi mendapatkan kredensial Google Cloud dari Vault, tulis kebijakan yang memberikan izin untuk membaca dari mesin secret Google Cloud, tetapi tidak untuk menghapus, dll.
Kebijakan dikaitkan ke token dan peran untuk memberlakukan izin klien di Vault. Setelah melihat cara kebijakan didefinisikan secara sintaksis, sekarang saatnya menulis kebijakan Vault pertama Anda.
Login ke UI web Vault
- Pertama, klik ikon Web preview di toolbar Cloud Shell.

-
Klik Change port.
-
Ubah Nomor Port ke 8200 dan klik Change and Preview.

- Anda akan dialihkan ke halaman login Vault.

- Masukkan Root Token yang Anda simpan sebelumnya di lab, lalu klik Sign In.
Server pengembangan Vault Anda akan terlihat seperti berikut.

Setelah login ke UI web server pengembangan, Anda dapat melanjutkan ke bagian berikutnya.
Membuat kebijakan baru
- Klik Access control dari halaman beranda. Anda akan melihat kebijakan ACL
default dan root.

-
Klik Create ACL policy.
-
Mulailah dengan menamai kebijakan Anda demo-policy.
Sekarang Anda dapat mulai menulis kebijakan. Ingat kembali di bagian sebelumnya, Anda tidak dapat mengakses jalur sys/mounts untuk membaca mesin secret. Anda akan menambahkannya sekarang.
- Di Policy rules, pilih Code editor dan tambahkan kode placeholder berikut:
path "path" {
capabilities = [""]
}
- Sekarang, mari kita perbarui
path ke jalur sys/mounts yang Anda coba akses sebelumnya:
path "sys/mounts" {
capabilities = [""]
}
- Selanjutnya, Anda akan menambahkan kemampuan. Karena Vault mencoba melakukan panggilan API GET di jalur ini, Anda harus memiliki kemampuan
read. Tambahkan read ke daftar kemampuan:
path "sys/mounts" {
capabilities = ["read"]
}
Kebijakan Anda akan terlihat seperti berikut:

- Klik Create policy.
Sekarang, Anda perlu mengaitkan kebijakan ini dengan example-user yang Anda buat sebelumnya.
-
Klik Back to main navigation.
-
Klik Access > Authentication methods dari panel kiri, lalu klik userpass.

- Klik tiga titik di samping pengguna
example-user, lalu pilih Edit user.

-
Di bagian kolom sandi, klik Tokens untuk membuka submenu.
-
Di bagian Generated Token's Policies, tambahkan kebijakan yang baru saja Anda buat (demo-policy), lalu klik Add.

- Klik Save.
Bagus! Anda telah membuat kebijakan baru dan mengaitkannya dengan example-user.
- Kembali ke Cloud Shell dan jalankan perintah berikut lagi:
vault secrets list
Anda akan melihat error yang sama seperti sebelumnya:
Error listing secrets engines: Error making API request.
URL: GET http://127.0.0.1:8200/v1/sys/mounts
Code: 403. Errors:
* 1 error occurred:
* permission denied
Mengapa terjadi error setelah Anda menambahkan kebijakan ke pengguna? Hal ini karena setelah Anda mengaitkan kebijakan baru dengan user, kebijakan tersebut tidak akan dikaitkan dengan token yang ada untuk pengguna tersebut. Untuk memperbaikinya, Anda harus membuat token baru untuk pengguna tersebut agar kebijakan baru dapat dikaitkan ke token tersebut.
- Jalankan perintah berikut untuk login dan membuat token baru untuk
example-user:
vault login -method=userpass username=example-user password=password!
Catatan: Anda akan menerima token baru pada output. Perhatikan bahwa Anda sekarang memiliki kebijakan default dan demo-policy yang terkait.
Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token.
Key Value
--- -----
token s.7AVelOPORi1zhjH5iLototw7
token_accessor H1ee2gTXzTXUU9ptpU3ailnJ
token_duration 768h
token_renewable true
token_policies ["default" "demo-policy"]
identity_policies []
policies ["default" "demo-policy"]
token_meta_username example-user
- Sekarang, coba tampilkan daftar mesin secret sekali lagi:
vault secrets list
Output Anda kini akan terlihat seperti berikut:
Path Type Accessor Description
---- ---- -------- -----------
cubbyhole/ cubbyhole cubbyhole_76cb59ae per-token private secret storage
identity/ identity identity_7fa27e52 identity store
secret/ kv kv_f6e83366 key/value secret storage
sys/ system system_414d50aa system endpoints..
- Anda juga dapat memeriksa kemampuan token menggunakan perintah
vault token capabilities. Jalankan perintah berikut untuk memverifikasi kebijakan Anda di jalur sys/mounts:
vault token capabilities <your token> sys/mounts
Output Anda akan terlihat seperti berikut:
read
- Selanjutnya, periksa kemampuan token untuk jalur
sys/policies/acl:
vault token capabilities <your token> sys/policies/acl
Output Anda akan terlihat seperti berikut:
deny
- Guna memverifikasi hal ini, coba jalankan perintah berikut untuk menampilkan daftar kebijakan:
vault policy list
Anda akan menerima error berikut:
Error listing policies: Error making API request.
URL: GET http://127.0.0.1:8200/v1/sys/policies/acl?list=trueCode: 403. Errors:
* 1 error occurred:
* permission denied
Seperti yang Anda lihat di sini, Anda mendapatkan error izin ditolak untuk permintaan API GET di jalur sys/policies/acl. Perhatikan juga list=true tambahan di jalur tersebut; Anda juga perlu menambahkan kemampuan ini. Mari kita perbaiki hal ini dengan memperbarui kebijakan yang ada.
- Buka kembali
demo-policy yang Anda buat di UI Vault.

-
Klik Edit policy.
-
Di kotak Policy, tambahkan kode placeholder berikut di bawah kebijakan yang telah Anda tulis:
path "path" {
capabilities = [""]
}
- Sekali lagi, mari kita perbarui
path ke jalur sys/policies/acl yang Anda coba akses:
path "sys/policies/acl" {
capabilities = [""]
}
- Sekarang Anda akan menambahkan kemampuan tersebut. Karena Vault mencoba melakukan panggilan API GET di jalur ini, Anda perlu menambahkan kemampuan
read lagi. Selain itu, upaya tersebut diteruskan dalam list=true ke URL, jadi Anda juga perlu menambahkan kemampuan ini.
path "sys/policies/acl" {
capabilities = ["read", "list"]
}
Kebijakan Anda yang telah diperbarui sekarang akan terlihat seperti berikut:

-
Klik Save.
-
Kembali ke Cloud Shell dan jalankan perintah berikut lagi:
vault policy list
Output Anda sekarang akan terlihat seperti ini:
default
default-ceiling
demo-policy
root
- Jalankan perintah berikut untuk menyalin nilai kebijakan ke file teks:
vault policy list > policies.txt
- Terakhir, periksa kembali kemampuan token untuk jalur
sys/policies/acl:
vault token capabilities <your token> sys/policies/acl
Output Anda akan terlihat seperti berikut:
list, read
- Jalankan perintah berikut untuk menyalin nilai kebijakan ke file teks. Pastikan untuk mengganti
<your token> dengan nilai token Anda:
vault token capabilities <your token> sys/policies/acl > token_capabilities.txt
- Jalankan perintah berikut untuk menyalin file teks
policies dan token_capabilities ke bucket Cloud Storage yang telah dibuat sebelumnya untuk melacak progres Anda:
export PROJECT_ID=$(gcloud config get-value project)
gcloud storage cp *.txt gs://$PROJECT_ID
Seperti yang Anda lihat, saat Anda memodifikasi kebijakan yang ada serta terkait dengan pengguna, perubahan akan tercermin tanpa menghasilkan token baru. Hal ini karena konten kebijakan diurai secara real-time setiap kali token digunakan. Akibatnya, jika kebijakan dimodifikasi, aturan yang dimodifikasi akan diterapkan saat token, dengan kebijakan yang dikaitkan tersebut, digunakan untuk melakukan panggilan ke Vault.
Bagus! Anda telah berhasil membuat kebijakan yang memberikan akses baca ke jalur sys/mounts dan mengaitkannya dengan pengguna. Kemudian, Anda menambahkan kebijakan tambahan untuk memberikan akses read dan list ke jalur sys/policies.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat kebijakan
Tugas 5. Mengelola kebijakan
Kebijakan ditulis (dibuat) di editor pilihan Anda. File ini dapat dibuat dalam HCL atau JSON, dan sintaksisnya dijelaskan secara mendetail di atas. Setelah disimpan, kebijakan harus diupload ke Vault sebelum dapat digunakan.
Di bagian sebelumnya, Anda menggunakan UI untuk menulis dan mengelola kebijakan. Bagian ini akan membahas perintah CLI untuk mengelola kebijakan.
- Pertama, pastikan untuk menjalankan perintah berikut di Cloud Shell untuk login ke Vault dengan token root Anda:
vault login <your root token>
Menampilkan daftar kebijakan
- Jalankan perintah berikut untuk menampilkan daftar semua kebijakan yang terdaftar di Vault:
vault read sys/policy
Anda akan melihat output berikut:
Key Value
--- -----
keys [default demo-policy root]
policies [default demo-policy root
Membuat kebijakan
Kebijakan dapat dibuat (diupload) melalui CLI, UI, atau API. Di bagian sebelumnya, Anda hanya menggunakan UI untuk membuat file HCL.
Untuk membuat kebijakan baru di Vault, Anda akan menggunakan perintah berikut:
vault policy write policy-name policy-file.hcl
- Anda dapat mengujinya dengan membuat file kebijakan dasar terlebih dahulu dengan perintah berikut:
tee example-policy.hcl <<EOF
# List, create, update, and delete key/value secrets
path "secret/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Manage secrets engines
path "sys/mounts/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# List existing secrets engines.
path "sys/mounts"
{
capabilities = ["read"]
}
EOF
- Periksa apakah file Anda telah dibuat dengan benar:
cat example-policy.hcl
- Sekarang, buat kebijakan baru bernama
example-policy dengan perintah vault policy write:
vault policy write example-policy example-policy.hcl
Jika berhasil, Anda akan melihat output berikut:
Success! Uploaded policy: example-policy
Dalam contoh ini, nama kebijakannya adalah "example-policy". Anda dapat menganggap nama ini sebagai pointer atau symlink ke ACL kebijakan. Token adalah kebijakan yang dikaitkan berdasarkan nama, yang kemudian dipetakan ke sekumpulan aturan yang sesuai dengan nama tersebut.
Memperbarui kebijakan
Kebijakan yang ada dapat diperbarui untuk mengubah izin melalui CLI atau API. Untuk memperbarui kebijakan yang ada di Vault, Anda akan mengikuti langkah yang sama seperti membuat kebijakan, tetapi menggunakan nama kebijakan yang ada.
- Pertama, jalankan perintah berikut untuk memperbarui dan menimpa file kebijakan yang ada agar dapat menampilkan daftar metode autentikasi:
tee example-policy.hcl <<EOF
# List, create, update, and delete key/value secrets
path "secret/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Manage secrets engines
path "sys/mounts/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# List existing secrets engines.
path "sys/mounts"
{
capabilities = ["read"]
}
# List auth methods
path "sys/auth"
{
capabilities = ["read"]
}
EOF
- Periksa apakah file Anda telah dibuat dengan benar:
cat example-policy.hcl
- Perbarui kebijakan Anda:
vault write sys/policy/example-policy policy=@example-policy.hcl
Bagus! Anda telah berhasil memperbarui kebijakan menggunakan CLI.
- Jalankan perintah berikut untuk menyalin file kebijakan ke bucket Cloud Storage yang telah dibuat sebelumnya untuk melacak progres Anda:
gcloud storage cp example-policy.hcl gs://$PROJECT_ID
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat dan mengelola kebijakan menggunakan perintah CLI
Menghapus kebijakan
Kebijakan yang ada dapat dihapus melalui CLI, UI, atau API. Untuk menghapus kebijakan, jalankan perintah berikut:
vault delete sys/policy/policy-name
- Mari kita coba praktikkan. Jalankan perintah berikut untuk menghapus kebijakan yang baru saja Anda buat:
vault delete sys/policy/example-policy
Jika berhasil, Anda akan melihat output berikut:
Success! Data deleted (if it existed) at: sys/policy/example-policy
- Tampilkan daftar kebijakan Anda dengan perintah berikut:
vault policy list
Anda akan melihat output berikut:
default
default-ceiling
demo-policy
root
Bagus! Anda telah berhasil menghapus example-policy.
Catatan: Ini adalah operasi idempoten. Vault tidak akan menampilkan error saat menghapus kebijakan yang tidak ada.
Tugas 6. Mengaitkan kebijakan
Vault dapat otomatis mengaitkan serangkaian kebijakan ke token berdasarkan otorisasi. Konfigurasi ini sangat bervariasi di antara backend autentikasi. Agar lebih mudah, contoh ini akan menggunakan metode autentikasi userpass bawaan Vault.
- Jalankan perintah berikut untuk membuat pengguna
firstname-lastname di Vault dengan daftar kebijakan terkait:
vault write auth/userpass/users/firstname-lastname \
password="s3cr3t!" \
policies="default, demo-policy"
Success! Data written to: auth/userpass/users/firstname-lastname
Tindakan ini akan membuat pemetaan autentikasi ke kebijakan sehingga, saat pengguna berhasil melakukan autentikasi ke Vault, mereka akan diberi token yang memiliki daftar kebijakan yang terkait.
- Lakukan autentikasi dengan Vault dengan menjalankan perintah berikut:
vault login -method="userpass" username="firstname-lastname" password="s3cr3t!"
Anda akan melihat output berikut:
Key Value
--- -----
token s.XnRsinhsokVUiN7XbsnyCOEC
token_accessor JFErk5Rgb7vtW47CJjY2OCsF
token_duration 768h
token_renewable true
token_policies ["default" "demo-policy"]
identity_policies []
policies ["default" "demo-policy"]
token_meta_username firstname-lastname
Karena informasi yang diberikan sudah benar, Vault akan membuat token, menetapkan daftar kebijakan yang dikonfigurasi ke token, dan menampilkan token tersebut kepada pengguna yang diautentikasi.
Token
Token memiliki dua kumpulan kebijakan: kebijakan identitas, yang dihitung berdasarkan entity dan grupnya, serta kebijakan token, yang ditentukan berdasarkan metode login atau, dalam kasus pembuatan token eksplisit melalui API, merupakan input untuk pembuatan token. Berikut adalah kebijakan token secara eksklusif: kebijakan identitas token tidak dapat dikontrol kecuali dengan mengubah entity, grup, dan keanggotaan grup yang mendasarinya.
- Pertama, login kembali ke Vault dengan token root Anda:
vault login <your root token>
- Token dikaitkan dengan kebijakannya pada saat pembuatan. Jalankan perintah berikut untuk membuat token dengan kebijakan
dev-readonly dan logs:
vault token create -policy=dev-readonly -policy=logs
Anda akan melihat output berikut:
Key Value
--- -----
token s.gKRV6vzFmpdJ9iwvPfzNjAuI
token_accessor S4jfdYvy8jQP7GGDa947CBlT
token_duration 768h
token_renewable true
token_policies ["default" "dev-readonly" "logs"]
identity_policies []
policies ["default" "dev-readonly" "logs"]
Catatan: Anda dapat mengabaikan peringatan bahwa kebijakan tidak ada, karena Anda belum membuatnya.
Biasanya, satu-satunya kebijakan yang dapat ditentukan adalah kebijakan yang ada dalam kebijakan token saat ini (yaitu induk token baru). Namun, pengguna root dapat menetapkan kebijakan apa pun.
Tidak ada cara untuk memodifikasi kebijakan yang terkait dengan token setelah token diterbitkan. Token harus dicabut dan token baru harus diperoleh untuk menerima serangkaian kebijakan baru.
Namun, konten kebijakan diuraikan secara real time setiap kali token digunakan. Akibatnya, jika kebijakan dimodifikasi, aturan yang dimodifikasi akan diterapkan saat token, dengan kebijakan yang dikaitkan tersebut, digunakan untuk melakukan panggilan ke Vault.
Tugas 7. Kebijakan untuk secret
Di bagian ini, Anda akan membuat kebijakan Vault untuk memberikan tingkat akses yang berbeda kepada pengguna dalam Vault dan mengujinya.
- Di Cloud Shell, mulailah dengan membuat beberapa pengguna berbeda dengan kebijakan yang berbeda:
vault write auth/userpass/users/admin \
password="admin123" \
policies="admin"
vault write auth/userpass/users/app-dev \
password="appdev123" \
policies="appdev"
vault write auth/userpass/users/security \
password="security123" \
policies="security"
Setelah membuat beberapa pengguna baru, Anda akan membuat kebijakan yang telah Anda kaitkan dengan mereka. Anda akan memulai dengan kebijakan admin, yang harus dapat memiliki akses penuh ke semua secret di Vault.
Membuat kebijakan admin
Untuk tujuan lab ini, pengguna admin harus dapat:
- Membaca health check sistem
- Membuat dan mengelola kebijakan ACL secara luas di seluruh Vault
- Mengaktifkan dan mengelola metode autentikasi secara luas di Vault
- Mengelola mesin secret Key/Value yang diaktifkan di jalur
secret/
-
Buka ACL policies dari panel kiri di UI Vault. Anda akan melihat kebijakan default, default-ceiling, demo-policy, dan root.
-
Klik Create ACL policy.
-
Mulailah dengan memberi nama kebijakan Anda admin.
-
Di Policy rules, pilih Code editor dan tambahkan kode kebijakan berikut:
# Read system health check
path "sys/health"
{
capabilities = ["read", "sudo"]
}
# Create and manage ACL policies broadly across Vault
# List existing policies
path "sys/policies/acl"
{
capabilities = ["list"]
}
# Create and manage ACL policies
path "sys/policies/acl/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Enable and manage authentication methods broadly across Vault
# Manage auth methods broadly across Vault
path "auth/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Create, update, and delete auth methods
path "sys/auth/*"
{
capabilities = ["create", "update", "delete", "sudo"]
}
# List auth methods
path "sys/auth"
{
capabilities = ["read"]
}
# Enable and manage the key/value secrets engine at `secret/` path
# List, create, update, and delete key/value secrets
path "secret/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Manage secrets engines
path "sys/mounts/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# List existing secrets engines.
path "sys/mounts"
{
capabilities = ["read"]
}
Kebijakan Anda akan terlihat seperti berikut:

- Klik Create policy.
Membuat kebijakan appdev
Untuk tujuan lab ini, pengguna appdev harus dapat:
- Membuat, membaca, dan memperbarui mesin secret
- Mengelola mesin secret Key/Value yang diaktifkan di jalur
secret/appdev/
-
Kembali ke halaman ACL Policies.
-
Klik Create ACL policy.
-
Mulailah dengan memberi nama kebijakan Anda appdev.
-
Di Policy rules, pilih Code editor dan tambahkan kode kebijakan berikut:
# List, create, update, and delete key/value secrets
path "secret/+/appdev/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Create, read, and update secrets engines
path "sys/mounts/*"
{
capabilities = ["create", "read", "update"]
}
# List existing secrets engines.
path "sys/mounts"
{
capabilities = ["read"]
}
- Klik Create policy.
Membuat kebijakan keamanan
Untuk tujuan lab ini, pengguna security harus dapat:
- Membuat dan mengelola kebijakan ACL secara luas di seluruh Vault
- Mengelola mesin secret
- Mengelola mesin secret Key/Value yang diaktifkan di jalur
secret/
- Tidak memiliki akses untuk membaca atau menampilkan daftar secret di jalur
secret/admin
-
Kembali ke halaman ACL Policies.
-
Klik Create ACL policy.
-
Mulailah dengan memberi nama kebijakan Anda security.
-
Di Policy rules, pilih Code editor dan tambahkan kode kebijakan berikut:
# List existing policies
path "sys/policies/acl"
{
capabilities = ["list"]
}
# Create and manage ACL policies
path "sys/policies/acl/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Manage secrets engines
path "sys/mounts/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# List existing secrets engines.
path "sys/mounts"
{
capabilities = ["read"]
}
# List, create, update, and delete key/value secrets
path "secret/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
# Deny access to secret/admin
path "secret/data/admin" {
capabilities = ["deny"]
}
path "secret/data/admin/*" {
capabilities = ["deny"]
}
# Deny list access to secret/admin
path "secret/metadata/admin" {
capabilities = ["deny"]
}
path "secret/metadata/admin/*" {
capabilities = ["deny"]
}
- Klik Create policy.
Membuat secret
Setelah membuat berbagai kebijakan, sekarang saatnya membuat beberapa secret.
- Kembali ke Cloud Shell dan jalankan perintah berikut untuk membuat beberapa secret di jalur
secret/security:
vault kv put secret/security/first username=password
vault kv put secret/security/second username=password
- Buat beberapa secret di jalur
secret/appdev:
vault kv put secret/appdev/first username=password
vault kv put secret/appdev/beta-app/second username=password
- Buat beberapa secret di jalur
secret/admin:
vault kv put secret/admin/first admin=password
vault kv put secret/admin/supersecret/second admin=password
Memverifikasi keamanan untuk appdev
Setelah Anda membuat beberapa secret, mari kita verifikasi bahwa kebijakan ini diterapkan. Pertama-tama, Anda akan login sebagai pengguna app-dev dan melihat apa yang dapat Anda akses.
- Jalankan perintah berikut untuk login sebagai pengguna
app-dev:
vault login -method="userpass" username="app-dev" password="appdev123"
- Sekarang, coba ambil secret
appdev/first:
vault kv get secret/appdev/first
Anda akan melihat output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:13.18635501Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
username password
- Ambil secret yang ada di
secret/appdev/beta-app/second:
vault kv get secret/appdev/beta-app/second
Anda akan melihat output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:13.829274247Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
username password
- Buat secret baru:
vault kv put secret/appdev/appcreds credentials=creds123
- Hancurkan secret:
vault kv destroy -versions=1 secret/appdev/appcreds
- Coba dapatkan secret dari
secret/security:
vault kv get secret/security/first
Anda akan menerima error berikut:
Error reading secret/data/security/first: Error making API request.
URL: GET http://127.0.0.1:8200/v1/secret/data/security/first
Code: 403. Errors:
* 1 error occurred:
* permission denied
- Coba tampilkan daftar semua secret di
secret/:
vault kv list secret/
Anda akan menerima error lagi:
Error listing secret/metadata: Error making API request.
URL: GET http://127.0.0.1:8200/v1/secret/metadata?list=true
Code: 403. Errors:
* 1 error occurred:
* permission denied
Bagus! Anda dapat mengambil dan membuat secret di jalur secret/appdev, serta memverifikasi bahwa Anda tidak dapat mengakses secret di luar jalur tersebut.
Memverifikasi kebijakan untuk keamanan
- Jalankan perintah berikut untuk login sebagai pengguna
security:
vault login -method="userpass" username="security" password="security123"
- Sekarang, coba ambil secret
security/first:
vault kv get secret/security/first
Anda akan melihat output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:04.299036073Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
username password
- Ambil secret yang ada di
secret/security/second:
vault kv get secret/security/second
Anda akan melihat output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:13.829274247Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
username password
- Buat secret baru di
secret/security/supersecure:
vault kv put secret/security/supersecure/bigsecret secret=idk
- Hancurkan secret:
vault kv destroy -versions=1 secret/security/supersecure/bigsecret
- Coba baca secret dari
secret/appdev:
vault kv get secret/appdev/first
Anda akan menerima output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:13.18635501Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
username password
- Coba tampilkan daftar semua secret di
secret/:
vault kv list secret/
Anda akan menerima output berikut:
Keys
----
admin/
appdev/
security/
- Aktifkan mesin secret baru:
vault secrets enable -path=supersecret kv
Success! Enabled the kv secrets engine at: supersecret/
- Coba lihat secret
secret/admin/first:
vault kv get secret/admin/first
Anda akan menerima error berikut:
Error reading secret/data/admin/first: Error making API request.
URL: GET http://127.0.0.1:8200/v1/secret/data/admin/first
Code: 403. Errors:
* 1 error occurred:
* permission denied
- Coba tampilkan daftar secret di
secret/admin:
vault kv list secret/admin
Sekali lagi, Anda akan menerima error:
Error listing secret/metadata/admin: Error making API request.
URL: GET http://127.0.0.1:8200/v1/secret/metadata/admin?list=true
Code: 403. Errors:
* 1 error occurred:
* permission denied
Bagus! Anda dapat mengambil dan membuat secret di jalur secret/, mengaktifkan mesin secret, dan ditolak aksesnya ke jalur secret/admin seperti yang ditentukan dalam kebijakan.
Memverifikasi kebijakan untuk admin
- Jalankan perintah berikut untuk login sebagai pengguna
admin:
vault login -method="userpass" username="admin" password="admin123"
- Sekarang, coba ambil secret
admin/first:
vault kv get secret/admin/first
Anda akan melihat output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:18.521925218Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
==== Data ====
Key Value
--- -----
admin password
- Ambil secret yang ada di
secret/security/first :
vault kv get secret/security/first
Anda akan melihat output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:04.299036073Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
username password
- Buat secret baru:
vault kv put secret/webserver/credentials web=awesome
- Hancurkan secret:
vault kv destroy -versions=1 secret/webserver/credentials
- Coba dapatkan secret dari
secret/appdev:
vault kv get secret/appdev/first
Anda akan menerima output berikut:
======= Metadata =======
Key Value
--- -----
created_time 2022-01-12T18:58:13.18635501Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
username password
- Coba tampilkan daftar semua secret di
secret/appdev:
vault kv list secret/appdev/
Anda akan menerima output berikut:
Keys
----
appcreds
beta-app/
first
- Tampilkan daftar semua kebijakan:
vault policy list
Anda akan menerima output berikut:
admin
appdev
default
default-ceiling
demo-policy
security
root
- Jalankan perintah berikut untuk menyalin nilai kebijakan ke file teks dan menguploadnya ke bucket Cloud Storage:
vault policy list > policies-update.txt
gcloud storage cp policies-update.txt gs://$PROJECT_ID
- Aktifkan metode autentikasi
gcp:
vault auth enable gcp
- Terakhir, tampilkan daftar metode autentikasi yang diaktifkan:
vault auth list
Path Type Accessor Description
---- ---- -------- -----------
gcp/ gcp auth_gcp_faa3d15f n/a
token/ token auth_token_066c5ebd token based credentials
userpass/ userpass auth_userpass_929fe9bd n/a
Bagus, Anda telah memverifikasi bahwa Anda memiliki hak istimewa admin yang terkait dengan kebijakan yang Anda tulis.
Klik Periksa progres saya untuk memverifikasi tujuan.
Kebijakan untuk Secret
Jalur
Seperti yang mungkin telah Anda lihat dalam kode kebijakan yang disediakan untuk pengguna security, ada beberapa topik yang diperkenalkan serta belum pernah Anda lihat sebelumnya: data/ dan metadata/.
Endpoint jalur metadata/ menampilkan daftar nama kunci di lokasi yang ditentukan. Selain itu, nilai itu sendiri tidak dapat diakses dengan perintah ini. Penulisan dan pembacaan versi diawali dengan data/. Pencantuman daftar, pembacaan, dan penghancuran adalah sebagai berikut:
-
Penulisan dan Pembacaan Versi:
data/
-
Pencantuman Daftar Kunci:
metadata/
-
Pembacaan versi:
metadata/
-
Penghancuran Versi Secret:
destroy/
-
Penghancuran semua versi metadata untuk sebuah kunci:
metadata/
Misalnya, jika Anda mencoba menolak akses ke secret di secret/example, Anda harus memformatnya dengan data/ berikut:
path "secret/data/example" {
capabilities = ["deny"]
}
Jika Anda ingin menolak akses pencantuman daftar ke secret/examples, Anda perlu memformatnya dengan metadata/ berikut:
path "secret/metadata/examples/*" {
capabilities = ["deny"]
}
Tugas 8. Kontrol terperinci
Selain serangkaian kemampuan standar, Vault menawarkan kontrol yang lebih terperinci atas izin di jalur tertentu. Kemampuan yang terkait dengan jalur lebih diutamakan daripada izin pada parameter.
Batasan parameter
Di Vault, data direpresentasikan sebagai pasangan key=value. Kebijakan Vault dapat secara opsional membatasi jalur lebih lanjut berdasarkan kunci dan data pada kunci tersebut saat mengevaluasi izin untuk suatu jalur. Berikut adalah opsi kontrol opsional yang lebih terperinci:
-
required_parameters: Daftar parameter yang harus ditentukan.
-
allowed_parameters: Daftar kunci dan nilai yang diizinkan di jalur yang ditentukan.
-
denied_parameters: Menolak daftar parameter dan nilai. Setiap nilai yang ditentukan di sini akan lebih diprioritaskan daripada allowed_parameters
Untuk mengetahui informasi selengkapnya tentang kontrol terperinci, lihat dokumentasi Kontrol Terperinci.
Selamat!
Seperti yang Anda lihat, kebijakan adalah bagian penting dari Vault. Meskipun menggunakan token root adalah cara termudah untuk memulai dan menjalankan Vault, Anda harus membatasi akses ke Vault dengan sangat cepat, dan sistem kebijakan adalah cara untuk melakukannya.
Sintaksis dan fungsi kebijakan mudah dipahami dan digunakan, dan karena semua metode autentikasi harus dipetakan ke sistem kebijakan pusat, Anda hanya perlu mempelajari sistem kebijakan ini.
Di lab ini, Anda telah membuat dan mengelola kebijakan, mengaitkannya dengan pengguna dan token, serta memverifikasi izinnya.
Langkah berikutnya/Pelajari lebih lanjut
Lihat referensi berikut untuk mengetahui informasi selengkapnya tentang Vault
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 4 Juni 2026
Lab Terakhir Diuji pada 4 Juni 2026
Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.