全部产品
Search
文档中心

Hologres:Mengganti model izin

更新时间:Feb 05, 2026

Hologres menyediakan tiga model izin: model otorisasi PostgreSQL standar, simple permission model (SPM), dan schema-level permission model (SLPM). Anda dapat memilih model yang sesuai dengan kebutuhan bisnis. Namun, Anda mungkin perlu mengganti model tersebut selama penggunaan instans. Topik ini menjelaskan cara cepat dan mudah untuk beralih antara model-model izin tersebut.

Lihat model izin saat ini dari suatu database

Gunakan salah satu metode berikut untuk melihat model izin database saat ini.

  • HoloWeb

    Di HoloWeb, lihat model izin saat ini pada halaman DB Authorization di modul Security Center. Untuk informasi selengkapnya, lihat DB Management.

  • Pernyataan SQL

    Gunakan perintah berikut untuk memeriksa apakah SPM atau SLPM diaktifkan untuk database tersebut.

    --Periksa apakah SPM diaktifkan.
    SHOW hg_experimental_enable_spm;
    
    --Periksa apakah SLPM diaktifkan.
    SHOW hg_enable_slpm;

Beralih dari simple permission model (SPM) ke model otorisasi PostgreSQL standar

  • Catatan

    • Hanya superuser yang dapat menonaktifkan simple permission model.

    • Peran public memiliki izin USAGE dan CREATE pada skema public.

    • Peran public memiliki izin CONNECT dan TEMPORARY pada DB.

    • Peran public memiliki izin EXECUTE pada fungsi dan prosedur.

    • Peran public memiliki izin USAGE pada language, data types (include domains).

    • Peran public tidak memiliki izin pada objek lain, seperti tabel, view, materialized view, kolom tabel, sequence, foreign data wrapper, foreign server, atau skema (kecuali skema public).

    • Setelah Anda menonaktifkan simple permission model, izin kelompok pengguna adalah sebagai berikut.

      • admin: Mempertahankan izin pada objek yang sudah ada, tetapi izin tersebut tidak berlaku untuk objek database baru.

      • kelompok pengguna developer: Mempertahankan izin pada objek yang sudah ada, tetapi izin tersebut tidak berlaku untuk objek database baru.

      • kelompok pengguna writer: Mempertahankan izin pada objek yang sudah ada, tetapi izin tersebut tidak berlaku untuk objek database baru.

      • kelompok pengguna viewer: Mempertahankan izin pada objek yang sudah ada, tetapi izin tersebut tidak berlaku untuk objek database baru.

  • Ganti model izin

    Jalankan perintah SQL berikut untuk menonaktifkan simple permission model. Database kemudian akan menggunakan model otorisasi PostgreSQL standar.

    --Nonaktifkan model simple.
    CALL spm_disable ();
    --Bersihkan kelompok pengguna (opsional).
    CALL spm_cleanup ('dbname');
    Catatan

    Kelompok pengguna yang bersesuaian tidak dihapus setelah Anda menonaktifkan simple permission model. Untuk mempermudah manajemen, jangan hapus kelompok pengguna tersebut. Jika ingin membersihkannya, pastikan tidak ada pernyataan SQL yang sedang berjalan pada DB. Jika tidak, pembersihan dapat gagal dan memengaruhi layanan Anda.

Beralih dari model otorisasi PostgreSQL standar ke simple permission model (SPM)

Gunakan perintah berikut untuk beralih dari model otorisasi PostgreSQL standar ke simple permission model.

-- Aktifkan simple permission model untuk DB saat ini.
CALL spm_enable ();
-- Perbarui pemilik objek yang sudah ada di DB menjadi 'developer' agar dikelola oleh SPM.
CALL spm_migrate ();

Jika muncul error ERROR: cannot enable Simple Privilege Model for db=[xxxxxx] because roles conflict, artinya SPM sebelumnya pernah diaktifkan dan peran sistem masih ada. Dalam kasus ini, aktifkan SPM dalam mode recovery dengan menjalankan perintah berikut.

