Praktik terbaik untuk mengamankan resource AlloyDB untuk PostgreSQL

Untuk membantu Anda mencapai postur keamanan yang kuat untuk resource AlloyDB untuk PostgreSQL, ikuti praktik terbaik yang disediakan di halaman ini.

Mencegah pembajakan jalur penelusuran

Untuk mencegah pembajakan jalur penelusuran, pastikan pengguna dengan hak istimewa tinggi memiliki parameter search_path yang ditetapkan ke pg_catalog. Hal ini memastikan bahwa jalur penelusuran diamankan dan skema yang tidak tepercaya seperti public dilewati.

Untuk menetapkan parameter ini secara permanen bagi pengguna, jalankan perintah berikut:

ALTER ROLE USER_NAME SET search_path = pg_catalog,pg_temp;

Untuk menetapkan parameter ini hanya untuk sesi saat ini, jalankan perintah berikut:

SET search_path TO pg_catalog,pg_temp;

Untuk menetapkan parameter ini bagi semua pengguna saat terhubung ke database, jalankan perintah berikut:

ALTER DATABASE DB_NAME SET search_path TO schema1, schema2, public;

Untuk mengetahui informasi selengkapnya, lihat dokumentasi PostgreSQL tentang penggunaan skema yang aman dan panduan CVE-2018-1058.

Mengamankan akses data BigQuery menggunakan foreign data wrapper

Saat Anda menggunakan foreign data wrapper (FDW) BigQuery, semua kueri dari AlloyDB ke BigQuery akan diautentikasi menggunakan akun layanan cluster AlloyDB. Karena akun layanan ini mungkin memiliki akses ke beberapa set data BigQuery yang sensitif, penting untuk mencegah pengguna database reguler memetakan tabel yang tidak sah.

Untuk menerapkan akses hak istimewa terendah, administrator harus membatasi hak istimewa USAGE di server asing. Hal ini secara fisik mencegah pengguna non-administrator menjalankan pernyataan CREATE FOREIGN TABLE.

  1. Batasi USAGE di server asing dengan memastikan bahwa peran non-administrator tidak memiliki hak istimewa USAGE di server asing. Cabut dari PUBLIC jika perlu.
  2. Pusatkan pembuatan tabel: Hanya administrator database, misalnya, pengguna dengan peran alloydbsuperuser, yang dapat membuat tabel asing.
  3. Berikan akses selektif: administrator mengelola akses baca menggunakan GRANT SELECT pada tabel asing tertentu.

Contoh: Mengonfigurasi Akses Hak Istimewa Terendah

Alur kerja berikut menunjukkan cara administrator dapat memberikan akses yang aman kepada pengguna reguler (bob) ke tabel BigQuery tertentu tanpa mengizinkannya memetakan set data arbitrer.

-- Step 1: Create the server and restrict access (Executed as Administrator) ```sql CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER bq_server FOREIGN DATA WRAPPER bigquery_fdw;

-- Explicitly revoke USAGE from all users to prevent unauthorized table creation REVOKE ALL ON FOREIGN SERVER bq_server FROM PUBLIC; ```

-- Step 2: Create a User Mapping for the regular user (Executed as Administrator) sql CREATE USER MAPPING FOR bob SERVER bq_server;

-- Step 3: Create the Foreign Table (Executed as Administrator) -- Because 'bob' does not have USAGE on bq_server, only the administrator can run this. sql CREATE FOREIGN TABLE example_table ( id INT, state VARCHAR ) SERVER bq_server OPTIONS ( project 'BIGQUERY_PROJECT_ID', dataset 'BIGQUERY_DATASET_NAME', table 'example_table' );

-- Step 4: Grant Selective Read Access (Executed as Administrator) -- Explicitly grant read access to the regular user for this specific table. sql GRANT SELECT ON public.example_table TO bob;