

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
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible"></a>

*Abhishek Verma, Amazon Web Services*

## Ringkasan
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-summary"></a>

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](https://aws.amazon.com/blogs/database/use-sql-to-map-users-roles-and-grants-from-oracle-to-postgresql) 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 skema`APP_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
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-prereqs"></a>

**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
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-architecture"></a>

**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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/80105a81-e3d1-4258-b3c1-77f3a5e78592/images/b95cb9bc-8bf7-47d1-92e7-66cfb37d7ce7.png)


                                                                                                                                    

**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
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-tools"></a>

**Layanan AWS**
+ [Amazon Aurora PostgreSQL Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) adalah mesin database relasional yang dikelola sepenuhnya dan sesuai dengan ACID yang membantu Anda mengatur, mengoperasikan, dan menskalakan penerapan PostgreSQL.

**Layanan lainnya**
+ [psql](https://www.postgresql.org/docs/current/app-psql.html) 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](https://www.pgadmin.org/) adalah alat manajemen sumber terbuka untuk PostgreSQL. Ini menyediakan antarmuka grafis yang membantu Anda membuat, memelihara, dan menggunakan objek database.

## Epik
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-epics"></a>

### Buat pengguna dan peran
<a name="create-the-users-and-roles"></a>


| Tugas | Deskripsi | Keterampilan 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.<pre>CREATE SCHEMA APP;</pre><br />2. Buat pengguna.<pre>CREATE USER APP WITH PASSWORD  <password> ;</pre><br />3. Buat peran.<pre>CREATE ROLE APP_DEP ;<br />GRANT all on  schema APP to APP_DEP ;<br />GRANT USAGE ON SCHEMA APP to APP_DEP ;<br />GRANT connect on database <db_name>  to APP_DEP ;<br />GRANT APP_DEP to APP;</pre><br />4. Untuk menguji hak istimewa, sambungkan ke `APP` dan buat tabel.<pre>set search_path to APP;<br />SET<br />CREATE TABLE test(id integer ) ;<br />CREATE TABLE</pre><br />5. Periksa hak istimewa.<pre>select schemaname  , tablename , tableowner    from pg_tables where tablename like 'test' ;<br />schemaname   | tablename |  tableowner <br />APP                  | test            | APP</pre> | 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 pengguna`APP_read`.<pre>create user APP_read ;<br />alter user APP_read with password 'your_password' ;</pre><br />2. Buat peran.<pre>CREATE ROLE APP_ro ;<br />GRANT SELECT ON ALL TABLES IN SCHEMA  APP  TO  APP_RO   ;<br />GRANT USAGE ON SCHEMA  APP   TO APP_RO<br />GRANT CONNECT ON DATABASE  testdb  TO APP_RO ;<br />GRANT APP_RO TO APP_read;</pre><br />3. Untuk menguji hak istimewa, masuk menggunakan `APP_read` pengguna.<pre>set search_path to APP ;<br />create table test1( id integer) ;<br />ERROR:  permission denied for schema APP<br />LINE 1: create table test1( id integer) ;<br />insert into test values (34) ;<br />ERROR: permission denied for table test SQL state: 42501<br />select from test<br />no rows selected</pre> | DBA | 
| Buat read/write pengguna. |  read/write Pengguna `APP_WRITE` akan digunakan untuk melakukan operasi baca dan tulis pada skema`APP`. 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.<pre>CREATE USER APP_WRITE ;<br />alter user APP_WRITE  with password 'your_password' ;</pre><br />2. Buat peran.<pre>CREATE ROLE APP_RW;<br />GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA APP   TO APP_RW ;<br />GRANT CONNECT ON DATABASE postgres to APP_RW ;<br />GRANT USAGE ON SCHEMA APP to APP_RW ;<br />ALTER DEFAULT PRIVILEGES IN SCHEMA APP<br />GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO APP_RW ;<br />GRANT APP_RW to APP_WRITE</pre><br />3. Untuk menguji hak istimewa, masuk menggunakan `APP_WRITE` pengguna.<pre>SET SEARCH_PATH to APP;<br />CREATE TABLE test1( id integer) ;<br />ERROR:   permission denied for schema APP<br />LINE 1: create table test1( id integer) ;<br />SELECT * FROM test ;<br />id <br />----<br />12<br />INSERT INTO test values (31) ;<br />INSERT 0 1</pre> |  | 
| Buat pengguna admin. | Pengguna admin `Admin_User` akan digunakan untuk melakukan operasi admin pada database. Contoh operasi ini adalah `CREATE ROLE` dan`CREATE DATABASE`. `Admin_User`menggunakan 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.<pre>create user Admin_User WITH PASSWORD   ‘Your password’<br />ALTER user Admin_user CREATEDB;<br />ALTER user Admin_user CREATEROLE;</pre><br />2. Untuk menguji hak istimewa, masuk dari `Admin_User` pengguna.<pre>SELECT * FROM APP.test ;<br />  id<br />  ----<br />   31<br />CREATE ROLE TEST ;<br />CREATE DATABASE test123 ;</pre> | DBA | 
| Buat pengguna pengembangan. | Pengguna pengembangan `APP_dev_user` akan memiliki hak untuk membuat objek dalam skema lokalnya `APP_DEV` dan membaca akses dalam skema`APP`. Gunakan skrip berikut untuk membuat dan menguji hak istimewa pengguna `APP_dev_user` dalam database.1. Buat pengguna.<pre>CREATE USER APP1_dev_user with password ‘your password’;</pre><br />2. Buat `APP_DEV` skema untuk. `App_dev_user`<pre>CREATE SCHEMA APP1_DEV ;</pre><br />3. Buat `APP_DEV` peran.<pre>CREATE ROLE APP1_DEV ;<br />GRANT   APP1_RO to APP1_DEV ;<br />GRANT SELECT ON ALL TABLES IN SCHEMA APP1_DEV to APP1_dev_user<br />GRANT USAGE, CREATE ON SCHEMA APP1_DEV to APP1_DEV_USER<br />GRANT APP1_DEV  to APP1_DEV_USER ;</pre><br />4. Untuk menguji hak istimewa, masuk dari`APP_dev_user`.<pre>CREATE TABLE APP1_dev.test1( id integer ) ;<br />CREATE TABLE<br />INSERT into APP1_dev.test1 ( select * from APP1.test );<br />INSERT 0 1<br />CREATE TABLE APP1.test4 ( id int) ;<br />ERROR:   permission denied for schema APP1<br />LINE 1: create table APP1.test4 ( id int) ;</pre> | DBA | 

## Sumber daya terkait
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-resources"></a>

**Dokumentasi PostgreSQL**
+ [BUAT PERAN](https://www.postgresql.org/docs/9.1/sql-createrole.html)
+ [BUAT PENGGUNA](https://www.postgresql.org/docs/8.0/sql-createuser.html)
+ [Peran yang telah ditentukan](https://www.postgresql.org/docs/14/predefined-roles.html)

 

## Informasi tambahan
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-additional"></a>

**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` peran`Admin_User`, Anda dapat menjalankan perintah berikut.

```
GRANT pg_signal_backend TO Admin_User;
```

`pg_signal_backend`Peran ini dimaksudkan untuk memungkinkan administrator mengaktifkan peran non-superuser tepercaya untuk mengirim sinyal ke backend lain. Untuk informasi lebih lanjut, lihat peningkatan [PostgreSQL 14](https://www.postgresql.org/docs/14/predefined-roles.html).

**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](https://www.postgresql.org/docs/8.4/sql-grant.html).