All Products
Search
Document Center

Hologres:Berikan izin menggunakan SPM

Last Updated:Mar 13, 2026

Topik ini menjelaskan cara menggunakan simple permission model (SPM) di Hologres.

Berikan izin menggunakan simple permission model

Di Hologres, Anda dapat memberikan izin dalam suatu instans menggunakan simple permission model dengan cara berikut:

  • Berikan izin menggunakan pernyataan SQL

    Setelah terhubung ke instans Hologres menggunakan tool pengembangan, Anda dapat menjalankan pernyataan SQL dalam mode dasar untuk memberikan izin instans yang diperlukan kepada pengguna. Prosesnya sebagai berikut:

  1. Aktifkan pemanggilan fungsi.

    Sebelum mengaktifkan SPM, jalankan perintah berikut untuk mengaktifkan pemanggilan fungsi.

    create extension spm;
  2. Aktifkan simple permission model.

    Simple permission model dinonaktifkan secara default. Superuser harus menjalankan pernyataan berikut di database target untuk mengaktifkannya. Untuk informasi selengkapnya tentang fungsi ini, lihat spm_enable.

    call spm_enable();  // Aktifkan simple permission model untuk DB saat ini.
    Catatan

    Setelah simple permission model diaktifkan, kelompok pengguna developer memiliki izin default pada semua tabel dan objek bertipe tabel di semua skema dalam database tersebut.

  3. Opsi: Migrasi dari model otorisasi PostgreSQL standar.

    Jika database Anda menggunakan model otorisasi PostgreSQL standar dan berisi objek seperti tabel, tampilan, atau tabel eksternal, Anda harus memigrasikan objek-objek tersebut ke simple permission model. Jika tidak, izin tabel akan hilang, yang dapat berdampak pada operasi bisnis Anda. Untuk melakukan migrasi, eksekusi pernyataan berikut di database Anda.

    call spm_migrate();  // Ubah pemilik objek yang ada di DB menjadi developer dan kelola menggunakan SPM.

    Jika Anda memiliki database baru yang belum berisi objek apa pun, Anda dapat melewati langkah ini.

    Catatan

    Saat mengaktifkan simple permission model, pastikan tidak ada pernyataan SQL yang sedang berjalan di database saat ini. Jika tidak, operasi tersebut dapat gagal dan memengaruhi layanan Anda.

    Karena migrasi mungkin melibatkan operasi ALTER OWNER pada banyak tabel, hal ini dapat memicu batasan PostgreSQL. Fungsi spm_migrate mengubah pemilik sejumlah objek hingga mencapai batas max_locks_per_transaction dalam setiap eksekusi. Anda mungkin perlu menjalankan spm_migrate beberapa kali hingga semua objek berhasil dimigrasikan. Untuk informasi selengkapnya tentang fungsi ini, lihat spm_migrate.

  4. Buat pengguna.

    Sebelum memberikan izin kepada pengguna baru, Anda harus membuat pengguna tersebut di instans saat ini. Jika pengguna sudah ada, Anda dapat melewati langkah ini.

    • Akun Alibaba Cloud dan pengguna Resource Access Management (RAM):

      call spm_create_user ('UID akun Alibaba Cloud/Alamat email/pengguna RAM'); // Buat pengguna. Jika menggunakan alamat email, sertakan dalam tanda kutip ganda.
      call spm_create_user ('UID akun Alibaba Cloud/Alamat email/pengguna RAM', '<dbname>_[admin|developer|writer|viewer]'); // Buat pengguna dan tambahkan ke kelompok pengguna yang sesuai.

      Dalam perintah tersebut, dbname adalah nama database di instans Hologres saat ini.

      Contoh: Tambahkan pengguna RAM xxx.onaliyun.com ke kelompok pengguna developer di database testdb.

      call spm_create_user ('xxx.onaliyun.com', 'testdb_developer');
    • Pengguna kustom:

      create user "BASIC$<user_name>" with password '<password>';
    Catatan
    • Untuk pengguna RAM, tambahkan awalan p4_ ke UID akun saat menjalankan spm_create_user. Contohnya, p4_UID.

    • Untuk pengguna kustom, username tidak boleh diakhiri dengan admin, developer, writer, viewer, atau all_users.

  5. Berikan izin kepada pengguna baru.

    Setelah pengguna baru dibuat di instans, tambahkan pengguna tersebut ke kelompok pengguna yang sesuai di database untuk menyelesaikan otorisasi. Setelah otorisasi, pengguna RAM dapat terhubung ke database saat ini menggunakan tool pengembangan dan melakukan pengembangan dalam cakupan yang diizinkan. Jika pengguna telah ditambahkan ke kelompok pengguna saat pembuatan, Anda tidak perlu memberikan izin lagi. Untuk informasi selengkapnya tentang fungsi ini, lihat spm_grant.

    Dalam perintah berikut, {dbname}_[admin|developer|writer|viewer] menentukan nama kelompok pengguna di database saat ini tempat Anda ingin menambahkan pengguna tersebut. Untuk informasi selengkapnya, lihat Kelompok pengguna.

    
    call spm_grant('{dbname}_[admin|developer|writer|viewer]', 'ID akun Alibaba Cloud/Alamat email/pengguna RAM'); // Tambahkan pengguna ke kelompok pengguna.

    Contoh berikut menunjukkan cara menambahkan pengguna ke kelompok pengguna dengan izin berbeda.

    // Tambahkan pengguna ke kelompok admin suatu DB.
    call spm_grant('mydb_admin', 'p4_564306222995xxx'); // Tambahkan pengguna RAM 564306222995xxx ke kelompok admin database mydb.
    call spm_grant('mydb_admin', '197006222995xxx'); // Tambahkan akun Alibaba Cloud 197006222995xxx ke kelompok admin database mydb.
    call spm_grant('mydb_admin', 'ALIYUN$xxx'); // Tambahkan xxx@aliyun.com ke kelompok admin database mydb.
    
    // Tambahkan pengguna ke kelompok developer suatu DB.
    call spm_grant('mydb_developer', 'p4_564306222995xxx'); // Tambahkan pengguna RAM 564306222995xxx ke kelompok developer database mydb.
    call spm_grant('mydb_developer', '197006222995xxx'); // Tambahkan akun Alibaba Cloud 197006222995xxx ke kelompok developer database mydb.
    call spm_grant('mydb_developer', 'RAM$mainaccount:subuser');// Tambahkan pengguna RAM subuser dari akun Alibaba Cloud mainaccount ke kelompok developer database mydb.
    
    // Tambahkan pengguna ke kelompok viewer suatu DB.
    call spm_grant('"MYDB_viewer"', 'p4_564306222995xxx'); // Tambahkan pengguna RAM 564306222995xxx ke kelompok viewer database "MYDB".
    call spm_grant('"MYDB_viewer"', '197006222995xxx'); // Tambahkan akun Alibaba Cloud 197006222995xxx ke kelompok viewer database "MYDB".
    call spm_grant('mydb_viewer', '"xxx@aliyun.com"'); // Tambahkan akun xxx@aliyun.com ke kelompok viewer database mydb.

