สร้างการเข้าสู่ระบบโดยใช้ Transact-SQL การเพิกถอนสิทธิ์ที่มอบให้กับผู้ใช้

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

การจัดการผู้ใช้ฐานข้อมูล

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

การจัดการผู้ใช้ในสภาพแวดล้อม MS SQL Server

ลองพิจารณาคำถาม การสร้างผู้ใช้ในสภาพแวดล้อม MS เซิร์ฟเวอร์ SQL.

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

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

ในระบบเซิร์ฟเวอร์ SQL มีวัตถุเพิ่มเติม - บทบาทซึ่งกำหนดระดับการเข้าถึงวัตถุเซิร์ฟเวอร์ SQL พวกเขาแบ่งออกเป็นสองกลุ่ม: กลุ่มที่ได้รับมอบหมายให้ บัญชีผู้ใช้เซิร์ฟเวอร์และใช้เพื่อจำกัดการเข้าถึงวัตถุฐานข้อมูล

ดังนั้นในระดับเซิร์ฟเวอร์ ระบบรักษาความปลอดภัยจึงทำงานตามแนวคิดต่อไปนี้:

  • การรับรองความถูกต้อง ;
  • บัญชี ;
  • บทบาทเซิร์ฟเวอร์ในตัว

ในระดับฐานข้อมูลจะใช้แนวคิดต่อไปนี้

  • ผู้ใช้ฐานข้อมูล
  • บทบาทฐานข้อมูลคงที่
  • กำหนดเองบทบาทของฐานข้อมูล

โหมดการรับรองความถูกต้อง

SQL Server มีสองโหมด การรับรองความถูกต้องของผู้ใช้:

  • โหมดการรับรองความถูกต้อง ใช้วินโดวส์ NT/2000;
  • การรับรองความถูกต้องในโหมดผสม (การรับรองความถูกต้องของ Windows NT และการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL)

การบริหารระบบรักษาความปลอดภัย

สำหรับ การสร้างผู้ใช้ในสภาพแวดล้อม MS SQL Server ควรดำเนินการตามขั้นตอนต่อไปนี้:

  1. สร้างในฐานข้อมูล บัญชีผู้ใช้โดยระบุรหัสผ่านและชื่อฐานข้อมูลเริ่มต้น (sp_addlogin)
  2. เพิ่มผู้ใช้รายนี้ลงในฐานข้อมูลที่จำเป็นทั้งหมด (sp_adduser)
  3. ให้สิทธิ์ที่เหมาะสมในแต่ละฐานข้อมูล (คำสั่ง GRANT)

สร้างบัญชีใหม่สามารถทำได้โดยใช้ขั้นตอนการจัดเก็บของระบบ:

sp_addlogin [@login=] "บัญชี" [, [@password=] "รหัสผ่าน"] [, [@defdb=] "default_database"]

หลังจากยืนยันตัวตนและรับเรียบร้อยแล้ว ผู้ใช้รหัสเข้าสู่ระบบถือว่าลงทะเบียนและได้รับสิทธิ์ในการเข้าถึงเซิร์ฟเวอร์ สำหรับแต่ละฐานข้อมูลที่มีอ็อบเจ็กต์ที่เขาต้องการเข้าถึง บัญชีผู้ใช้(เข้าสู่ระบบ) เชื่อมโยงกับผู้ใช้ (ผู้ใช้) ของฐานข้อมูลเฉพาะซึ่งทำผ่านขั้นตอน:

sp_adduser [@loginame=] "บัญชี" [, [@name_in_db=] "ชื่อผู้ใช้"] [, [@grpname=] "บทบาท"]

ขั้นตอนที่เก็บไว้ช่วยให้คุณสามารถแมปบัญชี Windows NT กับชื่อผู้ใช้:

sp_grantdbaccess [@login=] 'บัญชี' [, [@name_in_db=]'ชื่อผู้ใช้']

ผู้ใช้ที่สร้างวัตถุในฐานข้อมูล (ตาราง, ขั้นตอนการจัดเก็บ, มุมมอง) จะกลายเป็นเจ้าของ เจ้าของวัตถุ(เจ้าของวัตถุฐานข้อมูล dbo) มีสิทธิ์การเข้าถึงวัตถุที่เขาสร้างขึ้นทั้งหมด เพื่อให้ผู้ใช้สร้างอ็อบเจ็กต์ เจ้าของฐานข้อมูล (dbo) จะต้องให้สิทธิ์ที่เหมาะสมแก่ผู้ใช้ ชื่อเต็มวัตถุที่สร้างขึ้นประกอบด้วยชื่อผู้ใช้ที่สร้างมันขึ้นมา

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

SQL Server อนุญาตให้คุณโอนความเป็นเจ้าของจากผู้ใช้รายหนึ่งไปยังอีกรายหนึ่งโดยใช้ขั้นตอน:

sp_changeobjectowner [@objname=] 'object_name' [@newowner=] 'owner_name'

บทบาทช่วยให้คุณสามารถรวมผู้ใช้ที่ทำหน้าที่เดียวกันเข้าเป็นกลุ่มเดียวได้

SQL Server ใช้บทบาทมาตรฐานสองประเภท: ที่ระดับเซิร์ฟเวอร์และที่ระดับฐานข้อมูล เมื่อติดตั้ง SQL Server บทบาทของเซิร์ฟเวอร์คงที่จะถูกสร้างขึ้น (เช่น ผู้ดูแลระบบที่มีสิทธิ์ในการทำหน้าที่ใด ๆ ของเซิร์ฟเวอร์ SQL) และบทบาทของฐานข้อมูลคงที่ (เช่น db_owner ที่มีสิทธิ์ การเข้าถึงแบบเต็มไปยังฐานข้อมูลหรือ db_accessadmin โดยมีสิทธิ์เพิ่มและลบผู้ใช้) ท่ามกลาง บทบาทคงที่ฐานข้อมูลมีบทบาทสาธารณะที่ได้ วัตถุประสงค์พิเศษเพราะสมาชิกคือผู้ใช้ทั้งหมดที่สามารถเข้าถึงฐานข้อมูลได้

คุณสามารถรวมบัญชี SQL Server (เข้าสู่ระบบ) หรือบัญชี Windows NT ไว้ในบทบาทเซิร์ฟเวอร์ใดก็ได้

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

บทบาทของฐานข้อมูลสามารถรวมถึงผู้ใช้ SQL Server บทบาทของ SQL Server และผู้ใช้ Windows NT

การดำเนินการต่าง ๆ ที่เกี่ยวข้องกับบทบาทนั้นดำเนินการโดยใช้กระบวนการพิเศษ:

  • สร้างบทบาทใหม่:

    sp_addrole [@rolename=] "role_name" [, [@ownername=] "owner_name"]

  • การเพิ่มผู้ใช้เข้ากับบทบาท:

    sp_addrolemember [@rolename=] "role_name", [@membername=] "ชื่อผู้ใช้"

  • การลบผู้ใช้ออกจากบทบาท:

    sp_droprolemember [@rolename=] "role_name", [@membername=] "ชื่อผู้ใช้"

  • ถอดบทบาท:

    sp_droprole [@rolename=] "บทบาท_ชื่อ"

การควบคุมการเข้าถึงข้อมูล

การกำหนดสิทธิพิเศษในมาตรฐานภาษา

ทุก DBMS จะต้องสนับสนุนกลไกเพื่อให้แน่ใจว่าเฉพาะผู้ใช้ที่มีสิทธิ์ที่เหมาะสมเท่านั้นที่สามารถเข้าถึงฐานข้อมูลได้ ภาษา SQL ประกอบด้วยคำสั่ง GRANT และ REVOKE ที่ออกแบบมาเพื่อปกป้องตารางในฐานข้อมูล กลไกการป้องกันขึ้นอยู่กับการใช้งาน รหัสผู้ใช้สิทธิความเป็นเจ้าของและสิทธิพิเศษที่มอบให้กับพวกเขา

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

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

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

  • SELECT – สิทธิ์ในการเลือกข้อมูลจากตาราง
  • INSERT – สิทธิ์ในการแทรกแถวใหม่ลงในตาราง
  • UPDATE – สิทธิ์ในการเปลี่ยนแปลงข้อมูลในตาราง
  • DELETE – สิทธิ์ในการลบแถวออกจากตาราง
  • ข้อมูลอ้างอิง – สิทธิ์ในการอ้างถึงคอลัมน์ของตารางที่ระบุในคำอธิบายข้อกำหนดการสนับสนุนความสมบูรณ์ของข้อมูล
  • การใช้งาน – สิทธิ์ในการใช้โดเมน การตรวจสอบ และชุดอักขระ

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

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

