ฉันจะกำหนดการเข้าถึงความปลอดภัยของกลุ่ม Active Directory ทั้งหมดใน SQL Server 2008 ได้อย่างไร


40

ฉันต้องการใช้การรักษาความปลอดภัยแบบรวมกับแอปพลิเคชันภายในซึ่งอยู่ในโดเมนทั้งหมด น่าเสียดายที่ฉันไม่สามารถทำให้สิ่งนี้ทำงานได้ดี ฉันต้องการกำหนดให้ทั้ง Exchange (Active Directory) จัดกลุ่มบทบาทใน SQL Server สำหรับการเข้าถึงแบบอ่าน / เขียนในตารางบางตัว ด้วยวิธีนี้ฉันจะไม่ต้องสร้างโอเปอเรเตอร์เมื่อมีคนจ้างหรือลบโอเปอเรเตอร์เมื่อมีคนถูกไล่ออก เป็นไปได้ไหม ฉันจะทำขั้นตอนใดในการทำเช่นนี้?

คำตอบ:


48
  • ตั้งค่ากลุ่มโฆษณาเป็นการเข้าสู่ระบบ และ "เข้าสู่ระบบ" หมายถึงการเข้าสู่ระบบในระดับเซิร์ฟเวอร์ไม่ใช่แนวคิดโฆษณาของผู้ใช้ / เข้าสู่ระบบ ใน SQL Server พูดนี่คือหลักการระดับเซิร์ฟเวอร์
  • สร้างผู้ใช้ที่แมปคุณไม่ควรอนุญาตผู้ใช้โดยตรงบนตาราง และ "ผู้ใช้" หมายถึงผู้ใช้ฐานข้อมูลไม่ใช่แนวคิดโฆษณาของผู้ใช้: ใน SQL Server พูดนี่คือ "หลักการระดับฐานข้อมูล"
  • เพิ่มผู้ใช้ไปยังบทบาท (เช่น "หลักการระดับฐานข้อมูล")
  • สิทธิ์ GRANT สำหรับบทบาทในตาราง (ตารางหรือ proc ฯลฯ เป็น "ปลอดภัย")

สคริปต์ตัวอย่าง

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ถูกเลิกใช้เริ่มต้นด้วย SQL Server 2012 ซึ่งALTER ROLEควรใช้แทน


3
จะเป็นประโยชน์ในการอธิบายว่าทำไมคุณควรกำหนดสิทธิ์ให้กับบทบาทแทนผู้ใช้ SQL (ในกรณีนี้คือกลุ่มโฆษณา)
Drew Chapin

บางทีคุณอาจหมายถึง "สร้างผู้ใช้ [... ] เพื่อเข้าสู่ระบบ [... ]" แทนที่จะเป็น "จากการเข้าสู่ระบบ"?
Agostino

สร้างผู้ใช้ ... เพื่อเข้าสู่ระบบ ... ; และสร้างผู้ใช้ ... จากการเข้าสู่ระบบ ... ; ทั้งทำงานให้ฉัน (MSSQL2016) ไม่แน่ใจว่ามีความแตกต่างหรือไม่?
วิศวกรที่กลับรายการ

ไม่ทั้งสองอย่างเป็นเอกสารที่ถูกต้องdocs.microsoft.com/en-us/sql/t-sql/statements/…
gbn

4

การให้สิทธิ์ภายใน SQL Server ไปยังกลุ่มโฆษณาค่อนข้างตรงไปตรงมา สามารถทำได้ผ่าน T-SQL หรือ Management Studio

ตัวอย่างเช่นถ้าคุณมีกลุ่มโฆษณาชื่อMYDOMAIN\APPLICATION SUPPORTคุณจะสร้างการเข้าสู่ระบบในระดับเซิร์ฟเวอร์จากนั้นใช้การแมปไปยังฐานข้อมูลแต่ละรายการเพื่อให้สิทธิ์ที่ละเอียดยิ่งขึ้นเล็กน้อยเช่นโปรแกรมอ่านข้อมูล

ตามหลักการแล้วการเข้าถึงแอปพลิเคชันทั้งหมดควรผ่านขั้นตอนการจัดเก็บ * ดังนั้นจึงต้องใช้สิทธิ์สำหรับกระบวนการที่เก็บไว้ในฐานข้อมูลนั้นเท่านั้น