Hapus kelompok pengguna

Di Hologres, Anda dapat menghapus pengguna dari kelompok pengguna di suatu database menggunakan simple permission model dengan cara berikut:

  • Hapus kelompok pengguna menggunakan pernyataan SQL

    Untuk menghapus pengguna dari kelompok pengguna di suatu database, jalankan perintah berikut. Untuk informasi selengkapnya tentang fungsi ini, lihat spm_revoke.

    call spm_revoke('<dbname>_[admin|developer|writer|viewer]', 'ID akun Alibaba Cloud/Alamat email/pengguna RAM'); // Cabut izin pengguna.
    
    // Contoh:
    // Hapus pengguna dari kelompok admin suatu DB.
    call spm_revoke('dbname_admin', 'p4_564306222995xxx');// Hapus pengguna RAM 564306222995xxx dari kelompok admin.
    call spm_revoke('dbname_admin', '197006222995xxx');// Hapus akun Alibaba Cloud 197006222995xxx dari kelompok admin.
    call spm_revoke('dbname_admin', 'xxx@aliyun.com');// Hapus akun xxx@aliyun.com dari kelompok admin.
    
    // Hapus pengguna dari kelompok developer suatu DB.
    call spm_revoke('mydb_developer', 'RAM$mainaccount:subuser'); // Hapus pengguna RAM subuser dari kelompok developer database mydb.
    call spm_revoke('mydb_developer', 'p4_564306222995xxx');// Hapus pengguna RAM 564306222995xxx dari kelompok developer.
    
    // Hapus pengguna dari kelompok viewer suatu DB.
    call spm_revoke('"MYDB_viewer"', 'p4_564306222995xxx'); // Hapus pengguna RAM 564306222995xxx dari kelompok viewer database "MYDB".

Hapus pengguna

Untuk menghapus pengguna dari suatu instans, jalankan pernyataan berikut.

Penting

Menghapus pengguna akan mengeluarkannya dari instans saat ini dan mencabut semua izinnya pada instans tersebut. Lakukan dengan hati-hati.

DROP ROLE "ID akun Alibaba Cloud/Alamat email/pengguna RAM"; // Langsung hapus pengguna dari instans.

(Opsional) Alihkan dari model expert ke simple permission model

Jika database Anda menggunakan model otorisasi PostgreSQL standar dan berisi objek seperti tabel, tampilan, atau tabel eksternal, Anda dapat mengaktifkan simple permission model untuk pengelolaan izin yang lebih baik. Anda dapat memanggil fungsi spm_migrate untuk memigrasikan objek yang ada ke simple permission model. Jalankan pernyataan berikut di database.

