SQL Server - อนุญาตให้สิทธิ์กับทั้ง schema กับวัตถุ?


25

ฉันเป็นมิตรกับโลกของการจัดการสิทธิ์ในฐานข้อมูลใน SQL Sever

ขอยกตัวอย่างง่ายๆ

สมมติว่าบัญชี 'admin' เป็นเจ้าของ schemas A, B และ C

มีบัญชี 'minion' อีกบัญชีหนึ่งที่คุณต้องการให้มีสิทธิ์อย่างเต็มที่ (อัปเดต / ลบ / แทรก / เลือก / แก้ไข) บนวัตถุใด ๆ (ตาราง / มุมมอง) ที่สร้างขึ้นภายใต้สคีมา A, B และ C

เป็นไปได้ไหม หรือคุณต้องใช้คำสั่งให้สิทธิ์ทุกครั้งที่คุณเพิ่มตาราง / มุมมองภายใต้สคีมาเหล่านี้หรือไม่? (ดูเหมือนฉันจะโง่ไปหน่อย)

คำตอบ:


36

คุณสามารถGRANTสคีมาการอนุญาตที่มีประสิทธิภาพสำหรับทุกสิ่งที่มีอยู่และทุกอย่างที่จะมีอยู่ในสคีมานั้น

ให้สิทธิ์สคีมา

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;

นอกจากนั้นหากคุณต้องการปฏิเสธการอนุญาตในวัตถุบางอย่างภายในสคีมานั้นคุณสามารถทำได้

ปฏิเสธสิทธิ์ของวัตถุ

DENY INSERT ON OBJECT::<schema>.<object> TO <user>;

1
ใช้เครื่องหมายวงเล็บเหลี่ยมด้วยหากสคีมาหรือชื่อผู้ใช้มีอักขระพิเศษ เช่น.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
Joshua Duxbury

ไม่ทำงานใน Azure ความคิดใด ๆ ว่าทำไม (คำสั่งใช้งานได้ แต่ SSMS เกิดขึ้นและพูดว่า "คุณไม่ใช่เจ้าของ Db .. blah blah blah คุณอาจไม่สามารถบันทึกตาราง" และแน่นอนว่าคุณไม่สามารถทำได้ (ให้สิทธิ์ ALL ไปยังฐานข้อมูล (แสดงสิทธิ์ 'ฐานข้อมูล', '<db ชื่อ>', TheUserId, 'สร้างตาราง' และ state_desc ของ 'GRANT') มีเวทมนตร์อื่น ๆ ที่จำเป็นหรือไม่หรือ Azure สามารถใช้งานได้โดย Dbo เท่านั้น
Traderhut Games

13

เพื่อให้ง่ายขึ้นอีกเล็กน้อยคุณสามารถใช้บทบาทเพื่อทำงานที่คุณกำลังมองหา

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

ด้านล่างเป็นตัวอย่างเพื่อให้คุณเริ่มต้น:

 -- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
 ---- Grant access rights to a specific schema in the database
GRANT 
      SELECT, INSERT, UPDATE, DELETE, ALTER 

ON SCHEMA::dbo
      TO TableSelector 
GO

-- Add an existing user to the new role created 
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO

-- Revoke access rights on a schema from a role 
DENY ALTER  -- you can customize here ...
ON SCHEMA::dbo
      TO TableSelector 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.