

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

# Menggunakan grup keamanan AD untuk kontrol akses Aurora PostgreSQL
<a name="AD.Security.Groups"></a>

Dari Aurora PostgreSQL 14.10 dan 15.5 versi, Aurora PostgreSQL Access Control dapat dikelola menggunakan Directory Service untuk grup keamanan Microsoft Active Directory (AD). AWS Versi sebelumnya dari Aurora PostgreSQL mendukung otentikasi berbasis Kerberos dengan AD hanya untuk pengguna individu. Setiap pengguna AD harus secara eksplisit disediakan ke cluster DB untuk mendapatkan akses. 

Alih-alih secara eksplisit menyediakan setiap pengguna AD ke klaster DB berdasarkan kebutuhan bisnis, Anda dapat memanfaatkan grup keamanan AD seperti yang dijelaskan di bawah ini: 
+ Pengguna AD adalah anggota dari berbagai grup keamanan AD di Active Directory. Ini tidak ditentukan oleh administrator cluster DB, tetapi didasarkan pada persyaratan bisnis, dan ditangani oleh administrator AD.
+ Administrator cluster DB membuat peran DB dalam instans DB berdasarkan persyaratan bisnis. Peran DB ini mungkin memiliki izin atau hak istimewa yang berbeda.
+ Administrator cluster DB mengonfigurasi pemetaan dari grup keamanan AD ke peran DB berdasarkan per cluster DB.
+ Pengguna DB dapat mengakses kluster DB menggunakan kredensyal AD mereka. Akses didasarkan pada keanggotaan grup keamanan AD. Pengguna iklan mendapatkan atau kehilangan akses secara otomatis berdasarkan keanggotaan grup iklan mereka.

## Prasyarat
<a name="AD.Security.Groups.Prereq"></a>

Pastikan Anda memiliki hal berikut sebelum menyiapkan ekstensi untuk grup Keamanan AD:
+ Siapkan otentikasi Kerberos untuk cluster PostgreSQL DB. Untuk informasi selengkapnya, lihat [Menyiapkan otentikasi Kerberos untuk klaster PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-setting-up.html) DB.
**catatan**  
Untuk grup keamanan AD, lewati Langkah 7: Buat pengguna PostgreSQL untuk prinsipal Kerberos Anda dalam prosedur penyiapan ini.
**penting**  
Jika Anda mengaktifkan grup keamanan AD di klaster PostgreSQL Aurora yang telah mengaktifkan autentikasi Kerberos, Anda mungkin mengalami masalah autentikasi. Ini terjadi ketika Anda menambahkan `pg_ad_mapping` ke `shared_preload_libraries` parameter dan memulai ulang database Anda. Saat menggunakan titik akhir klaster, upaya login menggunakan pengguna AD yang bukan pengguna database dengan `rds_ad` peran dapat gagal. Ini juga berpotensi menyebabkan kerusakan mesin. Untuk mengatasi masalah ini, nonaktifkan lalu aktifkan kembali otentikasi Kerberos di cluster Anda. Solusi ini diperlukan untuk instance yang ada tetapi tidak memengaruhi instance yang dibuat setelah April 2025.
+ Mengelola cluster DB dalam Domain. Untuk informasi selengkapnya, lihat [Mengelola cluster DB di Domain](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-managing.html).

## Menyiapkan ekstensi pg\$1ad\$1mapping
<a name="AD.Security.Groups.Setup"></a>

