Buat pengguna dan peran aplikasi di Aurora PostgreSQL yang kompatibel - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat pengguna dan peran aplikasi di Aurora PostgreSQL yang kompatibel

Abhishek Verma, Amazon Web Services

Ringkasan

Saat Anda bermigrasi ke Amazon Aurora PostgreSQL Compatible Edition, pengguna database dan peran yang ada di database sumber harus dibuat dalam database yang kompatibel dengan Aurora PostgreSQL. Anda dapat membuat pengguna dan peran di Aurora PostgreSQL kompatibel dengan menggunakan dua pendekatan yang berbeda:

  • Gunakan pengguna dan peran serupa dalam target seperti dalam database sumber. Dalam pendekatan ini, bahasa definisi data (DDLs) diekstraksi untuk pengguna dan peran dari database sumber. Kemudian mereka ditransformasikan dan diterapkan ke database target yang kompatibel dengan Aurora PostgreSQL. Misalnya, posting blog Gunakan SQL untuk memetakan pengguna, peran, dan hibah dari Oracle ke PostgreSQL mencakup menggunakan ekstraksi dari mesin database sumber Oracle.

  • Gunakan pengguna standar dan peran yang umum digunakan selama pengembangan, administrasi, dan untuk melakukan operasi terkait lainnya dalam database. Ini termasuk operasi read-only, read/write, development, administration, dan deployment yang dilakukan oleh masing-masing pengguna.

Pola ini berisi hibah yang diperlukan untuk pengguna dan pembuatan peran di Aurora PostgreSQL kompatibel yang diperlukan untuk pengguna standar dan pendekatan peran. Langkah-langkah pembuatan pengguna dan peran disejajarkan dengan kebijakan keamanan untuk memberikan hak istimewa paling sedikit kepada pengguna database. Tabel berikut mencantumkan pengguna, peran yang sesuai, dan detailnya di database.

Pengguna

Peran

Tujuan

APP_read

APP_RO

Digunakan untuk akses hanya-baca pada skema APP

APP_WRITE

APP_RW

Digunakan untuk operasi tulis dan baca pada skema APP

APP_dev_user

APP_DEV

Digunakan untuk tujuan pengembangan pada skemaAPP_DEV, dengan akses hanya-baca pada skema APP

Admin_User

rds_superuser

Digunakan untuk melakukan operasi administrator pada database

APP

APP_DEP

Digunakan untuk membuat objek di bawah APP skema dan untuk penyebaran objek dalam skema APP

Prasyarat dan batasan

Prasyarat

  • Akun Amazon Web Services (AWS) yang aktif

  • Database PostgreSQL, database Edisi Amazon Aurora PostgreSQL yang kompatibel, atau Amazon Relational Database Service (Amazon RDS) untuk database PostgreSQL

Versi produk

  • Semua versi PostgreSQL

Arsitektur

Tumpukan teknologi sumber

  • Database apa pun

Tumpukan teknologi target

  • Kompatibel dengan Amazon Aurora PostgreSQL

Arsitektur target

Diagram berikut menunjukkan peran pengguna dan arsitektur skema dalam database Aurora PostgreSQL kompatibel.

Peran pengguna dan arsitektur skema untuk database Aurora PostgreSQL-Comaptible.

                                                                                                                                    

Otomatisasi dan skala

Pola ini berisi pengguna, peran, dan skrip pembuatan skema, yang dapat Anda jalankan beberapa kali tanpa berdampak pada pengguna database sumber atau target yang ada.

Alat

Layanan AWS

Layanan lainnya

  • psql adalah alat front-end berbasis terminal yang diinstal dengan setiap instalasi PostgreSQL Database. Ini memiliki antarmuka baris perintah untuk menjalankan SQL, PL-PGSQL, dan perintah sistem operasi.

  • pgAdmin adalah alat manajemen sumber terbuka untuk PostgreSQL. Ini menyediakan antarmuka grafis yang membantu Anda membuat, memelihara, dan menggunakan objek database.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat pengguna penerapan.

Pengguna penyebaran APP akan digunakan untuk membuat dan memodifikasi objek database selama penerapan. Gunakan skrip berikut untuk membuat peran pengguna penerapan APP_DEP dalam skema. APP Validasi hak akses untuk memastikan pengguna ini hanya memiliki hak istimewa untuk membuat objek dalam skema yang diperlukan. APP

  1. Connect ke pengguna admin, dan buat skema.

    CREATE SCHEMA APP;
  2. Buat pengguna.

    CREATE USER APP WITH PASSWORD <password> ;
  3. Buat peran.

    CREATE ROLE APP_DEP ; GRANT all on schema APP to APP_DEP ; GRANT USAGE ON SCHEMA APP to APP_DEP ; GRANT connect on database <db_name> to APP_DEP ; GRANT APP_DEP to APP;
  4. Untuk menguji hak istimewa, sambungkan ke APP dan buat tabel.

    set search_path to APP; SET CREATE TABLE test(id integer ) ; CREATE TABLE
  5. Periksa hak istimewanya.

    select schemaname , tablename , tableowner from pg_tables where tablename like 'test' ; schemaname | tablename | tableowner APP | test | APP
DBA

Buat pengguna hanya-baca.

