SQL Server แกรนท์

Sql Server Kae Rnth



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

SQL Server ที่ปลอดภัยและหลัก

การรักษาความปลอดภัยอ้างอิงถึงทรัพยากรที่ระบบการให้สิทธิ์ SQL Server Database Engine ควบคุมการเข้าถึง ตัวอย่างจะเป็นตารางฐานข้อมูล

หลักอ้างอิงถึงเอนทิตีที่ต้องการเข้าถึงทรัพยากร SQL Server ตัวอย่างเช่น ผู้ใช้ที่ร้องขอสิทธิ์ในตารางเป็นหลัก







คำชี้แจงสิทธิ์ของเซิร์ฟเวอร์ SQL

ต่อไปนี้แสดงไวยากรณ์ของคำสั่ง GRANT ใน SQL Server:



ให้สิทธิ์
บน หลักที่ปลอดภัย;

คุณต้องระบุสิทธิ์ที่คุณต้องการกำหนดให้กับตัวหลักเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาค



คำหลัก ON ช่วยให้คุณสามารถระบุการรักษาความปลอดภัยที่จะใช้การอนุญาต สุดท้าย คำหลัก TO ช่วยให้คุณสามารถตั้งค่าหลักเป้าหมายได้





ตัวอย่างเช่น การสร้างผู้ใช้โดยใช้คำสั่ง CREATE USER ไม่ได้กำหนดการอนุญาตสำหรับผู้ใช้นั้น ดังนั้นจึงจำเป็นต้องใช้คำสั่ง GRANT เพื่อกำหนดสิทธิ์สำหรับผู้ใช้นั้น

ให้เรายกตัวอย่าง



สร้างตัวอย่างการเข้าสู่ระบบ

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

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

คำสั่งด้านบนควรสร้างผู้ใช้ด้วยชื่อผู้ใช้ linuxhint และรหัสผ่านที่ระบุ

สร้างฐานข้อมูลตัวอย่าง

เราสามารถสร้างฐานข้อมูลที่ผู้ใช้จะอยู่เมื่อเราได้กำหนดการเข้าสู่ระบบ แบบสอบถามมีดังนี้:

วางฐานข้อมูลหากมีตัวแก้ไข

สร้างตัวแก้ไขฐานข้อมูล

ใช้ตัวแก้ไข;

วางตารางถ้ามีรายการ;

สร้างรายการตาราง (
id int ไม่ใช่ข้อมูลประจำตัวที่เป็นโมฆะ (1,
1) คีย์หลัก
server_name varchar (50),
server_address varchar(255) ไม่เป็นโมฆะ
compression_method varchar(100) เริ่มต้น 'ไม่มี'
size_on_disk ลอยไม่เป็นโมฆะ
size_compressed ลอย
total_records int ไม่เป็นโมฆะ
วันที่ init_date
);
แทรก
เข้าไปข้างใน
รายการ (server_name,
ที่อยู่เซิฟเวอร์,
วิธีการบีบอัด
size_on_disk,
size_compressed,
total_records,
init_date)
ค่า
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000 ,'2022-11-11'),
('ค้นหาแบบยืดหยุ่น','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');

สร้างผู้ใช้สำหรับการเข้าสู่ระบบ

เมื่อเราสร้างฐานข้อมูลและตารางแล้ว เราสามารถสร้างผู้ใช้สำหรับการเข้าสู่ระบบ linuxhint เป็น:

ใช้ตัวแก้ปัญหา
สร้างผู้ใช้ linuxhint
สำหรับการเข้าสู่ระบบ linuxhint;

เข้าสู่ระบบในฐานะผู้ใช้ใหม่

ต่อไปให้เราเข้าสู่ระบบในฐานะผู้ใช้ที่สร้างขึ้นใหม่ คำสั่งแสดงดังรูป:

setuser 'linuxhint';

เมื่อเข้าสู่ระบบแล้ว เราสามารถลองดูตารางได้โดยการรันคำสั่ง select:

เลือก * จากรายการ;

การเรียกใช้แบบสอบถามด้านบนควรส่งคืนข้อผิดพลาด:

ข่าวสารเกี่ยวกับ 229 ระดับ 14 สถานะ 5 บรรทัด 379
สิทธิ์ SELECT ถูกปฏิเสธในวัตถุ 'รายการ' ฐานข้อมูล 'ตัวแก้ไข' สคีมา 'dbo'

เนื่องจากผู้ใช้ linuxhint ไม่มีสิทธิ์ใดๆ ในฐานข้อมูล รวมถึงสิทธิ์ SELECT

ให้สิทธิ์แก่ผู้ใช้

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

คุณต้องเข้าสู่ระบบด้วยบัญชีผู้ดูแลระบบ SQL Server

ถัดไป เรียกใช้แบบสอบถามเป็น:

อนุญาตให้เลือกรายการเพื่อ linuxhint;

เมื่อดำเนินการแล้ว ให้เข้าสู่ระบบในฐานะผู้ใช้ linuxhint และใช้คำสั่ง SELECT

เลือก * จากรายการ;

ในกรณีนี้ คำสั่งจะส่งคืนตารางเนื่องจากผู้ใช้มีสิทธิ์ SELECT

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

ให้สิทธิ์แทรกลบรายการไปยัง linuxhint;

ในกรณีนี้ ผู้ใช้ linuxhint ควรมีสิทธิ์ SELECT, INSERT และ DELETE ในตารางรายการ

บทสรุป

ในโพสต์นี้ เราได้สำรวจการใช้คำสั่ง GRANT ใน SQL Server คำสั่งอนุญาตให้คุณกำหนดสิทธิ์ให้กับผู้ใช้หลักที่กำหนด