ด้วยการสร้างมุมมองโดยใช้คำสั่ง CREATE VIEW ผู้ใช้จะกลายเป็นเจ้าของมุมมองนั้นโดยอัตโนมัติและยังมีสิทธิ์เต็มรูปแบบอีกด้วย ในการสร้างมุมมอง ผู้ใช้เพียงต้องมีสิทธิ์ SELECT บนตารางทั้งหมดที่รวมอยู่ในนั้น และสิทธิ์ REFERENCES บนคอลัมน์ทั้งหมดที่อ้างอิงในคำจำกัดความของมุมมองนี้ ผู้ใช้จะได้รับสิทธิ์ INSERT, UPDATE และ DELETE ในมุมมองที่สร้างขึ้นเฉพาะในกรณีที่เขามีสิทธิ์ที่สอดคล้องกันบนตารางทั้งหมดที่ใช้ในมุมมอง

การให้สิทธิพิเศษแก่ผู้ใช้

คำสั่ง GRANT ใช้สำหรับ การให้สิทธิพิเศษกับวัตถุฐานข้อมูลที่มีชื่อไปยังผู้ใช้ที่ระบุ เจ้าของโต๊ะมักใช้เพื่อ ให้การเข้าถึงให้กับผู้ใช้รายอื่น คำสั่ง GRANT มีรูปแบบดังต่อไปนี้:

<предоставление_привилегий>::= ทุน (<привилегия>[,...n] | สิทธิ์ทั้งหมด) บน object_name ถึง (<идентификатор_пользователя>[,...n]| สาธารณะ) [พร้อมตัวเลือกการให้สิทธิ์]

พารามิเตอร์<привилегия>แสดงถึง:

<привилегия>::= (SELECT | ลบ | INSERT [(column_name[,...n])] | UPDATE [(column_name[,...n])]) | ข้อมูลอ้างอิง [(column_name[,...n])] | การใช้งาน)

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

พารามิเตอร์ object_name สามารถใช้เป็นชื่อของตารางฐานข้อมูล มุมมอง โดเมน ชุดอักขระ ตรวจสอบ

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

การเพิกถอนสิทธิ์ที่มอบให้กับผู้ใช้

ในภาษา SQL สำหรับ เพิกถอนสิทธิพิเศษ, ที่ให้ไว้สำหรับผู้ใช้ผ่านคำสั่ง GRANT จะใช้คำสั่ง REVOKE การใช้โอเปอเรเตอร์นี้ สิทธิ์ทั้งหมดหรือบางส่วนที่ผู้ใช้ที่ระบุได้รับก่อนหน้านี้สามารถเพิกถอนได้ คำสั่ง REVOKE มีรูปแบบดังต่อไปนี้:

<отмена_привилегий>::= เพิกถอน (<привилегия>[,...n] | สิทธิ์ทั้งหมด) บน object_name จาก (<идентификатор_пользователя>[,...n]| สาธารณะ)

คำสำคัญ ALL PRIVILEGES หมายความว่าสำหรับ ผู้ใช้ที่ระบุสิทธิพิเศษทั้งหมดถูกเพิกถอน ที่ให้ไว้เขาก่อนหน้านี้โดยผู้ใช้ที่เข้ามา โอเปอเรเตอร์นี้- GRANT OPTION ที่เป็นทางเลือกสำหรับคำสั่งย่อยอนุญาตให้สิทธิ์ทั้งหมดถูกส่งผ่านในคำสั่ง GRANT ดั้งเดิมโดย WITH GRANT OPTION ที่จะถูกแทนที่ โดยไม่คำนึงถึงสิทธิพิเศษเอง

หากระบุคีย์เวิร์ด RESTRICT ในคำสั่ง คำสั่ง REVOKE จะสำเร็จได้ก็ต่อเมื่อสิทธิ์ที่แสดงรายการในคำสั่งไม่ทำให้ผู้ใช้รายอื่นมีสิทธิ์ที่เรียกว่า "คงไว้" ตัวเลือก CASCADE จะลบสิทธิ์ใดๆ ที่อาจยังคงอยู่กับผู้ใช้รายอื่น

สิทธิ์ "คงไว้" คือสิทธิ์ที่ผู้ใช้เก็บไว้ซึ่งครั้งหนึ่งพวกเขาเคยได้รับสิทธิ์โดยใช้พารามิเตอร์ GRANT OPTION

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

สิทธิ์ที่ได้รับให้กับผู้ใช้ที่ระบุโดยผู้ใช้รายอื่นจะไม่ได้รับผลกระทบจากคำสั่ง REVOKE ดังนั้น หากผู้ใช้รายอื่นให้สิทธิ์แบบถอดได้แก่ผู้ใช้รายหนึ่งด้วย ผู้ใช้ที่ระบุจะยังคงมีสิทธิ์ในการเข้าถึงตารางที่เกี่ยวข้อง ตัวอย่างเช่น สมมติว่าผู้ใช้ A และผู้ใช้ E มีสิทธิ์ INSERT บนตารางผลิตภัณฑ์ ผู้ใช้ A ให้สิทธิ์ INSERT แก่ผู้ใช้ B สำหรับตารางผลิตภัณฑ์ โดยระบุด้วย GRANT OPTION (ขั้นตอนที่ 1) ผู้ใช้ B โอนสิทธิ์นี้ให้กับผู้ใช้ C (ขั้นตอนที่ 2) จากนั้นผู้ใช้ C ได้รับจากผู้ใช้ E (ขั้นตอนที่ 3) ถัดไป ผู้ใช้ C ให้สิทธิ์ดังกล่าวแก่ผู้ใช้ D (ขั้นตอนที่ 4) เมื่อผู้ใช้ A เพิกถอนสิทธิพิเศษ INSERT สำหรับผู้ใช้ B ไม่สามารถย้อนกลับได้สำหรับผู้ใช้ C เนื่องจากก่อนหน้านี้เขาได้รับจากผู้ใช้ E หากผู้ใช้ E ไม่ได้ให้สิทธิ์นี้แก่ผู้ใช้ C การลบสิทธิ์ของผู้ใช้ B จะมีผลกระทบ ลบน้ำตกสิทธิพิเศษสำหรับผู้ใช้ C และ D (ดูตาราง 17.1)

การใช้สิทธิ์การเข้าถึงวัตถุฐานข้อมูลในสภาพแวดล้อม MS SQL Server

ประเภทของสิทธิ์ในสภาพแวดล้อม MS SQL Server

เมื่อเชื่อมต่อกับ SQL Server ทุกอย่าง การกระทำที่เป็นไปได้ผู้ใช้ถูกกำหนดโดยสิทธิ์ (สิทธิ์ การอนุญาต) ที่มอบให้กับบัญชี กลุ่ม หรือบทบาทที่พวกเขาเป็นสมาชิก

สิทธิสามารถแบ่งออกเป็นสามประเภท:

  • สิทธิ์ในการเข้าถึงวัตถุ;
  • สิทธิ์ในการรันคำสั่ง;
  • สิทธิโดยนัย
ตารางที่ 17.1.
ผู้ใช้กผู้ใช้บีผู้ใช้ซีผู้ใช้ Dผู้ใช้ E
ให้สิทธิ์แทรกบนผลิตภัณฑ์ถึง B พร้อมตัวเลือกการให้สิทธิ์ ได้รับสิทธิ
ได้รับสิทธิจากบี. ได้รับสิทธิจาก E ให้สิทธิ์แทรกบนผลิตภัณฑ์ถึง C พร้อมตัวเลือกการให้สิทธิ์
ให้สิทธิ์แทรกในรายการถึง D ได้รับสิทธิ
เพิกถอนการแทรกบนผลิตภัณฑ์ไปที่ B CASCADE การยกเลิกสิทธิการสำรองสิทธิการสำรองสิทธิการสำรองสิทธิ

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

สำหรับ วัตถุต่างๆนำมาใช้ ชุดที่แตกต่างกันสิทธิ์การเข้าถึง:

  • เลือก แทรก อัปเดต ลบ อ้างอิง – สำหรับตารางหรือมุมมอง
  • SELECT , UPDATE – สำหรับคอลัมน์เฉพาะของตารางหรือมุมมอง
  • EXECUTE – สำหรับขั้นตอนและฟังก์ชั่นที่เก็บไว้