--Aktifkan kembali simple permission model.
CALL spm_enable ('t');

--Perbarui pemilik objek yang sudah ada di DB menjadi 'developer' agar dikelola oleh SPM.
CALL spm_migrate ();
Catatan

Jika Anda beralih ke SPM, akun baru mungkin melaporkan error izin meskipun memiliki izin yang diperlukan. Hal ini menunjukkan migrasi objek sebelumnya belum lengkap. Jalankan perintah call spm_migrate (); beberapa kali.

Beralih dari simple permission model (SPM) ke schema-level permission model (SLPM)

Tidak ada metode langsung untuk beralih dari SPM ke SLPM. Anda harus terlebih dahulu beralih dari SPM ke model otorisasi PostgreSQL standar, lalu beralih dari model otorisasi PostgreSQL standar ke SLPM. Perintahnya sebagai berikut.

-- Nonaktifkan SPM untuk kembali ke model standar.
CALL spm_disable ();
-- Bersihkan peran sistem SPM.
CALL spm_cleanup ('dbname');
-- Aktifkan izin tingkat skema.
CALL slpm_enable ();
-- Perbarui pemilik objek yang sudah ada di DB menjadi 'developer' agar dikelola oleh SLPM. Langkah ini wajib dilakukan.
CALL slpm_migrate ();

Jika muncul error cannot enable slpm for database xxxxx because roles conflict., artinya SLPM sebelumnya pernah diaktifkan dan peran sistem masih ada. Dalam kasus ini, aktifkan SLPM dalam mode recovery dengan menjalankan perintah berikut.

-- Nonaktifkan SPM.
CALL spm_disable ();
-- Bersihkan peran sistem SPM.
CALL spm_cleanup ('dbname');
-- Aktifkan izin tingkat skema (aktifkan SLPM dalam mode recovery).
CALL slpm_enable ('t');
-- Perbarui pemilik objek yang sudah ada di DB menjadi 'developer' agar dikelola oleh SLPM. Langkah ini wajib dilakukan.
CALL slpm_migrate ();
Catatan

Jika Anda beralih ke SLPM, akun baru mungkin melaporkan error izin meskipun memiliki izin yang diperlukan. Hal ini menunjukkan migrasi objek sebelumnya belum lengkap. Jalankan perintah call slpm_migrate (); beberapa kali.

Beralih dari schema-level permission model (SLPM) ke simple permission model (SPM)

Tidak ada metode langsung untuk beralih dari SLPM ke SPM. Anda harus terlebih dahulu beralih dari SLPM ke model otorisasi PostgreSQL standar, lalu beralih dari model otorisasi PostgreSQL standar ke SPM. Perintahnya sebagai berikut.

-- Nonaktifkan SLPM.
CALL slpm_disable ();
-- Bersihkan peran sistem SLPM.
CALL slpm_cleanup ('dbname');
-- Aktifkan simple permission model untuk DB saat ini.
CALL spm_enable ();
-- Perbarui pemilik objek yang sudah ada di DB menjadi 'developer' agar dikelola oleh SPM.
CALL spm_migrate ();

Jika muncul error cannot enable spm for database xxxxx because roles conflict., artinya SPM sebelumnya pernah diaktifkan dan peran sistem masih ada. Dalam kasus ini, aktifkan SPM dalam mode recovery dengan menjalankan perintah berikut.

-- Nonaktifkan SLPM.
CALL slpm_disable ();
-- Bersihkan peran sistem SLPM.
CALL slpm_cleanup ('dbname');
-- Aktifkan SPM (aktifkan SPM dalam mode recovery).
CALL spm_enable ('t')
-- Perbarui pemilik objek yang sudah ada di DB menjadi 'developer' agar dikelola oleh SPM.
CALL spm_migrate ();
Catatan

Jika Anda beralih ke SPM, akun baru mungkin melaporkan error izin meskipun memiliki izin yang diperlukan. Hal ini menunjukkan migrasi objek sebelumnya belum lengkap. Jalankan perintah call spm_migrate (); beberapa kali.