call spm_migrate();  // Ubah pemilik objek yang ada di DB menjadi developer dan kelola menggunakan SPM.
Catatan

Saat mengaktifkan simple permission model, pastikan tidak ada pernyataan SQL yang sedang berjalan di database saat ini. Jika tidak, operasi tersebut dapat gagal dan memengaruhi layanan Anda.

Alihkan model ini mungkin melibatkan operasi ALTER OWNER pada banyak tabel. Namun, pernyataan spm_migrate mengubah pemilik sejumlah objek hingga mencapai batas max_locks_per_transaction dalam setiap eksekusi. Anda mungkin perlu menjalankan spm_migrate beberapa kali hingga semua objek berhasil dimigrasikan.

Nonaktifkan simple permission model

  1. Nonaktifkan simple permission model.

    Superuser dapat menjalankan pernyataan berikut di database untuk menonaktifkan simple permission model sesuai kebutuhan. Untuk informasi selengkapnya tentang fungsi ini, lihat spm_disable.

    call spm_disable();

    Setelah simple permission model dinonaktifkan, kelompok pengguna yang bersesuaian tidak dihapus. Untuk informasi tentang izin pengguna dalam kelompok-kelompok tersebut, lihat Fungsi SPM.

  2. Purge kelompok pengguna.

    Setelah menonaktifkan simple permission model, Anda dapat memanggil fungsi spm_cleanup untuk purge kelompok pengguna sesuai kebutuhan. Ini berguna dalam skenario berikut:

    Catatan

    Untuk kemudahan manajemen, kami menyarankan agar Anda tidak menghapus kelompok pengguna.

    • Skenario 1: Hapus kelompok pengguna tetapi pertahankan database.

      Jika Anda ingin menghapus kelompok pengguna di suatu database tetapi tetap menggunakan database tersebut, Superuser dapat menjalankan pernyataan berikut. Untuk informasi selengkapnya tentang fungsi ini, lihat spm_cleanup.

      call spm_cleanup('{dbname}');
      Catatan

      Saat memanggil spm_cleanup, pastikan tidak ada pernyataan SQL yang sedang berjalan di database tersebut. Jika tidak, pemanggilan tersebut dapat gagal dan memengaruhi layanan Anda.

      Karena ini mungkin melibatkan operasi ALTER OWNER pada banyak tabel bisnis, spm_cleanup mengubah pemilik sejumlah objek hingga mencapai batas max_locks_per_transaction dalam setiap eksekusi. Oleh karena itu, Anda mungkin perlu menjalankan spm_cleanup beberapa kali hingga semua objek dimigrasikan dan keempat kelompok pengguna dihapus.

    • Skenario 2: Hapus database terlebih dahulu, lalu hapus kelompok pengguna.

      Jika Anda telah menghapus database asli tanpa menghapus kelompok penggunanya, Superuser dapat menjalankan pernyataan berikut di database lain, seperti postgres, untuk menghapus kelompok pengguna yang sesuai.

      call spm_cleanup('mydb');

Catatan tentang menonaktifkan simple permission model:

  • Hanya Superuser yang dapat mengeksekusi operasi penonaktifan.

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

  • Peran public memiliki izin CONNECT dan TEMPORARY pada database.

  • Peran public memiliki izin EXECUTE pada fungsi dan prosedur.

  • Peran public memiliki izin USAGE pada language, tipe data (termasuk domains).

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

  • Setelah simple permission model dinonaktifkan, izin kelompok pengguna adalah sebagai berikut:

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

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

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

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

Aktifkan kembali simple permission model

Jika sebelumnya Anda telah mengaktifkan simple permission model untuk database Anda, menonaktifkannya, dan beralih ke model otorisasi PostgreSQL standar, Anda dapat menjalankan pernyataan berikut untuk mengaktifkan kembali simple permission model sesuai kebutuhan.

call spm_enable('t');  // Aktifkan simple permission model untuk DB saat ini.
call spm_migrate();  // Ubah pemilik objek yang ada di DB menjadi developer dan kelola menggunakan SPM.
Catatan

Saat mengaktifkan simple permission model, pastikan tidak ada pernyataan SQL yang sedang berjalan di database saat ini. Jika tidak, operasi tersebut dapat gagal dan memengaruhi layanan Anda.

Alihkan model ini mungkin melibatkan operasi ALTER OWNER pada banyak tabel. Namun, pernyataan spm_migrate mengubah pemilik sejumlah objek hingga mencapai batas max_locks_per_transaction dalam setiap eksekusi. Anda mungkin perlu menjalankan spm_migrate beberapa kali hingga semua objek berhasil dimigrasikan.