Pengguna hanya-baca APP_read akan digunakan untuk melakukan operasi hanya-baca dalam skema. APP Gunakan skrip berikut untuk membuat pengguna hanya-baca. Validasi hak akses untuk memastikan bahwa pengguna ini memiliki hak istimewa hanya untuk membaca objek dalam skema APP dan untuk secara otomatis memberikan akses baca untuk objek baru yang dibuat dalam skema. APP

  1. Buat penggunaAPP_read.

    create user APP_read ; alter user APP_read with password 'your_password' ;
  2. Buat peran.

    CREATE ROLE APP_ro ; GRANT SELECT ON ALL TABLES IN SCHEMA APP TO APP_RO ; GRANT USAGE ON SCHEMA APP TO APP_RO GRANT CONNECT ON DATABASE testdb TO APP_RO ; GRANT APP_RO TO APP_read;
  3. Untuk menguji hak istimewa, masuk menggunakan APP_read pengguna.

    set search_path to APP ; create table test1( id integer) ; ERROR: permission denied for schema APP LINE 1: create table test1( id integer) ; insert into test values (34) ; ERROR: permission denied for table test SQL state: 42501 select from test no rows selected
DBA

Buat read/write pengguna.

read/write Pengguna APP_WRITE akan digunakan untuk melakukan operasi baca dan tulis pada skemaAPP. Gunakan skrip berikut untuk membuat read/write pengguna dan berikan APP_RW perannya. Validasi hak akses untuk memastikan bahwa pengguna ini memiliki hak baca dan tulis hanya pada objek dalam skema APP dan untuk secara otomatis memberikan akses baca dan tulis untuk objek baru yang dibuat dalam skema. APP

  1. Buat pengguna.

    CREATE USER APP_WRITE ; alter user APP_WRITE with password 'your_password' ;
  2. Buat peran.

    CREATE ROLE APP_RW; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA APP TO APP_RW ; GRANT CONNECT ON DATABASE postgres to APP_RW ; GRANT USAGE ON SCHEMA APP to APP_RW ; ALTER DEFAULT PRIVILEGES IN SCHEMA APP GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO APP_RW ; GRANT APP_RW to APP_WRITE
  3. Untuk menguji hak istimewa, masuk menggunakan APP_WRITE pengguna.

    SET SEARCH_PATH to APP; CREATE TABLE test1( id integer) ; ERROR: permission denied for schema APP LINE 1: create table test1( id integer) ; SELECT * FROM test ; id ---- 12 INSERT INTO test values (31) ; INSERT 0 1

Buat pengguna admin.

Pengguna admin Admin_User akan digunakan untuk melakukan operasi admin pada database. Contoh operasi ini adalah CREATE ROLE danCREATE DATABASE. Admin_Usermenggunakan peran bawaan rds_superuser untuk melakukan operasi admin pada database. Gunakan skrip berikut untuk membuat dan menguji hak istimewa bagi pengguna admin Admin_User dalam database.

  1. Buat pengguna dan berikan peran.

    create user Admin_User WITH PASSWORD ‘Your password’ ALTER user Admin_user CREATEDB; ALTER user Admin_user CREATEROLE;
  2. Untuk menguji hak istimewa, masuk dari Admin_User pengguna.

    SELECT * FROM APP.test ; id ---- 31 CREATE ROLE TEST ; CREATE DATABASE test123 ;
DBA

Buat pengguna pengembangan.

Pengguna pengembangan APP_dev_user akan memiliki hak untuk membuat objek dalam skema lokalnya APP_DEV dan membaca akses dalam skemaAPP. Gunakan skrip berikut untuk membuat dan menguji hak istimewa pengguna APP_dev_user dalam database.

  1. Buat pengguna.

    CREATE USER APP1_dev_user with password ‘your password’;
  2. Buat APP_DEV skema untuk. App_dev_user

    CREATE SCHEMA APP1_DEV ;
  3. Buat APP_DEV peran.

    CREATE ROLE APP1_DEV ; GRANT APP1_RO to APP1_DEV ; GRANT SELECT ON ALL TABLES IN SCHEMA APP1_DEV to APP1_dev_user GRANT USAGE, CREATE ON SCHEMA APP1_DEV to APP1_DEV_USER GRANT APP1_DEV to APP1_DEV_USER ;
  4. Untuk menguji hak istimewa, masuk dariAPP_dev_user.

    CREATE TABLE APP1_dev.test1( id integer ) ; CREATE TABLE INSERT into APP1_dev.test1 ( select * from APP1.test ); INSERT 0 1 CREATE TABLE APP1.test4 ( id int) ; ERROR: permission denied for schema APP1 LINE 1: create table APP1.test4 ( id int) ;
DBA

Sumber daya terkait

Dokumentasi PostgreSQL

 

Informasi tambahan

PostgreSQL 14 peningkatan

PostgreSQL 14 menyediakan seperangkat peran yang telah ditentukan sebelumnya yang memberikan akses ke kemampuan dan informasi tertentu yang umum dibutuhkan dan istimewa. Administrator (termasuk peran yang memiliki CREATE ROLE hak istimewa) dapat memberikan peran ini atau peran lain di lingkungan mereka kepada pengguna, memberi mereka akses ke kemampuan dan informasi yang ditentukan.

Administrator dapat memberikan pengguna akses ke peran ini menggunakan GRANT perintah. Misalnya, untuk memberikan pg_signal_backend peranAdmin_User, Anda dapat menjalankan perintah berikut.

GRANT pg_signal_backend TO Admin_User;

pg_signal_backendPeran ini dimaksudkan untuk memungkinkan administrator mengaktifkan peran non-superuser tepercaya untuk mengirim sinyal ke backend lain. Untuk informasi lebih lanjut, lihat peningkatan PostgreSQL 14.

Akses fine-tuning

Dalam beberapa kasus, mungkin perlu menyediakan akses yang lebih terperinci ke pengguna (misalnya, akses berbasis tabel atau akses berbasis kolom). Dalam kasus seperti itu, peran tambahan dapat dibuat untuk memberikan hak istimewa tersebut kepada pengguna. Untuk informasi lebih lanjut, lihat Hibah PostgreSQL.