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 Postgre SQL
Dari Aurora Postgre SQL 14.10 dan 15.5 versi, kontrol akses Aurora Postgre dapat dikelola menggunakan SQL AWS Directory Service untuk grup keamanan Microsoft Active Directory (AD). Versi Aurora Postgre sebelumnya SQL 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
Pastikan Anda memiliki hal berikut sebelum menyiapkan ekstensi untuk grup Keamanan AD:
-
Siapkan otentikasi Kerberos untuk cluster SQL Postgre DB. Untuk informasi selengkapnya, lihat Menyiapkan otentikasi Kerberos untuk klaster SQL Postgre DB.
catatan
Untuk grup keamanan AD, lewati Langkah 7: Buat SQL pengguna Postgre untuk kepala sekolah Kerberos Anda dalam prosedur penyiapan ini.
Mengelola cluster DB dalam Domain. Untuk informasi selengkapnya, lihat Mengelola cluster DB di Domain.
Menyiapkan ekstensi pg_ad_mapping
Aurora Postgre SQL sekarang menyediakan pg_ad_mapping
ekstensi untuk mengelola pemetaan antara grup keamanan AD dan peran DB di cluster Aurora Postgre. SQL Untuk informasi selengkapnya tentang fungsi yang disediakan olehpg_ad_mapping
, lihatMenggunakan fungsi dari pg_ad_mapping ekstensi.
Untuk menyiapkan pg_ad_mapping
ekstensi pada cluster SQL DB Aurora Postgre Anda, pertama-tama Anda menambahkan pg_ad_mapping
ke pustaka bersama pada grup parameter cluster DB kustom untuk cluster DB Aurora Postgre Anda. SQL Untuk informasi tentang membuat grup parameter cluster DB kustom, lihat. Selanjutnya, Anda menginstal pg_ad_mapping
ekstensi. Prosedur di bagian ini menunjukkan caranya kepada Anda. Anda dapat menggunakan AWS Management Console atau AWS CLI.
Anda harus memiliki izin sebagai peran rds_superuser
untuk melakukan semua tugas ini.
Langkah-langkah berikut mengasumsikan bahwa cluster SQL DB Aurora Postgre Anda dikaitkan dengan grup parameter cluster DB kustom.
Untuk mengatur pg_ad_mapping
ekstensi
Masuk ke AWS Management Console dan buka RDS konsol Amazon di https://console.aws.amazon.com/rds/
. -
Di panel navigasi, pilih instance Writer cluster Aurora SQL Postgre DB Anda.
-
Buka tab Konfigurasi untuk instance penulis cluster Aurora Postgre SQL DB Anda. Di antara detail Instans, temukan tautan Grup parameter.
-
Pilih tautan untuk membuka parameter khusus yang terkait dengan cluster Aurora SQL Postgre DB Anda.
-
Di kolom pencarian Parameter, ketik
shared_pre
untuk menemukan parametershared_preload_libraries
. -
Pilih Edit parameter untuk mengakses nilai properti.
-
Tambahkan
pg_ad_mapping
ke daftar di kolom Nilai. Gunakan koma untuk memisahkan item dalam daftar nilai. Reboot instance penulis cluster Aurora Postgre SQL DB Anda sehingga perubahan Anda pada
shared_preload_libraries
parameter berlaku.Ketika instans tersedia, verifikasi bahwa
pg_ad_mapping
telah diinisialisasi. Gunakanpsql
untuk terhubung ke instance penulis cluster Aurora Postgre SQL DB Anda, dan kemudian jalankan perintah berikut.SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pg_ad_mapping (1 row)
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;
Tutup sesi
psql
.labdb=>
\q
Untuk mengatur pg_ad_mapping
Untuk mengatur pg_ad_mapping menggunakan AWS CLI, Anda memanggil modify-db-parameter-groupoperasi untuk menambahkan parameter ini di grup parameter kustom Anda, seperti yang ditunjukkan dalam prosedur berikut.
Gunakan yang berikut ini AWS CLI perintah untuk
pg_ad_mapping
menambahshared_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" \ --regionaws-region
-
Gunakan yang berikut ini AWS CLI perintah untuk me-reboot instance penulis cluster Aurora Postgre SQL DB Anda sehingga pg_ad_mapping diinisialisasi.
aws rds reboot-db-instance \ --db-instance-identifier
writer-instance
\ --regionaws-region
Saat instans tersedia, verifikasikan bahwa
pg_ad_mapping
telah diinisialisasi. Gunakanpsql
untuk terhubung ke instance penulis cluster Aurora Postgre SQL DB Anda, dan kemudian jalankan perintah berikut.SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pg_ad_mapping (1 row)
Dengan pg_ad_mapping diinisialisasi, Anda sekarang dapat membuat ekstensi.
CREATE EXTENSION pg_ad_mapping;
Tutup
psql
sesi sehingga Anda dapat menggunakan AWS CLI.labdb=>
\q
Mengambil Grup SID Direktori Aktif di PowerShell
Security identifier (SID) digunakan untuk mengidentifikasi prinsip keamanan atau kelompok keamanan secara unik. Setiap kali grup keamanan atau akun dibuat di Active Directory a SID ditugaskan untuk itu. Untuk mengambil grup keamanan AD SID dari direktori aktif, Anda dapat menggunakan Get- ADGroup cmdlet dari mesin klien windows yang digabungkan dengan domain Active Directory tersebut. Parameter Identity menentukan nama grup Active Directory untuk mendapatkan yang sesuaiSID.
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
Anda perlu secara eksplisit menyediakan grup keamanan AD dalam database sebagai peran SQL Postgre 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 Kata Sandi atau IAM otentikasi 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 Postgre sebagai peran akun. SQL
Grup Keamanan AD | Peran Posgre DB SQL |
---|---|
akun-grup | akun-peran |
Saat memetakan peran DB dengan grup keamanan AD, Anda harus memastikan bahwa peran DB memiliki LOGIN atribut yang ditetapkan dan memiliki CONNECT hak istimewa untuk database login yang diperlukan.
postgres =>
alter role
accounts-role
login;ALTER ROLE
postgres =>
grant connect on databaseaccounts-db
toaccounts-role
;
Admin sekarang dapat melanjutkan untuk membuat pemetaan antara grup keamanan AD dan peran Postgre DBSQL.
admin=>
select pgadmap_set_mapping(
'accounts-group'
,'accounts-role'
,<SID>
,<Weight>
);
Untuk informasi tentang pengambilan SID grup keamanan AD, lihatMengambil Grup SID Direktori Aktif di PowerShell.
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 izin/hak istimewa relatif dari 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 SQL Postgre DB.
Grup Keamanan AD | Peran Posgre DB SQL | Berat Badan |
---|---|---|
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
setelahnyaaccounts-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
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_connections. Output untuk ini termasuk identitas pengguna AD, seperti yang ditunjukkan di bawah ini. Backend PID 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
ID Microsoft Entra yang dikenal sebagai Azure Active Directory tidak didukung.
Menggunakan fungsi dari pg_ad_mapping
ekstensi
pg_ad_mapping
ekstensi memberikan dukungan untuk fungsi-fungsi berikut:
pgadmap_set_mapping
Fungsi ini menetapkan pemetaan antara grup keamanan AD dan peran Database dengan bobot terkait.
Sintaks
pgadmap_set_mapping(
ad_group,
db_role,
ad_group_sid,
weight)
Argumen
Parameter | Deskripsi |
---|---|
ad_group | Nama Grup AD. Nilai tidak bisa null atau string kosong. |
db_role | Peran database yang akan dipetakan ke Grup AD yang ditentukan. Nilai tidak bisa null atau string kosong. |
ad_group_id | 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 Grup SID Direktori Aktif di PowerShell. |
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
None
Catatan penggunaan
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_superuser.
Contoh
postgres=>
select pgadmap_set_mapping('accounts-group','accounts-role','S-1-2-33-12345-67890-12345-678',10);pgadmap_set_mapping (1 row)
pgadmap_read_mapping
Fungsi ini mencantumkan pemetaan antara grup keamanan AD dan peran DB yang disetel menggunakan pgadmap_set_mapping
fungsi.
Sintaks
pgadmap_read_mapping()
Argumen
None
Jenis pengembalian
Parameter | Deskripsi |
---|---|
ad_group_id | 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 Grup SID Direktori Aktif di PowerShell .accounts-role@example.com |
db_role | 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_group | Nama Grup AD. Nilai tidak bisa null atau string kosong. |
Catatan penggunaan
Panggil fungsi ini untuk mencantumkan semua pemetaan yang tersedia antara grup keamanan AD dan peran DB.
Contoh
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_reset_mapping
Fungsi ini me-reset satu atau semua pemetaan yang diatur menggunakan fungsi. pgadmap_set_mapping
Sintaks
pgadmap_reset_mapping(
ad_group_sid,
db_role,
weight)
Argumen
Parameter | Deskripsi |
---|---|
ad_group_id | Pengidentifikasi keamanan yang digunakan untuk mengidentifikasi grup AD secara unik. |
db_role | 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
None
Catatan penggunaan
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
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)