สิทธิ์ INSERT ช่วยให้คุณสามารถแทรกแถวใหม่ลงในตารางหรือมุมมอง และอนุญาตเฉพาะในระดับตารางหรือมุมมองเท่านั้น ไม่สามารถออกได้ในระดับคอลัมน์

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

สิทธิ์ DELETE ช่วยให้คุณสามารถลบแถวออกจากตารางหรือมุมมองได้ อนุญาตในระดับตารางหรือมุมมองเท่านั้น แต่ไม่สามารถอนุญาตในระดับคอลัมน์ได้

สิทธิ์ SELECT ช่วยให้สามารถเลือกข้อมูลได้และสามารถออกได้ทั้งในระดับตารางและระดับของแต่ละคอลัมน์

สิทธิ์ REFERENCES ให้ความสามารถในการอ้างอิง วัตถุที่ระบุ- ในส่วนที่เกี่ยวข้องกับตาราง อนุญาตให้สร้าง กุญแจต่างประเทศโดยอ้างอิงคีย์หลักหรือคอลัมน์เฉพาะของตารางนี้

การให้สิทธิ

สำหรับการบริหารจัดการ การอนุญาตของผู้ใช้ในการเข้าถึงวัตถุมีการใช้คำสั่งฐานข้อมูล:

<предоставление_привилегий>::= ให้สิทธิ์ ( ทั้งหมด [ สิทธิ์] |<привилегия>[,...n]) ( [(column_name [,...n])] ON ( table_name | view_name) | ON (table_name | view_name ) ([คอลัมน์_ชื่อ [,...n])] | ON (stored_procedure_name |. external_procedure_name)) ถึง (ชื่อผู้ใช้ | group_name | Role_name) [,...n]

พารามิเตอร์<привилегия>

<привилегия>::= (SELECT | DELETE | INSERT | UPDATE | EXECUTE | อ้างอิง )

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

พารามิเตอร์ทางเลือก AS (group_name | บทบาท_ชื่อ)ช่วยให้คุณสามารถระบุการมีส่วนร่วมของผู้ใช้ในบทบาทที่มีให้ การให้สิทธิผู้ใช้รายอื่น

สิทธิ์การเข้าถึงเดียวที่สามารถมอบให้กับขั้นตอนการจัดเก็บคือสิทธิ์ในการดำเนินการ (EXECUTE) นอกจากนี้ เจ้าของ Stored Procedure ยังสามารถดูและเปลี่ยนแปลงโค้ดได้อีกด้วย

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

สิทธิ์ในการรันคำสั่ง SQL

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

<предоставление_права_выполнения>::= เงินช่วยเหลือ (ทั้งหมด |<команда>

พารามิเตอร์<команда>เป็นโครงสร้างดังนี้

<команда>::= (สร้างฐานข้อมูล | สร้างตาราง | สร้างมุมมอง | สร้างค่าเริ่มต้น | สร้างกฎ | สร้างขั้นตอน | ฐานข้อมูลสำรอง | บันทึกการสำรองข้อมูล | ทั้งหมด)

ดังนั้น คุณสามารถให้สิทธิ์ในการสร้างฐานข้อมูล ตาราง มุมมอง ค่าเริ่มต้น กฎ ขั้นตอนการจัดเก็บ การสำรองฐานข้อมูล และบันทึกธุรกรรม หรือให้สิทธิ์ข้างต้นทั้งหมดพร้อมกัน

สิทธิโดยนัย

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

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

ปฏิเสธการเข้าถึง

การรักษาความปลอดภัยของ SQL Server มีโครงสร้างแบบลำดับชั้น ดังนั้นบทบาทของฐานข้อมูลจึงรวมอยู่ด้วย บัญชีและกลุ่ม Windows NT ผู้ใช้และบทบาทของ SQL Server ในทางกลับกันผู้ใช้สามารถมีส่วนร่วมในหลายบทบาทและมีสิทธิ์การเข้าถึงที่แตกต่างกันไปพร้อม ๆ กัน บทบาทที่แตกต่างกัน- เมื่อบทบาทของผู้ใช้คนใดคนหนึ่งได้รับอนุญาตให้เข้าถึงข้อมูล ผู้ใช้จะมีสิทธิ์เดียวกันโดยอัตโนมัติ อย่างไรก็ตาม หากจำเป็น ผู้ใช้อาจถูกปฏิเสธการเข้าถึงข้อมูลหรือคำสั่งได้ จากนั้นสิทธิ์การเข้าถึงทั้งหมดที่มอบให้แก่เขาในทุกระดับของลำดับชั้นจะถูกเพิกถอน สิ่งนี้ทำให้แน่ใจได้ว่าการเข้าถึงยังคงถูกปฏิเสธโดยไม่คำนึงถึงสิทธิ์ที่ได้รับในระดับที่สูงกว่า

สำหรับ การปฏิเสธการเข้าถึง

<запрещение_доступа>::= ปฏิเสธ (ทั้งหมด | |<привилегия>[,...n]) ( [(column_name [,...n])] ON ( table_name | view_name) | ON (table_name | view_name ) [column_name [,...n])] | เปิด (stored_procedure_name | external_procedure_name)) ถึง (ชื่อผู้ใช้ | group_name | Role_name) [,...n]

พารามิเตอร์ CASCADE ช่วยให้คุณสามารถเพิกถอนสิทธิ์ได้ไม่เพียงเท่านั้น ผู้ใช้เฉพาะแต่สำหรับทุกคนที่เขาได้รับสิทธิเช่นเดียวกัน

หากต้องการห้ามการดำเนินการคำสั่ง SQL ให้ใช้ตัวดำเนินการต่อไปนี้:

<запрещение_выполнения>::= ปฏิเสธ (ทั้งหมด |<команда>[,...n]) ถึง (ชื่อผู้ใช้ | ชื่อกลุ่ม | ชื่อบทบาท) [,...n]

การปฏิเสธการเข้าถึงโดยนัย

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

<неявное_отклонение_доступа>::= เพิกถอน (ทั้งหมด [ สิทธิ์]| |<привилегия>[,...n]) ( [(column_name [,...n])] ON ( table_name | view_name) | ON (table_name | view_name ) [column_name [,...n])] | เปิด (stored_procedure_name | external_procedure_name)) ถึง | จาก (ชื่อผู้ใช้ | ชื่อกลุ่ม | ชื่อบทบาท)[,...n]

สำหรับ การเบี่ยงเบนโดยนัยสิทธิ์ในการรันคำสั่งคำสั่ง SQL ที่ใช้มีดังนี้:

<неявное_отклонение_разрешения>::= เพิกถอน (ทั้งหมด |<команда>[,...n]) จาก (ชื่อผู้ใช้ | ชื่อกลุ่ม | ชื่อบทบาท)[,...n]

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

ความขัดแย้งในการเข้าถึง

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

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

ตัวอย่างที่ 17.1สร้างฐานข้อมูลใหม่ ผู้ใช้ใหม่สำหรับฐานข้อมูลนี้ โดยให้สิทธิ์ทั้งหมดแก่เขา

สร้างโดยผู้ดูแลระบบใหม่ - ฐานข้อมูล CREATE DATABASE basa_user - การสร้างผู้ใช้ใหม่ด้วย - ชื่อ UserA และรหัสผ่าน '123' - ฐานข้อมูลเริ่มต้นสำหรับ - ผู้ใช้ UserA จะเป็นฐานข้อมูล - ชื่อ basa_user sp_addlogin "UserA", "123", "basa_user" -- ไปที่ฐานข้อมูล basa_user USE basa_user -- เพิ่มไปยังฐานข้อมูลปัจจุบัน -- (basa_user) ผู้ใช้ชื่อ -- userA sp_adduser "UserA" -- จัดเตรียม userA ให้กับผู้ใช้ -- ในฐานข้อมูล basa_user สิทธิ์ทั้งหมดให้สิทธิ์ทั้งหมดแก่ UserA ตัวอย่างที่ 17.1 การสร้างฐานใหม่

data ซึ่งเป็นผู้ใช้ใหม่ของฐานข้อมูลนี้ โดยให้สิทธิ์ทั้งหมดแก่เขาตัวอย่างที่ 17.2

การใช้บทบาท

มาสร้างบทบาทสตั๊ดและรวมผู้ใช้สองคน user1 และ user2 ในบทบาทนี้:

sp_addrole "สตั๊ด" sp_addrolemember "สตั๊ด", "ผู้ใช้1" sp_addrolemember "สตั๊ด", "user2"

เรามามอบสิทธิ์ให้กับบทบาทสตั๊ดและให้สิทธิ์แก่ผู้ใช้ 2 โดยตรง:

ให้สิทธิ์เลือก แทรกบนผลิตภัณฑ์ไปยังสตั๊ด ให้สิทธิ์เลือก แทรกบนผลิตภัณฑ์ให้กับผู้ใช้2

หลังจากดำเนินการคำสั่งเหล่านี้ ผู้ใช้ user1 และ user2 สามารถดำเนินการคำสั่งเพื่อเลือกและเพิ่มบันทึกลงในตารางผลิตภัณฑ์ได้

ระงับสิทธิ์ในการแทรกลงในตารางผลิตภัณฑ์สำหรับบทบาทสตั๊ด:

เพิกถอนการแทรกบนผลิตภัณฑ์ไปยังสตั๊ด

หลังจากดำเนินการคำสั่งก่อนหน้านี้ ผู้ใช้ 1 จะสูญเสียสิทธิ์ในการแทรกบันทึก และผู้ใช้ 2 ยังคงสิทธิ์นี้ไว้ เนื่องจากเขาให้สิทธิ์ในการแทรกอย่างชัดเจน

มาดำเนินการคำสั่งกัน

ปฏิเสธการใส่ผลิตภัณฑ์เข้ากับสตั๊ด

หลังจากดำเนินการคำสั่งนี้ ผู้ใช้ทั้งสองจะถูกลิดรอนสิทธิ์ในการแทรกลงในตารางผลิตภัณฑ์

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

  • บทบาทที่กำหนดค่าไว้ล่วงหน้าและสิทธิ์การเข้าถึงที่เป็นไปได้มีดังต่อไปนี้:
  • ไม่มี—ไม่มีการให้สิทธิ์การเข้าถึงฐานข้อมูลภูมิศาสตร์หรือชุดฐานข้อมูลภูมิศาสตร์
  • อ่านอย่างเดียว – ผู้ใช้สามารถดูและเลือกข้อมูลได้
  • อ่าน/เขียน—ผู้ใช้สามารถอ่าน เขียน และสร้างชุดข้อมูลใหม่ในฐานข้อมูลภูมิศาสตร์ หรืออ่านและเขียนชุดข้อมูลที่มีอยู่ได้
  • ผู้ดูแลระบบเซิร์ฟเวอร์ – ผู้ใช้ที่จัดการเซิร์ฟเวอร์ฐานข้อมูล

สิทธิ์เป็นแบบสะสม หากคุณเป็นผู้ดูแลระบบในระดับเซิร์ฟเวอร์ฐานข้อมูล คุณจะเป็นผู้ดูแลระบบฐานข้อมูลภูมิศาสตร์ด้วย หากคุณเป็นผู้ดูแลระบบฐานข้อมูลภูมิศาสตร์ คุณจะมีสิทธิ์อ่าน/เขียนชุดข้อมูลทั้งหมดในฐานข้อมูลภูมิศาสตร์นั้นโดยอัตโนมัติ

แต่ละระดับที่สามารถกำหนดสิทธิ์ได้มีอธิบายไว้ด้านล่าง

สิทธิ์การเข้าถึงในระดับเซิร์ฟเวอร์ฐานข้อมูล

สิทธิ์ในระดับเซิร์ฟเวอร์ฐานข้อมูลสามารถกำหนดค่าได้สำหรับผู้ดูแลระบบเซิร์ฟเวอร์เท่านั้น ผู้ใช้เป็นผู้ดูแลเซิร์ฟเวอร์หรือไม่

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

ผู้ดูแลระบบเซิร์ฟเวอร์สามารถทำงานต่อไปนี้:

  • เพิ่มและลบผู้ใช้เซิร์ฟเวอร์ฐานข้อมูล
  • จัดการฐานข้อมูลภูมิศาสตร์และการตั้งค่าความปลอดภัย
  • สร้างและลบฐานข้อมูลภูมิศาสตร์
  • แนบและเลิกปักหมุดฐานข้อมูลภูมิศาสตร์
  • สำรองและกู้คืนฐานข้อมูลทางภูมิศาสตร์
  • อัพเดตฐานข้อมูลภูมิศาสตร์
  • บีบอัดฐานข้อมูลภูมิศาสตร์ (Compress)
  • อัพเดตสถิติและดัชนีในฐานข้อมูลภูมิศาสตร์
  • ย่อขนาดฐานข้อมูลทางภูมิศาสตร์
  • เริ่ม หยุด และหยุดเซิร์ฟเวอร์ฐานข้อมูลชั่วคราว

โดยทั่วไปคุณมีผู้ดูแลระบบเซิร์ฟเวอร์ฐานข้อมูลหนึ่งคน

ต่อไปนี้เป็นตัวอย่างของกล่องโต้ตอบสิทธิ์สำหรับเซิร์ฟเวอร์ฐานข้อมูล บัญชี ROCKETJAY\har ได้รับการกำหนดบทบาทผู้ดูแลระบบเซิร์ฟเวอร์แล้ว

สิทธิ์ในระดับฐานข้อมูลภูมิศาสตร์

สิทธิ์ระดับฐานข้อมูลทางภูมิศาสตร์ถูกกำหนดโดยใช้เมนูบริบทฐานข้อมูลภูมิศาสตร์เมื่อเข้าถึงผ่านโฟลเดอร์เซิร์ฟเวอร์ฐานข้อมูลในแผนผังแค็ตตาล็อก

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

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

    นอกเหนือจากการเข้าถึงชุดข้อมูลแบบอ่าน/เขียนแล้ว ผู้ดูแลระบบฐานข้อมูลภูมิศาสตร์ยังสามารถดำเนินการดูแลระบบบนฐานข้อมูลภูมิศาสตร์เหล่านั้นได้ รวมถึงการสร้าง สำเนาสำรอง, การบีบอัดฐานข้อมูลภูมิศาสตร์, การอัปเดตฐานข้อมูลภูมิศาสตร์ และการจัดการสิทธิ์ผู้ใช้ฐานข้อมูลภูมิศาสตร์ (ผู้ใช้จะต้องมีอยู่บนเซิร์ฟเวอร์ฐานข้อมูล ผู้ดูแลระบบฐานข้อมูลภูมิศาสตร์ไม่สามารถเพิ่มผู้ใช้ใหม่บนเซิร์ฟเวอร์ฐานข้อมูลได้)

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

ในตัวอย่างต่อไปนี้ของกล่องโต้ตอบสิทธิ์ฐานข้อมูลภูมิศาสตร์ บัญชี ROCKETAY\pllama ได้ถูกเพิ่มไปยังบทบาทอ่าน/เขียนสำหรับฐานข้อมูลทางภูมิศาสตร์ในอดีต

เพื่อรับ ข้อมูลเพิ่มเติมสำหรับข้อมูลเกี่ยวกับเซิร์ฟเวอร์และผู้ดูแลระบบฐานข้อมูลภูมิศาสตร์ โปรดดูที่ ผู้ดูแลระบบเซิร์ฟเวอร์ฐานข้อมูล

สิทธิ์ในระดับชุดข้อมูล

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

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

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

หากผู้ดูแลระบบเซิร์ฟเวอร์สร้างชุดข้อมูล ชุดข้อมูลเหล่านั้นจะเป็นของผู้ใช้ dbo และจะถูกจัดเก็บไว้ใน dbo schema ดังนั้น ผู้ดูแลระบบเซิร์ฟเวอร์สามารถให้สิทธิ์แก่ชุดของคลาสใดๆ ใน dbo schema ได้ แต่เฉพาะกับอ็อบเจ็กต์ใน dbo schema เท่านั้น กล่าวอีกนัยหนึ่ง ผู้ดูแลระบบเซิร์ฟเวอร์จะไม่สามารถให้สิทธิ์แก่ข้อมูลที่เป็นของผู้ที่ไม่ใช่ผู้ดูแลระบบได้

ต่อไปนี้เป็นตัวอย่างของกล่องโต้ตอบสิทธิ์สำหรับชุดข้อมูล firestations:


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

