Articles Comments

Oracle DBA & All IT » Database, DBA, Oracle, Oracle Tips » Role and Privilege on oracle บทบาทและสิทธิบน oracle ^^

Role and Privilege on oracle บทบาทและสิทธิบน oracle ^^

หายไปนานอีกเช่นเคย หลังจากไปปฏิบัติภาระกิจ กะว่าจะพยายามอัพบล็อคให้ถี่ขึ้น ^^ ช่วงนี้ฝนก็ตกทุกวันอย่าลืมดูแลสุขภาพกันด้วยน๊า

วันนี้จะมาพูดถึง Role and Privilege บน oracle กัน อาจจะยังมีคนสงสัยความต่างของมันว่ากันอย่างยังไงน๊า
เอาง่ายๆแบบบ้านๆเลยนะ Role คือที่รวบรวมสิทธิต่างๆ ที่เราได้จาก Privilege มาไว้ที่เดียวกัน เพื่อจัดเป็นกลุ่มเป็นก้อน
หรือเป็นพรรคเป็นพวก เพื่อให้ DBA ง่ายในการดูแลจัดการนั่นเอง

เช่น ถ้าเราต้องการให้ Scott สามารถเห็น Table Empolyee ของ Hr เราก็สามารถที่จะ grant privilege ให้กับ scott ได้ดังนี้

GRANT [SELECT|INSERT|UPDATE|DELETE|EXECUTE ]
ON [
TABLE|VIEW|PROCEDURE|SEQUENCE|PACKAGE|FUNCTION]
TO [
USER|ROLE];

GRANT SELECT ON HR.EMPLOYEE TO SCOTT;

ถ้าแค่ table เดียวและ grant ให้คนเดียว DBA ก็คงไม่เหนื่อยและไม่ยากในการดูแล แต่ชีวิตจริงไม่ง่ายอย่างงั้นน่ะซิ !! -_-'
ถ้าเราทำงานองค์กรใหญ่ๆ user เยอะ เอาแค่สมมุติว่า SCOTT อยู่ในแผนก HRM และในแผนกนั้นมีพนักงานอยู่ 50 คน และ Table ที่ต้องการ Privilege มีซัก 100

สิ่งที่ DBA จอมถึกอย่างเราต้องทำก็คือทำ statement 50*100= 5000 Statement โอ้วววว…วว ถึกจิงด้วย แต่วันนี้ ROLE ได้กลายเป็นพระเอกขี่ม้าขาวมาช่วยเรา อิอิ
เราก็จัดการ Grant 100 Table เข้า ให้หมดซะ แล้วก็ Grant Role ให้กับพนักงาน 50 คน อ่ะฮ้า… 100+50 = 150 Statement เหลือที่ DBA ทำแค่นี้ พระเจ้ามันยอดมาก ^^

อ่านแล้วอาจจะยังงง เรามาดูทีละ Step เพื่อความเข้าใจดีกว่าเนอะ

1. CREATE ROLE HR_ROLE;  –> สร้าง role สำหรับพนักงานแผนก hr

2. GRANT  SELECT ON HR.TABLE1 TO HR_ROLE;   –> grant select on table1 – table100 ให้กับ hr_role

   ……

    GRANT SELECT ON HR.TABLE100 TO HR_ROLE;

3. GRANT HR_ROLE TO USER1;  –> grant hr_role ให้กับ user1 – user50

    ……

    GRANT HR_ROLE TO USER50;

เป็นอันจบพิธี ต่อไปถ้ามีการเพิ่มพนักงานใหม่ เราก็เพียงแค่ Grant HR_ROLE ให้กับ user ใหม่เท่านั้นเอง
หรือ ถ้ามีการเพิ่ม Table ใหม่ที่ต้องการให้ user เก่าๆทั้ง 50 คนเห็น ก็เพียง Grant Table ให้กับ HR_ROLE เท่านั้น ทุกคนที่มีสิทธิ์บน HR_ROLE ก็จได้สิทธิทันที

หรือถ้าเราต้องการจะยกเลิกสิทธิ์บาง Table หรือ user เราก็แค่ทำการ REVOKE สิทธิ์นั่นเอง

REVOKE SELECT ON HR.TABLE1 FROM HR_ROLE–> ยกเลิกการ select table1 จาก hr_role

REVOKE HR_ROLE FROM USER1;   –> ตัดสิทธิ์ user1 จาก hr_role

จากตัวอย่างขั้นต้นเพื่อนๆ น่าจะเข้าใจความต่างของ Role and Privilege และข้อดีของการใช้ Role กันไม่มากก็น้อย หวังว่า บทความนี้จะมีประโยชน์บ้างน๊า

 

.. Preview : 12215

Written by

บอกเล่าสิ่งที่พบเจอมาในการทำงาน ประสบการณ์การทำงานด้าน DBA ถ่ายทอดกันด้วยภาษาง่ายๆ บ้านๆ " ทุกอย่างไม่อยาก แต่... แค่ตั้งใจไม่พอ ต้องลงมือทำ และทำ GoodLuck " Fanpage: www.facebook.com/DBAor .. "Oracle Database Consultant " ..

Filed under: Database, DBA, Oracle, Oracle Tips · Tags: , , , , , , , , , , , , ,