* จากมุมมองความปลอดภัยเพื่ออนุญาตให้ผู้ใช้บางรายเห็นข้อมูลบางอย่างคุณสามารถสร้างโพรซีเดอร์และอนุญาตให้ผู้ใช้เรียกใช้สิทธิ์ในโพรซีเดอร์นั้นและไม่มีอะไรอื่น การอนุญาตให้ผู้ใช้สืบค้นโดยตรงจะหมายถึงการให้สิทธิ์เลือกในตารางทั้งหมดที่เกี่ยวข้อง นอกจากนี้ยังง่ายต่อการทำงานกับกระบวนการและง่ายต่อการตรวจแก้จุดบกพร่อง

ขั้นตอนการจัดเก็บบทคัดย่อเข้าถึงตารางและ จำกัด การเข้าถึง สำหรับประเภท DBA มันเหมือนกับ "ให้ฉันเห็นตัวแปรอินสแตนซ์ทั้งหมดของคุณ: ฉันไม่ต้องการใช้เมธอด, getters หรือ setters"


3

จากmarc_s การตอบ"วิธีเพิ่มกลุ่มผู้ใช้ Active Directory เป็นล็อกอินใน SQL Server" :

ใน SQL Server Management Studio ให้ไปที่Object Explorer > (your server) > Security > LoginsและคลิกขวาNew Login:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือกประเภทของวัตถุที่คุณต้องการดู ( Groupsถูกปิดใช้งานโดยค่าเริ่มต้น - ตรวจสอบ!) และเลือกตำแหน่งที่คุณต้องการค้นหาวัตถุของคุณ (เช่นใช้Entire Directory) จากนั้นค้นหากลุ่มโฆษณาของคุณ .

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้คุณมีการเข้าสู่ระบบเซิร์ฟเวอร์ SQL ปกติ - เช่นเดียวกับเมื่อคุณสร้างขึ้นสำหรับผู้ใช้ AD คนเดียว ให้สิทธิ์การเข้าสู่ระบบใหม่บนฐานข้อมูลที่ต้องการและคุณไม่ต้องไป!

สมาชิกของกลุ่มโฆษณานั้นสามารถล็อกอินเข้าสู่ SQL Server และใช้ฐานข้อมูลของคุณ


2
การลิงก์ไปยังคำตอบ SO นั้นอาจมีประโยชน์ แต่คุณไม่ได้เพิ่มอะไรใหม่ในโพสต์ คุณอาจเพิ่งโพสต์ลิงค์เป็นความคิดเห็น
Andriy M

2
คำตอบมีภาพหน้าจอที่ดีสำหรับการตรวจสอบกลุ่มภายใต้ประเภทของวัตถุเนื่องจากนั่นคือสิ่งที่ฉันพลาดไปเมื่อฉันพยายามทำสิ่งนี้ ลิงก์ไม่แสดงในความคิดของฉัน แค่พยายามช่วยคนต่อไป ...
แม้ Mien

คุณหมายถึงอะไร โดยปกติจะมีลิงก์คอยติดตามและทุกคนที่ติดตามลิงก์จะเห็นภาพหน้าจอที่ดีที่คุณพูดถึงรวมถึงทุกอย่างที่คุณโพสต์ไว้ที่นี่อีกครั้ง แม้ว่าจะไม่เถียง แต่เพียงให้คุณรู้ว่าความคิดเห็นของฉันไม่เปลี่ยนแปลง: ลิงก์ (ในความคิดเห็น) จะทำเช่นกัน
Andriy M

4
ความคิดเห็นของฉันก็ไม่เปลี่ยนแปลงเช่นกัน ลิงค์ในความคิดเห็นไม่ได้นำเสนอข้อมูลเดียวกับรูปภาพจริงบนหน้าเว็บ "แสดงอย่าบอกเลย"
แม้ Mien

1

หากผู้ใช้เป็นสมาชิกของ DOMAIN \ SecurityGroup ที่มีสิทธิ์ Sysadmin ใน SQL จะใช้เมื่อเข้าถึงฐานข้อมูล ไม่เช่นนั้นคุณต้องดูว่า DOMAIN \ SecurityGroup ใดที่มีการมอบสิทธิ์ในแต่ละฐานข้อมูล หากผู้ใช้เป็นสมาชิกของ 2 SecurityGroups โดยที่ SecGroupA มีสิทธิเลือกและ SecGroupB มีสิทธิ์ในการแทรกผู้ใช้จะสามารถเลือกและแทรกได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.