สวัสดีทุกคน! ตอนนี้เราจะดูตัวอย่าง การสร้างและการลบผู้ใช้ใน ไมโครซอฟต์ ดีบีเอ็มเอสเซิร์ฟเวอร์ SQLทั้งการใช้คำสั่ง Transact-SQL และการใช้สภาพแวดล้อม สตูดิโอการจัดการ.

กระบวนการสร้างผู้ใช้ใน MS SQL Server ประกอบด้วยสองขั้นตอน:

  1. การสร้างล็อกอิน SQL Server ชื่อนี้จำเป็นเพื่อให้ผู้ใช้สามารถเชื่อมต่อกับอินสแตนซ์ SQL Server;
  2. การสร้างผู้ใช้ฐานข้อมูล ในกรณีนี้ เราได้ให้สิทธิ์แก่ผู้ใช้ในออบเจ็กต์ฐานข้อมูลแล้ว

บันทึก! เช่น เซิร์ฟเวอร์ SQLและสำหรับตัวอย่างของฉัน ฉันจะใช้เวอร์ชัน Microsoft SQL Server 2012 Express การทดสอบฐานข้อมูลการทดสอบได้ถูกสร้างขึ้นบนเซิร์ฟเวอร์ SQL นี้

การสร้างการเข้าสู่ระบบบน MS SQL Server

ก่อนที่คุณจะเริ่มสร้างการเข้าสู่ระบบสำหรับเซิร์ฟเวอร์ SQL คุณต้องตัดสินใจเกี่ยวกับวิธีการตรวจสอบสิทธิ์ มีสองตัวเลือก:

  1. การรับรองความถูกต้องของ Windowsคือเมื่อการเข้าสู่ระบบสามารถระบุผู้ใช้เป็นบัญชี Windows หรือเป็นสมาชิกของกลุ่ม Windows ( รวมถึงบัญชีโดเมนและกลุ่ม);
  2. การรับรองความถูกต้องของเซิร์ฟเวอร์ SQL- ในกรณีนี้ การเข้าสู่ระบบจะมีอยู่ใน SQL Server เท่านั้น

มาดูตัวอย่างการสร้างการเข้าสู่ระบบบนเซิร์ฟเวอร์ SQL กัน เราจะทำสิ่งนี้ก่อนโดยใช้ SQL Server Management Studio จากนั้นใช้ Transact-SQL

การสร้างการเข้าสู่ระบบโดยใช้ SQL Server Management Studio

เราเปิดตัว Management Studio จากนั้นในเบราว์เซอร์วัตถุเราจะพบรายการ “ ความปลอดภัย" เปิดด้วยเครื่องหมายบวก คลิกขวาที่รายการ " เข้าสู่ระบบ" และเลือกรายการ " สร้างการเข้าสู่ระบบ».

ต่อไป เรามาสร้างการเข้าสู่ระบบทดสอบด้วยการรับรองความถูกต้องของ SQL Server กัน เราระบุชื่อเข้าสู่ระบบ สร้างรหัสผ่าน และยืนยัน นอกจากนี้เรายังสามารถตรวจสอบตัวเลือกต่างๆ ได้ เช่น การใช้นโยบายรหัสผ่าน ฐานข้อมูลเริ่มต้น ภาษาเริ่มต้น และอื่นๆ

จากนั้นคลิกที่ปุ่ม “ ตกลง" หลังจากนั้นการเข้าสู่ระบบ TestLogin จะถูกสร้างขึ้น ค่าเริ่มต้น ชื่อที่กำหนดการเข้าสู่ระบบจะเปิดใช้งานและจะมีสิทธิ์ของบทบาทเซิร์ฟเวอร์ "สาธารณะ"

การสร้างการเข้าสู่ระบบโดยใช้ Transact-SQL

หากต้องการสร้างการเข้าสู่ระบบใน Transact-SQL คุณต้องเปิดตัวแก้ไขแบบสอบถามใน Management Studio แล้วเรียกใช้ คำแนะนำต่อไปนี้ (มันทำสิ่งเดียวกันกับการกระทำของเราข้างบนนี้ทุกประการ อินเตอร์เฟซแบบกราฟิกสตูดิโอการจัดการ).

สร้างการเข้าสู่ระบบด้วยรหัสผ่าน=N"Pa$$w0rd", DEFAULT_DATABASE=, DEFAULT_LANGUAGE=[รัสเซีย], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON GO

กล่าวอีกนัยหนึ่งในการสร้างการเข้าสู่ระบบในเซิร์ฟเวอร์ SQL จะใช้คำสั่ง สร้างการเข้าสู่ระบบ.

การสร้างการเข้าสู่ระบบเซิร์ฟเวอร์ SQL ด้วย Windows Authentication

หากต้องการสร้างการเข้าสู่ระบบ Windows Authenticated ให้ทำดังต่อไปนี้: คำสั่ง SQL:

สร้างการเข้าสู่ระบบจาก WINDOWS ด้วย DEFAULT_DATABASE=, DEFAULT_LANGUAGE=[Russian];

  • ไป
  • ComputerName\NameUser คือชื่อคอมพิวเตอร์\ชื่อผู้ใช้
  • จาก WINDOWS - ระบุว่าจะใช้การรับรองความถูกต้องของ Windows
  • ด้วย DEFAULT_DATABASE= – ฐานข้อมูลเริ่มต้น;

DEFAULT_LANGUAGE=[รัสเซีย] – ภาษาเริ่มต้น

ปิดการใช้งานและเปิดใช้งานการเข้าสู่ระบบใน MS SQL Server

หากจำเป็น คุณสามารถปิดการใช้งานการเข้าสู่ระบบชั่วคราวเพื่อบล็อกผู้ใช้จากการเข้าถึงเซิร์ฟเวอร์

ปิดการใช้งาน ALTER LOGIN TestLogin DISABLE;

--เปิดใช้งานการเปลี่ยนแปลงการเข้าสู่ระบบ TestLogin เปิดใช้งาน;

การสร้างผู้ใช้ฐานข้อมูลใน MS SQL Server เมื่อสร้างการเข้าสู่ระบบแล้ว คุณสามารถสร้างผู้ใช้ฐานข้อมูลต่อไปได้ เช่น การจับคู่ผู้ใช้กับการเข้าสู่ระบบภาษาสตูดิโอและ T-SQL

การสร้างผู้ใช้ฐานข้อมูลโดยใช้ Management Studio

เปิด Management Studio ค้นหาฐานข้อมูลที่ต้องการในเบราว์เซอร์วัตถุแล้วเปิดด้วยเครื่องหมายบวก จากนั้นใช้เครื่องหมายบวกเพื่อเปิดรายการ “ ความปลอดภัย" และคลิกที่โฟลเดอร์ " ผู้ใช้"คลิกขวาและเลือก" สร้างผู้ใช้».

จากนั้นกรอกชื่อผู้ใช้และชื่อล็อกอินที่ตรงกับผู้ใช้รายนี้ ( ในกรณีของฉันชื่อเหมือนกัน) และยังระบุรูปแบบเริ่มต้น ( หากไม่ได้ระบุไว้ ระบบจะกำหนดรูปแบบ dbo).

ให้เราสังเกตบทบาทของฐานข้อมูลทันทีด้วย ผู้ใช้รายนี้- บนหน้า" สมาชิกภาพ"ฉันทำเครื่องหมายที่ช่องถัดจากบทบาท db_datareader, เช่น. ผู้ใช้จะมีสิทธิในการอ่านข้อมูลจากตารางผู้ใช้ คลิก " ตกลง».

การสร้างผู้ใช้ฐานข้อมูลโดยใช้ Transact-SQL

คำสั่ง T-SQL ต่อไปนี้จะสร้างผู้ใช้ฐานข้อมูล ( รูปแบบเริ่มต้น dbo) และกำหนดบทบาท db_datareader ให้กับมัน เช่น ทำแบบเดียวกับที่เราทำก่อนหน้านี้เล็กน้อยในอินเทอร์เฟซกราฟิก Management Studio

ใช้การทดสอบ GO สร้างผู้ใช้เพื่อเข้าสู่ระบบด้วย DEFAULT_SCHEMA= GO ALTER ROLE เพิ่มสมาชิก ;

ไป ดังนั้นคำแนะนำสร้างผู้ใช้

ใช้เพื่อสร้างผู้ใช้ฐานข้อมูล

