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, tetapkan parameter search_path ke pg_catalog untuk pengguna dengan hak istimewa tinggi. Konfigurasi ini mengamankan jalur penelusuran sehingga skema yang tidak tepercaya seperti public akan diabaikan.

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 tentang cara mengamankan skema public, lihat dokumentasi PostgreSQL tentang penggunaan skema yang aman dan panduan CVE-2018-1058.

Mengamankan akses data BigQuery menggunakan wrapper data asing

Saat Anda menggunakan wrapper data asing (FDW) BigQuery, semua kueri dari AlloyDB ke BigQuery 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 dengan hak istimewa terendah, batasi hak istimewa USAGE di server asing sehingga pengguna non-administrator tidak dapat menjalankan pernyataan CREATE FOREIGN TABLE:

  1. Batasi USAGE di server asing: cegah peran non-administrator agar tidak memiliki hak istimewa USAGE, dan cabut USAGE dari PUBLIC jika perlu.

  2. Memusatkan pembuatan tabel: hanya mengizinkan administrator database, seperti pengguna dengan peran alloydbsuperuser, untuk membuat tabel asing.

  3. Memberikan akses selektif: mengelola akses baca menggunakan GRANT SELECT pada tabel asing tertentu.

Contoh: Mengonfigurasi akses dengan hak istimewa terendah

Alur kerja berikut menunjukkan cara administrator dapat memberikan akses kepada pengguna reguler (bob) ke tabel BigQuery tertentu dengan aman tanpa mengizinkan mereka memetakan set data arbitrer:

  1. Sebagai administrator, buat server asing dan cabut hak istimewa USAGE dari PUBLIC untuk mencegah pembuatan tabel yang tidak sah:

    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;
    
  2. Sebagai administrator, buat pemetaan pengguna untuk pengguna reguler:

    CREATE USER MAPPING FOR bob SERVER bq_server;
    
  3. Sebagai administrator, buat tabel asing:

    -- Because 'bob' does not have USAGE on bq_server, only the administrator can run this.
    CREATE FOREIGN TABLE example_table (
        id INT,
        state VARCHAR
    ) SERVER bq_server OPTIONS (
        project 'BIGQUERY_PROJECT_ID',
        dataset 'BIGQUERY_DATASET_NAME',
        table 'example_table'
    );
    
  4. Sebagai administrator, berikan akses baca selektif pada tabel asing tertentu kepada pengguna reguler:

    GRANT SELECT ON public.example_table TO bob;