it-swarm.asia

Bagaimana cara menetapkan seluruh akses keamanan grup Direktori Aktif di SQL Server 2008?

Saya ingin menggunakan keamanan terintegrasi dengan aplikasi internal saya yang semuanya ada di domain. Sayangnya, saya tidak pernah bisa melakukan ini dengan baik. Saya ingin menetapkan seluruh Grup Exchange (Direktori Aktif) peran dalam SQL Server untuk akses baca/tulis ke tabel tertentu. Dengan begitu saya tidak perlu membuat operator setiap kali seseorang dipekerjakan atau menghapus operator setiap kali seseorang dipecat. Apakah ini mungkin? Langkah apa yang akan saya ambil untuk melakukan ini?

40
  • Atur grup AD sebagai login. Dan "login" berarti login tingkat server bukan konsep AD pengguna/login. Dalam SQL Server, ini adalah prinsip tingkat server
  • Buat pengguna yang dipetakan. Anda seharusnya tidak benar-benar mengizinkan pengguna langsung di atas meja. Dan "pengguna" berarti pengguna basis data, bukan konsep AD dari pengguna: dalam SQL Server, ini adalah "basis data tingkat basis"
  • Tambahkan pengguna ke peran (juga "kepala sekolah tingkat basis data")
  • Izin GRANT untuk peran di atas meja (tabel atau proc dll adalah "aman")

Contoh skrip

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolemember sudah usang dimulai dengan SQL Server 2012, di mana ALTER ROLE harus digunakan sebagai gantinya.

50
gbn

Dari marc_s jawab "Cara menambahkan grup pengguna Active Directory sebagai login di SQL Server" :

Di SQL Server Management Studio, buka Object Explorer > (your server) > Security > Logins dan klik kanan New Login:

enter image description here

Kemudian di kotak dialog yang muncul, pilih jenis objek yang ingin Anda lihat (Groups dinonaktifkan secara default - centang!) Dan pilih lokasi tempat Anda ingin mencari objek Anda (mis. Gunakan Entire Directory) dan kemudian temukan grup AD Anda.

enter image description here

Anda sekarang memiliki SQL Server Login biasa - sama seperti ketika Anda membuatnya untuk pengguna AD tunggal. Berikan izin masuk yang baru pada database yang dibutuhkan, dan pergilah!

Setiap anggota grup AD itu sekarang dapat masuk ke SQL Server dan menggunakan database Anda.

5
Even Mien

Pemberian izin dalam SQL Server ke Grup AD relatif mudah. Ini dapat dilakukan melalui T-SQL atau Management Studio.

Misalnya, jika Anda memiliki grup AD yang disebut MYDOMAIN\APPLICATION SUPPORT, Anda akan membuat login di tingkat server, dan kemudian menggunakan pemetaan untuk basis data individual untuk memberikan izin yang sedikit lebih terperinci seperti pembaca data.

Idealnya, semua akses aplikasi harus melalui prosedur tersimpan *, jadi hanya jalankan izin pada prosedur tersimpan itu dalam basis data yang diperlukan.

* Dari sudut pandang keamanan, untuk memungkinkan pengguna tertentu untuk melihat beberapa data tertentu, Anda dapat membuat prosedur dan memberikan pengguna jalankan izin pada prosedur itu, dan tidak ada yang lain. Mengizinkan pengguna untuk meminta secara langsung berarti memberi pilih izin pada semua tabel yang terlibat. Ini juga lebih mudah untuk bekerja dengan prosedur, dan lebih mudah untuk debug.

Prosedur tersimpan akses tabel abstrak dan membatasi akses. Untuk tipe DBA, ini seperti "biarkan saya melihat semua variabel instan Anda: Saya tidak ingin menggunakan metode, getter atau setter".

4
Peter Schofield

Jika pengguna adalah anggota DOMAIN\SecurityGroup yang memiliki otoritas Sysadmin dalam SQL, maka itu akan digunakan saat mengakses database. Jika tidak, Anda perlu melihat apa yang telah diberikan otoritas DOMAIN\SecurityGroup di setiap basis data. Jika pengguna adalah anggota dari 2 SecurityGroups, dengan SecGroupA memiliki otoritas pilih dan SecGroupB memiliki otoritas penyisipan, maka pengguna dapat memilih dan menyisipkan.

1
Piyush Agrawal