การลบผู้ใช้ฐานข้อมูลและการเข้าสู่ระบบใน MS SQL Server หากต้องการลบผู้ใช้ฐานข้อมูลคุณสามารถเขียนได้ SQL อย่างง่าย

คำแนะนำเช่น

เข้าสู่ระบบทดสอบผู้ใช้ DROP; หรือใช้เครื่องมือกราฟิก Management Studio เช่น ใน Object Browser ค่ะฐานข้อมูลที่ต้องการ เลือกข้อมูล "ความปลอดภัย -> ผู้ใช้ " และคลิกขวาที่ผู้ใช้ที่คุณต้องการลบและเลือก "».

บันทึก! ลบ

ผู้ใช้ที่เป็นเจ้าของวัตถุที่กำหนดความปลอดภัยไม่สามารถเอาออกจากฐานข้อมูลได้ คุณยังสามารถใช้เครื่องมือกราฟิกของ Management Studio (เหล่านั้น. “ความปลอดภัย -> การเข้าสู่ระบบ” คลิกขวาที่ชื่อ จากนั้นคลิกที่ “ลบ”

) และคำสั่ง Transact-SQL เช่น

บันทึก! วางเข้าสู่ระบบ TestLogin; การเข้าสู่ระบบปัจจุบันไม่สามารถลบได้ และไม่สามารถเข้าสู่ระบบที่เป็นเจ้าของวัตถุหรืองานที่กำหนดความปลอดภัยระดับเซิร์ฟเวอร์ได้เอเจนต์ SQL เซิร์ฟเวอร์ นอกจากนี้ การเข้าสู่ระบบไม่สามารถลบได้หากในขณะนี้

ผู้ใช้เชื่อมต่อกับระบบ คุณสามารถลบการเข้าสู่ระบบโดยไม่ต้องลบผู้ใช้ฐานข้อมูลที่เกี่ยวข้อง แต่จะส่งผลให้ผู้ใช้ที่ไม่เกี่ยวข้องกับบัญชีของตนอีกต่อไป

ฉันหวังว่าเนื้อหานี้จะเป็นประโยชน์กับคุณ ลาก่อน! การบรรยายนี้ประกอบด้วยเนื้อหาเกี่ยวกับการจัดการการเข้าถึงฐานข้อมูล SQL Server โดยเฉพาะอย่างยิ่งครอบคลุมถึงการจัดการผู้ใช้ฐานข้อมูล การเปิดใช้งานผู้ใช้ทั่วไป การสร้างบทบาทของฐานข้อมูล การให้สิทธิ์ฐานข้อมูล และการเพิ่มผู้ใช้ฐานข้อมูล

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

บันทึก- ในเวอร์ชันก่อนหน้าของ SQL Server คุณสามารถใช้ขั้นตอนการจัดเก็บของระบบsp_addaliasเพื่อแมปการเข้าสู่ระบบหลายรายการกับผู้ใช้ฐานข้อมูลเดียว ซึ่งสามารถทำได้ใน SQL Server 2005 อย่างไรก็ตาม ไม่แนะนำให้ใช้คุณลักษณะนี้ เนื่องจากเลิกใช้แล้วและอาจถูกลบออกในโปรแกรมเวอร์ชันต่อๆ ไป

ให้การเข้าถึงฐานข้อมูล

ผู้ใช้ฐานข้อมูลคือผู้เข้าร่วมระดับฐานข้อมูล เข้าสู่ระบบทั้งหมดยกเว้น บทบาทเซิร์ฟเวอร์ sysadmin จะต้องถูกแมปกับผู้ใช้ ซึ่งจะถูกแมปกับฐานข้อมูลที่พวกเขาต้องการเข้าถึง สมาชิกบทบาท ผู้ดูแลระบบแมปกับผู้ใช้ dbo ในฐานข้อมูลเซิร์ฟเวอร์ทั้งหมด

การเพิ่มผู้ใช้ฐานข้อมูล

คุณสามารถเพิ่มผู้ใช้ฐานข้อมูลได้โดยใช้คำสั่ง CREATE USER ตัวอย่างโค้ด Transact-SQL ต่อไปนี้สร้างการเข้าสู่ระบบ Peter และผู้ใช้ที่เกี่ยวข้องในฐานข้อมูล Adventure Works:

  • สร้างชื่อเข้าสู่ระบบปีเตอร์

    สร้างการเข้าสู่ระบบ Peter ด้วยรหัสผ่าน = "Tyu87IOR0";

  • ใช้ AdventureWorks; ไป

  • เพิ่มผู้ใช้ฐานข้อมูล Peter ซึ่งแมปกับการเข้าสู่ระบบ Peter ในฐานข้อมูล AdventureWorks

    สร้างผู้ใช้ Peter เพื่อเข้าสู่ระบบ Peter;

การจัดการผู้ใช้ฐานข้อมูล

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

SELECT HAS_DBACCESS("งานผจญภัย");

หากต้องการรับข้อมูลเกี่ยวกับผู้ใช้ฐานข้อมูล คุณสามารถใช้มุมมองแค็ตตาล็อก sys.database_principals

หากคุณต้องการปิดใช้งานการเข้าถึงฐานข้อมูลของผู้ใช้เป็นการชั่วคราว คุณสามารถเพิกถอนสิทธิ์ CONNECT สำหรับผู้ใช้รายนั้นได้ ตัวอย่างต่อไปนี้เพิกถอนสิทธิ์ CONNECT สำหรับผู้ใช้ Peter:

  • เปลี่ยนบริบทการเชื่อมต่อกับฐานข้อมูล AdventureWorks

    ใช้ AdventureWorks; ไป

  • เพิกถอนการอนุญาตการเชื่อมต่อสำหรับ Peter ใน AdventureWorks

    เพิกถอนการเชื่อมต่อกับปีเตอร์;

คุณสามารถลบผู้ใช้ออกจากฐานข้อมูลได้โดยใช้คำสั่ง DROP USER

คำเตือน- SQL Server 2005 ไม่อนุญาตให้ลบผู้ใช้ที่เป็นเจ้าของสคีมาฐานข้อมูล วงจรจะกล่าวถึงในภายหลังในการบรรยายนี้

การจัดการผู้ใช้ที่ขาดการติดต่อกับการเข้าสู่ระบบ

การเข้าสู่ระบบที่ถูกละเลยคือผู้ใช้ฐานข้อมูลที่ไม่เกี่ยวข้องกับการเข้าสู่ระบบในอินสแตนซ์ปัจจุบันของ SQL Server ใน SQL Server 2005 ผู้ใช้อาจไม่เชื่อมโยงกับการเข้าสู่ระบบหากการเข้าสู่ระบบที่เกี่ยวข้องกับนั้นถูกลบออก หากต้องการรับข้อมูลเกี่ยวกับผู้ใช้ดังกล่าว คุณสามารถเรียกใช้รหัสต่อไปนี้:

  • เปลี่ยนบริบทการเชื่อมต่อกับฐานข้อมูล AdventureWorks

    ใช้ AdventureWorks; ไป

  • สร้างรายงานเกี่ยวกับผู้ใช้ฐานข้อมูลทั้งหมดที่สูญเสียการเชื่อมต่อเข้าสู่ระบบ

    ดำเนินการ sp_change_users_login @Action = "รายงาน";

SQL Server 2005 อนุญาตให้คุณสร้างผู้ใช้ที่ไม่เกี่ยวข้องกับการเข้าสู่ระบบโดยใช้ส่วนคำสั่ง WITHOUT LOGIN ผู้ใช้ที่สร้างขึ้นโดยใช้ส่วนคำสั่ง WITHOUT LOGIN จะไม่ถือว่าเป็นผู้ใช้ล็อกอินที่ถูกละเลย คุณลักษณะนี้จะมีประโยชน์มากในสถานการณ์ที่คุณต้องการเปลี่ยนบริบทการดำเนินการของโมดูล บริบทการดำเนินการจะกล่าวถึงในภายหลังในการบรรยายนี้ ตัวอย่างต่อไปนี้สร้างผู้ใช้ที่ไม่มีการเข้าสู่ระบบที่เกี่ยวข้อง

  • เปลี่ยนบริบทการเชื่อมต่อกับฐานข้อมูล AdventureWorks

    ใช้ AdventureWorks; ไป

  • สร้างผู้ใช้ฐานข้อมูล Paul ในฐานข้อมูล AdventureWorks
  • โดยไม่ตรงกับชื่อล็อกอินด้วย สำเนานี้อินสแตนซ์ของเซิร์ฟเวอร์ SQL

    สร้างผู้ใช้ Paul โดยไม่ต้องเข้าสู่ระบบ

