GRANT, REVOKE და DENY მონაცემთა ბაზის ნებართვები
მონაცემთა მართვის ენა (DCL) არის სტრუქტურირებული შეკითხვის ენა (SQL) ქვესაქტურა და მონაცემთა ბაზის ადმინისტრატორებს საშუალებას აძლევს, უზრუნველყონ მონაცემთა ბაზების უსაფრთხოების ხელმისაწვდომობის კონფიგურაცია. ის აკმაყოფილებს მონაცემების დეფინიციის ენას (DDL), რომელიც გამოიყენება მონაცემთა ბაზის ობიექტების დამატებასა და წაშლაზე და მონაცემთა მანიპულაციის ენაზე (DML), რომელიც გამოიყენება მონაცემთა ბაზის შინაარსის მოძიება, ჩასმა და შეცვლა.
DCL არის SQL- ის უმარტივესი, რადგან იგი შედგება მხოლოდ სამი ბრძანებისგან: GRANT, REVOKE და DENY. კომბინირებული, ამ სამი ბრძანებები უზრუნველყოფს ადმინისტრატორებს მოქნილობით მონაცემთა ბაზის ნებართვების შექმნისა და ამოღება უკიდურესად მარცვლოვანი ფორმით.
ნებართვების დამატება GRANT ბრძანებით
GRANT ბრძანება იყენებს ადმინისტრატორებს, რათა დაამატოთ ახალი უფლებები მონაცემთა ბაზაში მომხმარებლისთვის . მას აქვს ძალიან მარტივი სინტაქსი, რომელიც შემდეგნაირად არის განსაზღვრული:
GRANT [პრივილეგია] ON [ობიექტი] [მომხმარებლის] [GRANT OPTION]აქ არის rundown თითოეული პარამეტრების შეგიძლიათ მიაწოდოს ამ ბრძანება:
- პრივილეგია შეიძლება იყოს სიტყვით ALL (მინიჭების მრავალფეროვანი ნებართვების) ან კონკრეტული მონაცემთა ნებართვა ან კომპლექტი ნებართვები. მაგალითები მოიცავს CREATE DATABASE, SELECT, INSERT, UPDATE, წაშლა, გამონაკლისი და CREATE VIEW.
- ობიექტი შეიძლება იყოს მონაცემთა ბაზის ობიექტი. მოქმედი პრივილეგიის ვარიანტები განსხვავდება მონაცემთა ბაზის ტიპის მიხედვით, რომელიც მოიცავს ამ პუნქტში. როგორც წესი, ობიექტი იქნება მონაცემთა ბაზა, ფუნქცია, შენახული პროცედურა , მაგიდა ან ხედი.
- მომხმარებელი შეიძლება იყოს ნებისმიერი მონაცემთა ბაზის მომხმარებელი. თქვენ ასევე შეგიძლიათ შეიტანოთ როლი მომხმარებლისთვის ამ პუნქტში, თუ გსურთ გამოიყენოთ როლი დაფუძნებული მონაცემთა ბაზის უსაფრთხოება.
- GRANT- ის ბრძანების დასასრულს, თუ თქვენ გრანტის მინიჭების პუნქტში მითითებულ ვარიანტს გულისხმობთ, თქვენ არა მხოლოდ მიუთითეთ მითითებული მომხმარებლის ნებართვა, რომელიც განსაზღვრულია SQL- ის განცხადებაში, არამედ მისცემს მომხმარებელს იმავე ნებართვის მისაცემად სხვა მონაცემთა ბაზაში მომხმარებლებისთვის. ამის გამო გამოიყენეთ ეს პუნქტი ზრუნვაზე.
მაგალითად, ვივარაუდოთ, რომ გსურთ ჯოის მომხმარებლისთვის მონაცემთა გადაცემის უნარ-ჩვევების მოძიება. თქვენ შეგიძლიათ გამოიყენოთ შემდეგი SQL ბრძანება:
პერსონალის შერჩევა თანამშრომლებისთვის ჯოშიჯო ახლა დასაქმებულთა მაგიდასთან ინფორმაციის მოძიებას შეძლებს. თუმცა, ის ვერ შეძლებს სხვა წევრებს ნებართვის გაცემაზე იმ მაგიდაზე ინფორმაციის მიღებაზე, რომლის მიხედვითაც გრანტის შესახებ განცხადებაში არ შედიოდა გრანტის არჩევა.
მონაცემთა ბაზის წვდომის გაუქმება
REVOKE ბრძანება გამოიყენება მონაცემთა ბაზის წვდომის შესახებ, რომელიც მანამდე მიიღო ამგვარი ხელმისაწვდომობის შესახებ. სინტაქსი ამ ბრძანების განისაზღვრება შემდეგი რედაქციით:
REVOKE [GRANT OPTION] [ნებართვა] [ობიექტის] [მომხმარებლის] [CASCADE]აქ არის rundown პარამეტრების შესახებ REVOKE ბრძანება:
- ნებართვა განსაზღვრავს მონაცემთა ბაზის ნებართვას ამოცნობის მომხმარებლისგან. ბრძანება უგულებელყოფს ორივე გრანტისა და დენი მტკიცებულებებს, რომლებიც ადრე გაცემული იქნა ნებადართული ნებართვისთვის.
- ობიექტი შეიძლება იყოს მონაცემთა ბაზის ობიექტი. მოქმედი პრივილეგიის ვარიანტები განსხვავდება მონაცემთა ბაზის ტიპის მიხედვით, რომელიც მოიცავს ამ პუნქტში. როგორც წესი, ობიექტი იქნება მონაცემთა ბაზა, ფუნქცია, შენახული პროცედურა, მაგიდა ან ხედი.
- მომხმარებელი შეიძლება იყოს ნებისმიერი მონაცემთა ბაზის მომხმარებელი. თქვენ ასევე შეგიძლიათ შეიტანოთ როლი მომხმარებლისთვის ამ პუნქტში, თუ გსურთ გამოიყენოთ როლი დაფუძნებული მონაცემთა ბაზის უსაფრთხოება.
- GRANT OPTION for პუნქტი შლის კონკრეტული მომხმარებლის უნარი მინიჭებული ნებართვის სხვა წევრებს. შენიშვნა : თუ შეყვანის გრანტის შეტანა შეიცავს REVOKE- ს განცხადებას, პირველადი ნებართვა არ გაუქმებულია. ეს მუხლი გააქტიურებს მხოლოდ მინიჭების შესაძლებლობას.
- CASCADE- ის პარამეტრი ასევე გაათავისუფლებს მითითებულ ნებართვას ნებისმიერი მომხმარებლისგან, რომლითაც მითითებული მომხმარებელი ნებართვას ანიჭებს.
მაგალითად, შემდეგი ბრძანება უგულებელყოფს წინა მაგალითში ჯოზე მინიჭებულ ნებართვას:
ჯოსაყოველთაოდ უარყოფა მონაცემთა ბაზის წვდომა
DENY ბრძანება გამოიყენება ცალკეული ნებართვის მიღებისგან მომხმარებლისგან. ეს არის სასარგებლო, როდესაც მომხმარებელი არის როლი ან ჯგუფი, რომელიც ნებართვას ანიჭებს და გსურთ, რომ თავიდან აიცილოთ ეს ინდივიდუალური მომხმარებელი ნებართვის მემკვიდრეობით გამონაკლისის შექმნის გზით. სინტაქსი ამ ბრძანების შემდეგია:
DENY [ნებართვა] [ობიექტზე] DENY ბრძანების პარამეტრი იდენტურია GRANT- ს ბრძანებისათვის.
მაგალითად, თუ გინდა რომ დარწმუნებული ყოფილიყო, რომ მეთიუ არასდროს არ მიიღებს თანამშრომლებს მაგიდასთან ინფორმაციის წაშლის შესაძლებლობას, გამოსცეს შემდეგი ბრძანება: