Tutorial ini menjelaskan cara menggunakan tampilan aman berparameter di AlloyDB untuk PostgreSQL guna membatasi akses pengguna ke tampilan berparameter menggunakan AlloyDB Studio atau psql. Contoh disertakan untuk mengilustrasikan kemampuan tampilan aman berparameter. Contoh ini hanya ditujukan untuk tujuan demonstrasi.
Tujuan
- Buat tampilan berparameter yang aman dengan parameter tampilan bernama.
- Buat peran database yang digunakan oleh aplikasi untuk terhubung ke database dan mengakses tampilan aman berparameter.
- Beri izin peran baru ke tampilan aman dan cabut akses ke tabel dasar.
- Hubungkan menggunakan peran baru dan verifikasi bahwa tabel yang dibatasi tidak dapat diakses.
- Jalankan kueri pada tampilan aman berparameter menggunakan fungsi
execute_parameterized_query
.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Minta akses
Sebelum dapat menggunakan tampilan aman berparameter, Anda harus meminta akses ke tampilan aman berparameter AlloyDB dan menunggu hingga Anda menerima konfirmasi pengaktifan sebelum memulai.
Mengaktifkan penagihan dan API yang diperlukan
Di konsol Google Cloud , pilih project.
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan Cloud API yang diperlukan untuk membuat dan menghubungkan ke AlloyDB untuk PostgreSQL.
- Pada langkah Confirm project, klik Next untuk mengonfirmasi nama project yang akan Anda ubah.
Pada langkah Enable APIs, klik Enable untuk mengaktifkan berikut ini:
- AlloyDB API
Membuat dan terhubung ke database
Menyiapkan lingkungan Anda
Untuk bersiap menjalankan kueri pada tampilan aman berparameter, Anda harus terlebih dahulu menyiapkan tampilan berparameter, database dan peran database, ekstensi parameterized_view
, dan skema aplikasi.
Menyiapkan tampilan berparameter dan database
Minta tim AlloyDB untuk mengaktifkan flag
parameterized_views.enabled database
, yang memuat library ekstensi yang diperlukan.Buat database bernama
database
untuk data aplikasi dan tampilan berparameter. Untuk mengetahui informasi selengkapnya, lihat Membuat database.
Membuat peran database, ekstensi, dan skema aplikasi
Dengan menggunakan AlloyDB Studio atau psql, hubungkan ke database sebagai pengguna
postgres
atau sebagai pengguna dengan hak istimewa superuser AlloyDB.psql database -U postgres
Untuk mengetahui informasi selengkapnya, lihat Tentang pengelolaan pengguna database di AlloyDB.
Buat ekstensi
parameterized_views
di database.-- Requires parameterized_views.enabled set to true CREATE EXTENSION parameterized_views;
Saat ekstensi dibuat, sistem juga membuat skema bernama
parameterized_views
sehingga API dimuat dalam namespace skema tersebut dan API tersebut tidak berkonflik dengan API yang ada.Buat peran administratif AlloyDB, yang memiliki dan mengelola database.
CREATE ROLE admin_user WITH LOGIN PASSWORD '...'; GRANT ALL PRIVILEGES ON DATABASE database TO admin_user;
Untuk informasi selengkapnya, lihat
CREATE USER
.Buat peran database baru untuk menjalankan kueri terhadap tampilan aman yang diparameterkan. Ini adalah peran AlloyDB yang digunakan aplikasi untuk terhubung dan login ke database untuk menjalankan kueri dengan akses terbatas ke fungsi atau objek publik ke set minimum yang diperlukan.
CREATE ROLE psv_user WITH LOGIN PASSWORD '...';
Untuk informasi selengkapnya, lihat
CREATE USER
.Hubungkan sebagai pengguna administratif.
SET role TO admin_user;
Buat skema yang berisi tabel.
CREATE SCHEMA schema;
Buat tabel dan masukkan data.
CREATE TABLE schema.checked_items(bag_id INT,timestamp TIMESTAMP, loc_code CHAR(3), scan_type CHAR(1), location TEXT, customer_id INT); INSERT INTO schema.checked_items (bag_id, timestamp, loc_code, scan_type, location, customer_id) VALUES (101, '2023-10-26 10:00:00', 'ABC', 'I', 'Warehouse A', 123), (102, '2023-10-26 10:15:30', 'DEF', 'O', 'Loading Dock B', 456), (103, '2023-10-26 10:30:45', 'GHI', 'I', 'Conveyor Belt 1', 789), (104, '2023-10-26 11:00:00', 'JKL', 'O', 'Shipping Area C', 101), (105, '2023-10-26 11:45:15', 'MNO', 'I', 'Sorting Station D', 202), (106, '2023-10-26 12:00:00', 'PQR', 'O', 'Truck Bay E', 303);
Membuat tampilan berparameter yang aman dan menyiapkan hak akses
Untuk membuat tampilan berparameter yang aman dan menyiapkan hak akses yang sesuai untuk tabel dan tampilan dasar, ikuti langkah-langkah berikut:
Menggunakan AlloyDB Studio atau psql, hubungkan ke database sebagai
admin_user
.psql database -U admin_user
Untuk memberikan akses terbatas ke tampilan, buat tampilan aman berparameter:
CREATE VIEW schema.secure_checked_items WITH (security_barrier) AS SELECT bag_id, timestamp, location FROM schema.checked_items t WHERE customer_id = $@app_end_userid;
Memberikan akses ke tampilan.
GRANT SELECT ON schema.secure_checked_items TO psv_user;
Untuk mengakses tampilan, berikan akses ke skema.
GRANT USAGE ON SCHEMA schema TO psv_user;
Mencabut akses langsung ke tabel dasar.
REVOKE ALL PRIVILEGES ON schema.checked_items FROM psv_user;
Memverifikasi keamanan data
Untuk memverifikasi bahwa tampilan aman berparameter membatasi akses ke tampilan yang ditentukan, jalankan perintah berikut sebagai psv_user
. Ini adalah
peran database AlloyDB yang digunakan aplikasi untuk terhubung dan
login ke database untuk menjalankan kueri.
Menghubungkan sebagai pengguna tampilan aman berparameter.
psql database -U psv_user
Pastikan tabel dasar tidak dapat diakses.
SELECT * FROM schema.checked_items; ERROR: permission denied for table checked_items
Akses tampilan aman berparameter menggunakan fungsi
execute_parameterized_query
:SELECT * FROM parameterized_views.execute_parameterized_query( query => 'SELECT * from schema.secure_checked_items', param_names => ARRAY ['app_end_userid'], param_values => ARRAY ['303'] );
Untuk meningkatkan keamanan kueri yang dibuat dengan natural language, integrasikan tampilan aman berparameter Anda menggunakan natural language AlloyDB AI.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Di konsol Google Cloud , buka halaman Clusters.
Klik nama cluster Anda,
my-cluster
, di kolom Nama resource.Klik delete Hapus cluster.
Di Delete cluster my-cluster, masukkan
my-cluster
untuk mengonfirmasi bahwa Anda ingin menghapus cluster.Klik Hapus.
Jika Anda membuat koneksi pribadi saat membuat cluster, buka Google Cloud konsol halaman Jaringan dan klik Hapus jaringan VPC.
Menggunakan AlloyDB Studio atau psql, hubungkan ke database sebagai
postgres
.psql database -U postgres
Lepaskan objek yang Anda buat.
DROP VIEW schema.secure_checked_items; DROP TABLE schema.checked_items; DROP SCHEMA schema; DROP ROLE psv_user; DROP ROLE admin_user; DROP EXTENSION parameterized_views;
Langkah berikutnya
- Pelajari tampilan aman berparameter.
- Pelajari cara mengelola keamanan data aplikasi menggunakan tampilan aman berparameter.