เปิดใช้งานผู้ใช้ทั่วไป

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

  • เปลี่ยนบริบทการเชื่อมต่อกับฐานข้อมูล AdventureWorks

    ใช้ AdventureWorks; ไป

  • เราให้สิทธิ์ผู้ใช้ทั่วไปในการเข้าถึงฐานข้อมูล AdventureWorks

    ให้สิทธิ์เชื่อมต่อกับแขก;

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

การให้สิทธิ์ฐานข้อมูล

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

การสร้างบทบาทฐานข้อมูล

บทบาทฐานข้อมูลเป็นสมาชิกระดับ ฐานข้อมูล บทบาทฐานข้อมูลสามารถใช้เพื่อกำหนดสิทธิ์ได้ กลุ่มฐานข้อมูลผู้ใช้ ใน SQL Server 2005 ชุดของบทบาทฐานข้อมูลจะถูกสร้างขึ้นตามค่าเริ่มต้น บทบาทเริ่มต้นเหล่านี้แสดงอยู่ในตาราง 3.1.

ตารางที่ 3.1.
บทบาทฐานข้อมูลเริ่มต้น บทบาทของฐานข้อมูล
"คำอธิบาย db_accessadmin
สามารถควบคุมการเข้าถึงฐานข้อมูลได้ db_backupoperator สามารถดำเนินการได้การสำรองข้อมูล
db_datareader ฐานข้อมูล
สามารถอ่านข้อมูลจากตารางของผู้ใช้ทั้งหมดได้ db_datawriter
สามารถเพิ่ม ลบ และอัปเดตข้อมูลในตารางของผู้ใช้ทั้งหมดได้ db_ddladmin
สามารถดำเนินการคำสั่ง DDL ใด ๆ บนฐานข้อมูลได้ db_denydatareader
ไม่สามารถอ่านข้อมูลใดๆ ในตารางผู้ใช้ได้ db_denydatawriter
ไม่สามารถเพิ่ม ลบ หรืออัปเดตข้อมูลใดๆ ในตารางผู้ใช้ได้ db_owner
สามารถดำเนินกิจกรรมการกำหนดค่าและการบำรุงรักษาทั้งหมดได้ db_securityadmin
สามารถเปลี่ยนสมาชิกบทบาทฐานข้อมูลและจัดการสิทธิ์ได้ สาธารณะ

บทบาทพิเศษของฐานข้อมูล ผู้ใช้ทุกคนมีบทบาทสาธารณะ ผู้ใช้จากกลุ่มสาธารณะไม่สามารถลบออกได้

  • เปลี่ยนบริบทการเชื่อมต่อกับฐานข้อมูล AdventureWorks

    ใช้ AdventureWorks; ไป

  • คุณสามารถเพิ่มบทบาทของฐานข้อมูลได้หากต้องการจัดกลุ่มผู้ใช้ตามข้อกำหนดสิทธิ์เฉพาะ ตัวอย่างโค้ดต่อไปนี้สร้างบทบาทฐานข้อมูลชื่อ Auditors และเพิ่มผู้ใช้ Peter ให้กับบทบาทใหม่นี้

    สร้างบทบาทผู้ตรวจสอบในฐานข้อมูล AdventureWorks

  • สร้างบทบาทผู้ตรวจสอบ; ไป

    เพิ่มผู้ใช้ Peter ให้กับบทบาทผู้ตรวจสอบ

EXECUTE sp_addrolemember "ผู้ตรวจสอบ", "ปีเตอร์";