Aurora PostgreSQL sekarang menyediakan `pg_ad_mapping` ekstensi untuk mengelola pemetaan antara grup keamanan AD dan peran DB di cluster Aurora PostgreSQL. Untuk informasi selengkapnya tentang fungsi yang disediakan oleh`pg_ad_mapping`, lihat[Menggunakan fungsi dari `pg_ad_mapping` ekstensi](#AD.Security.Groups.functions).

Untuk menyiapkan `pg_ad_mapping` ekstensi pada klaster Aurora PostgreSQL DB, Anda terlebih dahulu menambahkan `pg_ad_mapping` ke pustaka bersama pada grup parameter cluster DB kustom untuk klaster Aurora PostgreSQL DB Anda. Untuk informasi tentang membuat grup parameter cluster DB kustom, lihat[](USER_WorkingWithParamGroups.md). Selanjutnya, Anda menginstal `pg_ad_mapping` ekstensi. Prosedur di bagian ini menunjukkan caranya kepada Anda. Anda dapat menggunakan Konsol Manajemen AWS atau AWS CLI. 

Anda harus memiliki izin sebagai peran `rds_superuser` untuk melakukan semua tugas ini.

Langkah-langkah berikut mengasumsikan bahwa cluster Aurora PostgreSQL DB Anda dikaitkan dengan grup parameter cluster DB kustom.

### Konsol
<a name="AD.Security.Groups.basic-setup.CON"></a>

**Untuk mengatur `pg_ad_mapping` ekstensi**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih instance Writer cluster PostgreSQL DB Aurora Anda.

1. Buka tab **Konfigurasi** untuk instance penulis cluster Aurora PostgreSQL DB Anda. Di antara detail Instans, temukan tautan **Grup parameter**. 

1. Pilih tautan untuk membuka parameter kustom yang terkait dengan klaster DB Aurora PostgreSQL Anda. 

1. Di kolom pencarian **Parameter**, ketik `shared_pre` untuk menemukan parameter `shared_preload_libraries`.

1. Pilih **Edit parameter** untuk mengakses nilai properti.

1. Tambahkan `pg_ad_mapping` ke daftar di kolom **Nilai**. Gunakan koma untuk memisahkan item dalam daftar nilai.   
![\[Gambar parameter shared_preload_libaries dengan pgAudit yang ditambahkan.\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/images/apg_shared_preload_pgadmapping.png)

1. Reboot instance penulis cluster Aurora PostgreSQL DB Anda sehingga perubahan Anda pada parameter berlaku. `shared_preload_libraries` 

1. Ketika instans tersedia, verifikasi bahwa `pg_ad_mapping` telah diinisialisasi. Gunakan `psql` untuk terhubung ke instance penulis cluster Aurora PostgreSQL DB Anda, dan kemudian jalankan perintah berikut.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_ad_mapping
   (1 row)
   ```

1. Dengan `pg_ad_mapping` diinisialisasi, Anda sekarang dapat membuat ekstensi. Anda perlu membuat ekstensi setelah menginisialisasi perpustakaan untuk mulai menggunakan fungsi yang disediakan oleh ekstensi ini. 

   ```
   CREATE EXTENSION pg_ad_mapping;
   ```

1. Tutup sesi `psql`.

   ```
   labdb=> \q
   ```

### AWS CLI
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup.CLI"></a>

**Untuk mengatur pg\$1ad\$1mapping**

Untuk mengatur pg\$1ad\$1mapping menggunakan AWS CLI, Anda memanggil [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html)operasi untuk menambahkan parameter ini dalam grup parameter kustom Anda, seperti yang ditunjukkan dalam prosedur berikut.

1. Gunakan AWS CLI perintah berikut `pg_ad_mapping` untuk menambah `shared_preload_libraries` parameter.

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=shared_preload_libraries,ParameterValue=pg_ad_mapping,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. Gunakan AWS CLI perintah berikut untuk me-reboot instance penulis cluster Aurora PostgreSQL DB Anda sehingga pg\$1ad\$1mapping diinisialisasi.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

1. Saat instans tersedia, verifikasikan bahwa `pg_ad_mapping` telah diinisialisasi. Gunakan `psql` untuk terhubung ke instance penulis cluster Aurora PostgreSQL DB Anda, dan kemudian jalankan perintah berikut.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_ad_mapping
   (1 row)
   ```

   Dengan pg\$1ad\$1mapping diinisialisasi, Anda sekarang dapat membuat ekstensi.

   ```
   CREATE EXTENSION pg_ad_mapping;
   ```

1. Tutup sesi `psql` sehingga Anda dapat menggunakan AWS CLI.

   ```
   labdb=> \q
   ```

## Mengambil SID Grup Direktori Aktif di PowerShell
<a name="AD.Security.Groups.retrieving"></a>

Security identifier (SID) digunakan untuk mengidentifikasi prinsip keamanan atau kelompok keamanan secara unik. Setiap kali grup keamanan atau akun dibuat di Active Directory, SID ditugaskan untuk itu. Untuk mengambil SID grup keamanan AD dari direktori aktif, Anda dapat menggunakan Get-ADGroup cmdlet dari mesin klien windows yang bergabung dengan domain Active Directory tersebut. Parameter Identity menentukan nama grup Active Directory untuk mendapatkan SID yang sesuai. 

Contoh berikut mengembalikan SID grup AD*adgroup1*.

```
C:\Users\Admin> Get-ADGroup -Identity adgroup1 | select SID
            
             SID
-----------------------------------------------
S-1-5-21-3168537779-1985441202-1799118680-1612
```

## Memetakan peran DB dengan grup keamanan AD
<a name="AD.Security.Groups.mapping"></a>

Anda harus secara eksplisit menyediakan grup keamanan AD dalam database sebagai peran PostgreSQL DB. Pengguna AD, yang merupakan bagian dari setidaknya satu grup keamanan AD yang disediakan akan mendapatkan akses ke database. Anda tidak boleh memberikan `rds_ad role` peran DB berbasis keamanan grup AD. Otentikasi Kerberos untuk grup keamanan akan dipicu dengan menggunakan akhiran nama domain seperti. *user1@example.com* Peran DB ini tidak dapat menggunakan Password atau autentikasi IAM untuk mendapatkan akses ke database.

**catatan**  
Pengguna AD yang memiliki peran DB terkait dalam database dengan `rds_ad` peran yang diberikan kepada mereka, tidak dapat masuk sebagai bagian dari grup keamanan AD. Mereka akan mendapatkan akses melalui peran DB sebagai pengguna individu.

Misalnya, grup akun adalah grup keamanan di AD tempat Anda ingin menyediakan grup keamanan ini di Aurora PostgreSQL sebagai peran akun.


| Grup Keamanan AD | Peran PosgreSQL DB | 
| --- | --- | 
| akun-grup | akun-peran  | 

Saat memetakan peran DB dengan grup keamanan AD, Anda harus memastikan bahwa peran DB memiliki atribut LOGIN yang ditetapkan dan memiliki hak istimewa CONNECT ke database login yang diperlukan.

```
postgres => alter role accounts-role login;
        
ALTER ROLE
postgres => grant connect on database accounts-db to accounts-role;
```

Admin sekarang dapat melanjutkan untuk membuat pemetaan antara grup keamanan AD dan peran PostgreSQL DB.

```
admin=>select pgadmap_set_mapping('accounts-group', 'accounts-role', <SID>, <Weight>);
```

Untuk informasi tentang mengambil SID grup keamanan AD, lihat[Mengambil SID Grup Direktori Aktif di PowerShell](#AD.Security.Groups.retrieving).

Mungkin ada kasus di mana pengguna AD termasuk dalam beberapa grup, dalam hal ini, pengguna AD akan mewarisi hak istimewa peran DB, yang disediakan dengan bobot tertinggi. Jika kedua peran memiliki bobot yang sama, pengguna AD akan mewarisi hak istimewa peran DB yang sesuai dengan pemetaan yang ditambahkan baru-baru ini. Rekomendasinya adalah untuk menentukan bobot yang mencerminkan relatif permissions/privileges peran DB individu. Lebih tinggi izin atau hak istimewa peran DB, lebih tinggi bobot yang harus dikaitkan dengan entri pemetaan. Ini akan menghindari ambiguitas dua pemetaan yang memiliki bobot yang sama.

Tabel berikut menunjukkan contoh pemetaan dari grup keamanan AD ke peran Aurora PostgreSQL DB.


| Grup Keamanan AD | Peran PosgreSQL DB | Bobot | 
| --- | --- | --- | 
| akun-grup | akun-peran | 7 | 
| kelompok penjualan | peran penjualan | 10 | 
| kelompok pengembang | peran pengembang | 7 | 

Dalam contoh berikut, `user1` akan mewarisi hak istimewa peran penjualan karena memiliki bobot yang lebih tinggi sementara `user2` akan mewarisi hak istimewa sebagai pemetaan untuk peran ini dibuat `dev-role` setelahnya`accounts-role`, yang memiliki bobot yang sama dengan. `accounts-role`


| nama pengguna | Keanggotaan Grup Keamanan | 
| --- | --- | 
| user1 | akun-kelompok penjualan-kelompok | 
| user2 | akun-grup dev-group | 

Perintah psql untuk membuat, membuat daftar, dan menghapus pemetaan ditunjukkan di bawah ini. Saat ini, tidak mungkin untuk memodifikasi entri pemetaan tunggal. Entri yang ada perlu dihapus dan pemetaan dibuat ulang.

```
admin=>select pgadmap_set_mapping('accounts-group', 'accounts-role', 'S-1-5-67-890', 7);
admin=>select pgadmap_set_mapping('sales-group', 'sales-role', 'S-1-2-34-560', 10);
admin=>select pgadmap_set_mapping('dev-group', 'dev-role', 'S-1-8-43-612', 7);
            
admin=>select * from pgadmap_read_mapping();
            
ad_sid       | pg_role        | weight | ad_grp 
-------------+----------------+--------+---------------
S-1-5-67-890 | accounts-role | 7      | accounts-group
S-1-2-34-560 | sales-role    | 10     | sales-group
S-1-8-43-612 | dev-role      | 7      | dev-group
(3 rows)
```

## Pencatatan/audit identitas pengguna AD
<a name="AD.Security.Groups.useridentity"></a>

Gunakan perintah berikut untuk menentukan peran database yang diwarisi oleh pengguna saat ini atau sesi:

```
postgres=>select session_user, current_user;
            
session_user | current_user
-------------+--------------
dev-role     | dev-role

(1 row)
```

Untuk menentukan identitas utama keamanan AD, gunakan perintah berikut:

```
postgres=>select principal from pg_stat_gssapi where pid = pg_backend_pid();
            
 principal        
-------------------------
 user1@example.com

(1 row)
```

Saat ini, identitas pengguna AD tidak terlihat di log audit. `log_connections`Parameter dapat diaktifkan untuk mencatat pembentukan sesi DB. Untuk informasi selengkapnya, lihat [log\$1connections](https://docs.aws.amazon.com/prescriptive-guidance/latest/tuning-postgresql-parameters/log-connections.html). Output untuk ini termasuk identitas pengguna AD, seperti yang ditunjukkan di bawah ini. PID backend yang terkait dengan output ini kemudian dapat membantu tindakan atribut kembali ke pengguna AD yang sebenarnya. 

```
pgrole1@postgres:[615]:LOG: connection authorized: user=pgrole1 database=postgres application_name=psql GSS (authenticated=yes, encrypted=yes, principal=Admin@EXAMPLE.COM)
```

## Batasan
<a name="AD.Security.Groups.limitations"></a>
+ ID Microsoft Entra yang dikenal sebagai Azure Active Directory tidak didukung. 

## Menggunakan fungsi dari `pg_ad_mapping` ekstensi
<a name="AD.Security.Groups.functions"></a>

`pg_ad_mapping`ekstensi memberikan dukungan untuk fungsi-fungsi berikut:

### pgadmap\$1set\$1mapping
<a name="AD.Security.Groups.functions.setmapping"></a>

Fungsi ini menetapkan pemetaan antara grup keamanan AD dan peran Database dengan bobot terkait.

#### Sintaksis
<a name="pgadmap_set_mapping-syntax"></a>

 

```
pgadmap_set_mapping(
ad_group, 
db_role, 
ad_group_sid, 
weight)
```

#### Argumen
<a name="pgadmap_set_mapping-arguments"></a>


| Parameter | Deskripsi | 
| --- | --- | 
| ad\$1group | Nama Grup AD. Nilai tidak bisa null atau string kosong. | 
| db\$1role | Peran database yang akan dipetakan ke Grup AD yang ditentukan. Nilai tidak bisa null atau string kosong. | 
| ad\$1group\$1id | Pengidentifikasi keamanan yang digunakan untuk mengidentifikasi grup AD secara unik. Nilai dimulai dengan 'S-1-' dan tidak dapat berupa string nol atau kosong. Untuk informasi selengkapnya, lihat [Mengambil SID Grup Direktori Aktif di PowerShell](#AD.Security.Groups.retrieving). | 
| berat | Berat yang terkait dengan peran database. Peran dengan bobot tertinggi diutamakan ketika pengguna adalah anggota dari beberapa grup. Nilai default berat adalah 1. | 

#### Jenis pengembalian
<a name="pgadmap_set_mapping-return-type"></a>

`None`

#### Catatan penggunaan
<a name="pgadmap_set_mapping-usage-notes"></a>

Fungsi ini menambahkan pemetaan baru dari grup keamanan AD ke peran database. Itu hanya dapat dieksekusi pada instance DB utama dari cluster DB oleh pengguna yang memiliki hak istimewa rds\$1superuser. 

#### Contoh
<a name="pgadmap_set_mapping-examples"></a>

```
postgres=> select pgadmap_set_mapping('accounts-group','accounts-role','S-1-2-33-12345-67890-12345-678',10);
            
pgadmap_set_mapping 

(1 row)
```

### pgadmap\$1read\$1mapping
<a name="AD.Security.Groups.functions.readmapping"></a>

Fungsi ini mencantumkan pemetaan antara grup keamanan AD dan peran DB yang disetel menggunakan `pgadmap_set_mapping` fungsi.

#### Sintaksis
<a name="pgadmap_read_mapping-syntax"></a>

 

```
pgadmap_read_mapping()
```

#### Argumen
<a name="pgadmap_read_mapping-arguments"></a>

`None`

#### Jenis pengembalian
<a name="pgadmap_read_mapping-return-type"></a>


| Parameter | Deskripsi | 
| --- | --- | 
| ad\$1group\$1id | Pengidentifikasi keamanan yang digunakan untuk mengidentifikasi grup AD secara unik. Nilai dimulai dengan 'S-1-' dan tidak dapat berupa string nol atau kosong. Untuk informasi lebih lanjut, lihat [Mengambil SID Grup Direktori Aktif di PowerShell](#AD.Security.Groups.retrieving) .accounts-role@example.com | 
| db\$1role | Peran database yang akan dipetakan ke Grup AD yang ditentukan. Nilai tidak bisa null atau string kosong. | 
| berat | Berat yang terkait dengan peran database. Peran dengan bobot tertinggi diutamakan ketika pengguna adalah anggota dari beberapa grup. Nilai default berat adalah 1. | 
| ad\$1group | Nama Grup AD. Nilai tidak bisa null atau string kosong. | 

#### Catatan penggunaan
<a name="pgadmap_read_mapping-usage-notes"></a>

Panggil fungsi ini untuk mencantumkan semua pemetaan yang tersedia antara grup keamanan AD dan peran DB. 

#### Contoh
<a name="pgadmap_read_mapping-examples"></a>

```
postgres=> select * from pgadmap_read_mapping();
            
ad_sid                              | pg_role       | weight | ad_grp 
------------------------------------+---------------+--------+------------------
S-1-2-33-12345-67890-12345-678      | accounts-role | 10     | accounts-group
(1 row)

(1 row)
```

### pgadmap\$1reset\$1mapping
<a name="AD.Security.Groups.functions.resetmapping"></a>

Fungsi ini me-reset satu atau semua pemetaan yang diatur menggunakan fungsi. `pgadmap_set_mapping`

#### Sintaksis
<a name="pgadmap_reset_mapping-syntax"></a>

 

```
pgadmap_reset_mapping(
ad_group_sid, 
db_role, 
weight)
```

#### Argumen
<a name="pgadmap_reset_mapping-arguments"></a>


| Parameter | Deskripsi | 
| --- | --- | 
| ad\$1group\$1id | Pengidentifikasi keamanan yang digunakan untuk mengidentifikasi grup AD secara unik. | 
| db\$1role | Peran database yang akan dipetakan ke Grup AD yang ditentukan. | 
| berat | Berat yang terkait dengan peran database. | 

Jika tidak ada argumen yang diberikan, semua pemetaan peran grup AD ke DB disetel ulang. Entah semua argumen perlu disediakan atau tidak sama sekali.

#### Jenis pengembalian
<a name="pgadmap_reset_mapping-return-type"></a>

`None`

#### Catatan penggunaan
<a name="pgadmap_reset_mapping-usage-notes"></a>

Panggil fungsi ini untuk menghapus grup AD tertentu ke pemetaan peran DB atau untuk mengatur ulang semua pemetaan. Fungsi ini hanya dapat dijalankan pada instance DB utama dari cluster DB oleh pengguna yang memiliki `rds_superuser` hak istimewa. 

#### Contoh
<a name="pgadmap_reset_mapping-examples"></a>

```
postgres=> select * from pgadmap_read_mapping();
            
   ad_sid                       | pg_role      | weight      | ad_grp 
--------------------------------+--------------+-------------+-------------------
 S-1-2-33-12345-67890-12345-678 | accounts-role| 10          | accounts-group
 S-1-2-33-12345-67890-12345-666 | sales-role   | 10          | sales-group
 
(2 rows)
postgres=> select pgadmap_reset_mapping('S-1-2-33-12345-67890-12345-678', 'accounts-role', 10);
                
pgadmap_reset_mapping   
(1 row)
                
postgres=> select * from pgadmap_read_mapping();
            
   ad_sid                       | pg_role      | weight      | ad_grp 
--------------------------------+--------------+-------------+---------------
 S-1-2-33-12345-67890-12345-666 | sales-role   | 10          | sales-group
 
(1 row)
postgres=> select pgadmap_reset_mapping();

pgadmap_reset_mapping   
(1 row)
                
postgres=> select * from pgadmap_read_mapping();
            
   ad_sid                       | pg_role      | weight      | ad_grp 
--------------------------------+--------------+-------------+--------------
 (0 rows)
```