Create policies

Periksa progres saya

/ 30

Create and manage policies using CLI commands

Periksa progres saya

/ 35

Policies for Secrets

Periksa progres saya

/ 35

Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Konten ini belum dioptimalkan untuk perangkat seluler.
Untuk pengalaman terbaik, kunjungi kami dengan komputer desktop menggunakan link yang dikirim melalui email.

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

Lab mandiri Google Cloud

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

  1. 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.

  2. 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.
  3. 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.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab setup and access.

  6. 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.
  7. 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. Ikon Navigation menu dan 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.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas Konsol Google Cloud.

  2. 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.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

Output:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Untuk menetapkan akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (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

  1. Di Cloud Shell, tambahkan kunci GPG HashiCorp:
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - Catatan: Abaikan peringatan jika ada.
  1. Tambahkan repositori Linux HashiCorp resmi:
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
  1. 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.

  1. 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.

  1. Buka tab Cloud Shell baru.

  2. 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.

  1. 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.
  1. 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.

  1. Mulai dengan mengaktifkan metode autentikasi userpass dan membuat pengguna baru:
vault auth enable userpass vault write auth/userpass/users/example-user password=password!
  1. 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.
  1. 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

  1. Pertama, klik ikon Web preview di toolbar Cloud Shell.

Ikon Web preview

  1. Klik Change port.

  2. Ubah Nomor Port ke 8200 dan klik Change and Preview.

Kotak dialog Change Preview Port, yang mencakup tombol Change and Preview.

  1. Anda akan dialihkan ke halaman login Vault.

Halaman login ke Vault.

  1. Masukkan Root Token yang Anda simpan sebelumnya di lab, lalu klik Sign In.

Server pengembangan Vault Anda akan terlihat seperti berikut.

Halaman Secret Engines, yang mencakup cubbyhole/ dan secret/ yang tercantum, beserta tombol Enable new engine.

Setelah login ke UI web server pengembangan, Anda dapat melanjutkan ke bagian berikutnya.

Membuat kebijakan baru

  1. Klik Access control dari halaman beranda. Anda akan melihat kebijakan ACL default dan root.

Halaman ACL Policies, yang mencantumkan dua kebijakan ACL.

  1. Klik Create ACL policy.

  2. 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.

  1. Di Policy rules, pilih Code editor dan tambahkan kode placeholder berikut:
path "path" { capabilities = [""] }
  1. Sekarang, mari kita perbarui path ke jalur sys/mounts yang Anda coba akses sebelumnya:
path "sys/mounts" { capabilities = [""] }
  1. 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:

Kode yang dimasukkan di halaman Policy.

  1. Klik Create policy.

Sekarang, Anda perlu mengaitkan kebijakan ini dengan example-user yang Anda buat sebelumnya.

  1. Klik Back to main navigation.

  2. Klik Access > Authentication methods dari panel kiri, lalu klik userpass.

Halaman Authentication Methods.

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

Halaman tab Users di Userpass, dengan menu More yang diperluas

  1. Di bagian kolom sandi, klik Tokens untuk membuka submenu.

  2. Di bagian Generated Token's Policies, tambahkan kebijakan yang baru saja Anda buat (demo-policy), lalu klik Add.

Tombol Add

  1. Klik Save.

Bagus! Anda telah membuat kebijakan baru dan mengaitkannya dengan example-user.

  1. 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.

  1. 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
  1. 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..
  1. 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
  1. Selanjutnya, periksa kemampuan token untuk jalur sys/policies/acl:
vault token capabilities <your token> sys/policies/acl

Output Anda akan terlihat seperti berikut:

deny
  1. 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.

  1. Buka kembali demo-policy yang Anda buat di UI Vault.

Halaman demo-policy

  1. Klik Edit policy.

  2. Di kotak Policy, tambahkan kode placeholder berikut di bawah kebijakan yang telah Anda tulis:

path "path" { capabilities = [""] }
  1. Sekali lagi, mari kita perbarui path ke jalur sys/policies/acl yang Anda coba akses:
path "sys/policies/acl" { capabilities = [""] }
  1. 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:

Kode Kebijakan yang diperbarui.

  1. Klik Save.

  2. 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
  1. Jalankan perintah berikut untuk menyalin nilai kebijakan ke file teks:
vault policy list > policies.txt
  1. 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
  1. 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
  1. 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
  1. 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
  1. Periksa apakah file Anda telah dibuat dengan benar:
cat example-policy.hcl
  1. 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.

  1. 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
  1. Periksa apakah file Anda telah dibuat dengan benar:
cat example-policy.hcl
  1. Perbarui kebijakan Anda:
vault write sys/policy/example-policy policy=@example-policy.hcl

Bagus! Anda telah berhasil memperbarui kebijakan menggunakan CLI.

  1. 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
  1. 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
  1. 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.

  1. 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.

  1. 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.

  1. Pertama, login kembali ke Vault dengan token root Anda:
vault login <your root token>
  1. 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/
  1. Buka ACL policies dari panel kiri di UI Vault. Anda akan melihat kebijakan default, default-ceiling, demo-policy, dan root.

  2. Klik Create ACL policy.

  3. Mulailah dengan memberi nama kebijakan Anda admin.

  4. 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:

Halaman Policy yang diperbarui.

  1. 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/
  1. Kembali ke halaman ACL Policies.

  2. Klik Create ACL policy.

  3. Mulailah dengan memberi nama kebijakan Anda appdev.

  4. 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"] }
  1. 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
  1. Kembali ke halaman ACL Policies.

  2. Klik Create ACL policy.

  3. Mulailah dengan memberi nama kebijakan Anda security.

  4. 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"] }
  1. Klik Create policy.

Membuat secret

Setelah membuat berbagai kebijakan, sekarang saatnya membuat beberapa secret.

  1. 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
  1. 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
  1. 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.

  1. Jalankan perintah berikut untuk login sebagai pengguna app-dev:
vault login -method="userpass" username="app-dev" password="appdev123"
  1. 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
  1. 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
  1. Buat secret baru:
vault kv put secret/appdev/appcreds credentials=creds123
  1. Hancurkan secret:
vault kv destroy -versions=1 secret/appdev/appcreds
  1. 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
  1. 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

  1. Jalankan perintah berikut untuk login sebagai pengguna security:
vault login -method="userpass" username="security" password="security123"
  1. 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
  1. 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
  1. Buat secret baru di secret/security/supersecure:
vault kv put secret/security/supersecure/bigsecret secret=idk
  1. Hancurkan secret:
vault kv destroy -versions=1 secret/security/supersecure/bigsecret
  1. 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
  1. Coba tampilkan daftar semua secret di secret/:
vault kv list secret/

Anda akan menerima output berikut:

Keys ---- admin/ appdev/ security/
  1. Aktifkan mesin secret baru:
vault secrets enable -path=supersecret kv Success! Enabled the kv secrets engine at: supersecret/
  1. 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
  1. 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

  1. Jalankan perintah berikut untuk login sebagai pengguna admin:
vault login -method="userpass" username="admin" password="admin123"
  1. 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
  1. 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
  1. Buat secret baru:
vault kv put secret/webserver/credentials web=awesome
  1. Hancurkan secret:
vault kv destroy -versions=1 secret/webserver/credentials
  1. 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
  1. Coba tampilkan daftar semua secret di secret/appdev:
vault kv list secret/appdev/

Anda akan menerima output berikut:

Keys ---- appcreds beta-app/ first
  1. Tampilkan daftar semua kebijakan:
vault policy list

Anda akan menerima output berikut:

admin appdev default default-ceiling demo-policy security root
  1. 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
  1. Aktifkan metode autentikasi gcp:
vault auth enable gcp
  1. 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.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami dapat memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami dapat menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Menggunakan jendela Samaran atau browser pribadi adalah cara terbaik untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa, yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.