การจัดการบทบาทฐานข้อมูล หลังจากเสร็จสิ้นการร้องขอฟังก์ชั่นระบบ

  • เปลี่ยนบริบทการเชื่อมต่อกับฐานข้อมูล AdventureWorks

    ใช้ AdventureWorks; ไป

  • IS_MEMBER คุณสามารถตรวจสอบว่าผู้ใช้ปัจจุบันอยู่ในบทบาทฐานข้อมูลใด ๆ หรือไม่ ในตัวอย่างต่อไปนี้ เราจะตรวจสอบว่าผู้ใช้ปัจจุบันอยู่ในบทบาทฐานข้อมูล db_owner หรือไม่

    ตรวจสอบว่าผู้ใช้ปัจจุบันอยู่ในบทบาท db_owner หรือไม่
    มีบทความที่คล้ายกันค่อนข้างมาก แต่ฉันเขียนบทความนี้เพื่อตัวเองเป็นหลัก โดยเน้นไปที่บันทึกย่อที่อธิบายปัญหาที่อาจเกิดขึ้น ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับผู้อื่น
    1. ติดตั้งแพลตฟอร์ม 1C

    หลังการติดตั้ง ให้เปิดแผงการดูแลระบบสำหรับเซิร์ฟเวอร์องค์กร 1C และดูว่าว่างเปล่า
    คุณต้องสร้างเซิร์ฟเวอร์: เปิดคอนโซลรูท -> เซิร์ฟเวอร์ Central 1C: เซิร์ฟเวอร์ Enterprise 8.2 คลิกขวาที่มันแล้วเลือกใหม่ เลือกจากเมนูแบบเลื่อนลง เซิร์ฟเวอร์กลาง 1C องค์กร 8.2 หน้าต่างที่มี 4 ฟิลด์จะเปิดต่อหน้าเรา:
    โปรโตคอล- โปรโตคอลที่จะส่งข้อมูล
    ชื่อ- ชื่อของคอมพิวเตอร์บนเครือข่ายที่เซิร์ฟเวอร์ตั้งอยู่
    พอร์ต IP-พอร์ตที่เซิร์ฟเวอร์สามารถเข้าถึงได้
    คำอธิบาย-คำอธิบาย. ไม่จำเป็น.

    บันทึก:
    หากติดตั้งแพลตฟอร์ม 1C บนคอมพิวเตอร์แล้วเปลี่ยนชื่อคอมพิวเตอร์ คุณจะไม่สามารถเข้าถึงได้เนื่องจากแพลตฟอร์ม 1C เป็นแพลตฟอร์มที่ชาญฉลาดมากและบันทึกชื่อคอมพิวเตอร์ในไฟล์บางไฟล์ระหว่างการติดตั้ง แต่แล้ว เมื่อชื่อคอมพิวเตอร์เปลี่ยนไป แพลตฟอร์มจะไม่เขียนใหม่อีกต่อไป ไฟล์เหล่านี้จำเป็นสำหรับการทำงานของบริการ RAGENT 1C (สามารถพบได้ในบริการที่ทำงานอยู่ผ่านแผงการดูแลระบบเซิร์ฟเวอร์ Windows) ทั้งหมดนี้ชี้ให้เห็นว่าในการเปลี่ยนชื่อไฟล์เหล่านี้ คุณต้องหยุดบริการ RAGENT ไฟล์เหล่านั้นอยู่ในตำแหน่งต่อไปนี้:
    C:\ไฟล์โปรแกรม (x86)\1cv82\srvinfo\srvribrg
    C:\ไฟล์โปรแกรม (x86)\1cv82\srvinfo\reg_1541\1CV8Reg
    เราเปิดไฟล์เหล่านี้ด้วยแผ่นจดบันทึกและเปลี่ยนชื่อเครื่องที่ผ่านมาเป็นชื่อปัจจุบันด้วยตนเอง บันทึกและเปิดใช้งาน RAGENT

    กลับไปที่การตั้งค่า:
    หลังจากกรอกหน้าต่างที่มีฟิลด์แล้วให้คลิกตกลงและหากทุกอย่างถูกต้องเราจะมีเซิร์ฟเวอร์ที่ตั้งชื่อตามชื่อเครื่องที่ตั้งอยู่

    ดังนั้น. เซิร์ฟเวอร์กำลังทำงานและตอนนี้เราจำเป็นต้องสร้างฐานข้อมูลบนเซิร์ฟเวอร์ MYSQL และเชื่อมต่อกับเซิร์ฟเวอร์ 1C มีหลายวิธี - ที่นี่ฉันจะอธิบายวิธีที่ง่ายที่สุด:
    บนเซิร์ฟเวอร์ 1C ขององค์กรให้เปิดเซิร์ฟเวอร์ที่สร้างขึ้นใหม่ของเราโดยคลิกที่ + ถัดจากชื่อเซิร์ฟเวอร์และในรายการ "ฐานข้อมูล" คลิกขวาแล้วเลือกใหม่ -> ฐานข้อมูล
    หน้าต่างจะเปิดต่อหน้าเราพร้อมช่องต่อไปนี้:

    ชื่อ- ชื่อของฐานข้อมูลของเราบนเซิร์ฟเวอร์ 1C (ตามกฎแล้วหลายคนเขียนเหมือนกับในช่องฐานข้อมูลเพื่อไม่ให้สับสน)
    คำอธิบาย-คำอธิบาย
    การเชื่อมต่อที่ปลอดภัย- ปิดการใช้งานโดยค่าเริ่มต้น คุณสามารถเปิดใช้งานได้ แต่ภาระบนเซิร์ฟเวอร์จะเพิ่มขึ้น
    เซิร์ฟเวอร์ฐานข้อมูล- หากเซิร์ฟเวอร์อยู่บนเซิร์ฟเวอร์เดียวกัน ให้ระบุ (ท้องถิ่น) ในลักษณะนี้ทุกประการในวงเล็บ หากไม่ได้อยู่บนเซิร์ฟเวอร์นี้ ให้ระบุ IP ของเซิร์ฟเวอร์
    ประเภท DBMS- เลือกประเภท MS SQL
    ฐานข้อมูล-ชื่อของฐานข้อมูลบนเซิร์ฟเวอร์ MS SQL หากไม่มีฐานข้อมูล คุณสามารถเลือกช่องทำเครื่องหมายใดช่องหนึ่ง จากนั้นฐานข้อมูลจะถูกสร้างขึ้น
    ผู้ใช้เซิร์ฟเวอร์ฐานข้อมูล-ระบุผู้ใช้ที่คุณสร้างระหว่างการติดตั้งหรือสร้าง ผู้ใช้แต่ละรายใน MS SQL ให้อนุญาตและลงทะเบียนที่นี่
    รหัสผ่านผู้ใช้เซิร์ฟเวอร์ฐานข้อมูล-รหัสผ่าน
    อนุญาตให้ออกใบอนุญาตโดยเซิร์ฟเวอร์ 1C Enterprise- เลือกใช่
    ประเทศ- เลือกประเทศ
    ชดเชยวันที่-ตั้งค่าเป็น 0
    ช่องทำเครื่องหมาย “สร้างฐานข้อมูลกรณีขาดงาน”- ช่องทำเครื่องหมายเดียวกันสำหรับการสร้างฐานข้อมูลหากไม่มีอยู่
    ช่องทำเครื่องหมาย “ตั้งค่าการบล็อกงานที่กำหนดเวลาไว้”- ห้ามทำเครื่องหมายในช่อง

    คลิกตกลงและเราเห็นว่าเซิร์ฟเวอร์ได้รับการกำหนดค่าและในแท็บ "ฐานข้อมูล" ที่เรามี ฐานข้อมูลภายใต้ชื่อที่เราตั้งให้เธอ

    ในการตั้งค่าการสำรองข้อมูล เราจำเป็นต้องเปิด สตูดิโอการจัดการ Microsoft SQL
    ป้อนข้อมูลเข้าสู่ระบบของคุณและเชื่อมต่อกับเซิร์ฟเวอร์
    ก่อนหน้าเราคือคอนโซลผู้ดูแลระบบ ใน สำรวจวัตถุเปิดแท็บ การจัดการและในนั้นเราเห็น แผนการบำรุงรักษาที่นี่เราจะสร้าง BackUP ที่เราต้องการ ตามปกติให้คลิกขวาที่ แผนการบำรุงรักษา -> แผนการบำรุงรักษาใหม่- แท็บแผนย่อยจะปรากฏในหน้าต่างหลักและใต้ สำรวจวัตถุ หน้าต่างอื่นจะปรากฏขึ้น กล่องเครื่องมือซึ่งซ้อนกันอยู่ งานแผนการบำรุงรักษา- ในนั้นเราจะเลือก สำรองข้อมูลงานฐานข้อมูลโดยคลิก 2 ครั้ง มันจะถูกโอนไปที่หน้าต่างหลัก เราคลิกที่มัน 2 ครั้งและมีหน้าต่างปรากฏขึ้นตรงหน้าเราอีกครั้งพร้อมช่องที่เราสามารถเลือกได้ว่าจะทำการสำรองข้อมูลใด ฐานการสำรองข้อมูลใดที่จะใช้ และตำแหน่งที่จะบันทึก หลังจากตั้งค่าเสร็จแล้วให้คลิกตกลง

    บันทึก:
    เมื่อบันทึกการสำรองข้อมูลไปยังโฟลเดอร์เครือข่ายบางส่วน (โดยวิธีการคุณจะต้องลงทะเบียนเส้นทางด้วยตนเองเนื่องจากหน้าต่างการเลือกไดเรกทอรีจะเห็นเฉพาะทรัพยากรในเครื่อง) ติดตามสิทธิ์การเข้าถึงและในขณะเดียวกันก็ติดตามประเภทใด ของการรับรองความถูกต้องที่คุณมี เซิร์ฟเวอร์ MySqlเพราะหากการรับรองความถูกต้องไม่ได้ขึ้นอยู่กับข้อมูลประจำตัว บันทึกของ Windowsและสำหรับผู้ใช้ DBMS ภายใน และหากคุณมีเซิร์ฟเวอร์ AD อยู่ BackUp จะส่งข้อผิดพลาดเมื่อพยายามดำเนินการ เนื่องจากจะทำสิ่งนี้ในนามของผู้ใช้ DBMS ภายใน และ AD จะไม่ยอมให้ผ่านทุกที่ยกเว้น คอมพิวเตอร์ท้องถิ่น.

    หลังจากที่คุณกำหนดค่าพาธ ฐาน และประเภทการสำรองข้อมูลแล้ว คุณจะต้องกำหนดค่ากำหนดการ เมื่อต้องการทำเช่นนี้ ในหน้าต่างหลักเหนืองานที่คุณสร้างขึ้นจะมีป้ายบอกทาง แผนย่อย- ตรงปลายป้าย (ขวา) จะมีไอคอนปฏิทินอยู่ เมื่อคลิกที่ภาพ คุณจะเข้าสู่การตั้งค่ากำหนดการ โดยการทำเครื่องหมายที่ช่องวันและตั้งเวลา คุณจะตั้งค่ากำหนดการได้ โดยดับเบิลคลิกบนฟิลด์ที่เรียกว่า แผนย่อยคุณสามารถเปลี่ยนชื่องานได้ เมื่อกำหนดค่าทุกอย่างแล้ว ให้ไปที่ไฟล์ -> บันทึกทั้งหมด- หลังจากบันทึก งานที่มีชื่อของคุณที่คุณให้กับ BackUp จะปรากฏในแผนการบำรุงรักษา

    หลังจากเสร็จสิ้นการตั้งค่า โปรดตรวจสอบการทำงาน เมื่อต้องการทำสิ่งนี้ ให้คลิกขวาที่งานที่สร้างขึ้นแล้วดำเนินการ Exicute

    บันทึก:
    หาก Exicute ทำงานโดยมีข้อผิดพลาด โปรดอ่านข้อผิดพลาดที่ Studio จะแจ้งให้คุณทราบ และก่อนอื่น ให้ตรวจสอบว่าคุณกำลังใช้งานอยู่หรือไม่ เอเจนต์เซิร์ฟเวอร์ SQL- เขาเป็นผู้ดำเนินงานและฟังก์ชัน Exicute จะหันมาหาเขาเพื่อทำงานให้เสร็จสิ้น หากไม่ได้ทำงานอยู่ ความพยายามในการดำเนินการจะล้มเหลว หากต้องการดูว่าตัวแทนทำงานหรือไม่ใน Studio ใน Object Explorer ให้ไปที่แท็บ บริษัทตัวแทนเซิร์ฟเวอร์ SQL- หากไอคอนสัญลักษณ์แสดงหัวข้อย่อยมีวงกลมสีแดงพร้อมกากบาท แสดงว่าเจ้าหน้าที่ถูกหยุดแล้ว คุณสามารถเริ่มต้นได้โดยคลิกขวาที่มันแล้วเลือกตัวเลือก START จากเมนูบริบท