ก่อนอื่นรูปแบบความปลอดภัยประเภทใดที่คุณวางแผนที่จะใช้ การควบคุมการเข้าถึงตามบทบาท (RBAC) หรือการควบคุมการเข้าถึงตามอำเภอใจ (DAC)
RBAC ในรูปแบบการควบคุมการเข้าถึงตามบทบาท (RBAC) การเข้าถึงทรัพยากรนั้นขึ้นอยู่กับบทบาทที่กำหนดให้กับผู้ใช้ ในรุ่นนี้ผู้ดูแลระบบกำหนดผู้ใช้ให้กับบทบาทที่มีสิทธิ์และสิทธิ์ที่กำหนดไว้ล่วงหน้า เนื่องจากการเชื่อมโยงของผู้ใช้กับบทบาทผู้ใช้สามารถเข้าถึงทรัพยากรบางอย่างและทำงานที่เฉพาะเจาะจง RBAC ยังเป็นที่รู้จักกันในนามการควบคุมการเข้าถึงโดยไม่ต้องมีการตัดสินใจ บทบาทที่กำหนดให้กับผู้ใช้จะได้รับการดูแลจากส่วนกลาง
DAC ในโมเดล Discretionary Access Control (DAC) การเข้าถึงทรัพยากรนั้นขึ้นอยู่กับตัวตนของผู้ใช้ ผู้ใช้จะได้รับอนุญาตให้ใช้ทรัพยากรโดยการวางไว้ในรายการควบคุมการเข้าถึง (ACL) ที่เกี่ยวข้องกับทรัพยากร รายการใน ACL ของทรัพยากรรู้จักกันในชื่อ Access Control Entry (ACE) เมื่อผู้ใช้ (หรือกลุ่ม) เป็นเจ้าของวัตถุในโมเดล DAC ผู้ใช้สามารถให้สิทธิ์แก่ผู้ใช้และกลุ่มอื่น โมเดล DAC ขึ้นอยู่กับความเป็นเจ้าของทรัพยากร
ดูแหล่งที่มา
1) ใน RBAC: คุณต้องใช้ตาราง ElementType เพื่อกำหนดสิทธิ์ให้กับบทบาท (ผู้ใช้ถูกกำหนดให้กับบทบาท) RBAC กำหนด: "บทบาท / ผู้ใช้นี้ทำอะไรได้บ้าง" ผู้ดูแลระบบกำหนดสิทธิ์สำหรับบทบาทและการอนุญาตให้กับบทบาทกำหนดผู้ใช้ให้กับบทบาทเพื่อเข้าถึงทรัพยากร 2) ใน DAC: ผู้ใช้และบทบาทมีสิทธิ์ในองค์ประกอบผ่านรายการควบคุมการเข้าถึง (ความเป็นเจ้าของ) DAC กำหนด: "ผู้ที่สามารถเข้าถึงข้อมูลของฉัน" ผู้ใช้ (เจ้าของ) ให้สิทธิ์แก่ทรัพยากรที่เป็นเจ้าของ
วิธีใดที่ฉันแนะนำตัวแบบข้อมูลนี้:
CREATE TABLE ElementType
(
Id (PK)
Name
...
)
CREATE TABLE ElementBase
(
Id (PK)
Type (FK to ElementType)
...
)
(ความสัมพันธ์แบบหนึ่งต่อหนึ่ง)
CREATE TABLE Element_A
(
Id (PK, FK to ElementBase)
...
)
CREATE TABLE Element_B
(
Id (PK, FK to ElementBase)
...
)
1) RBAC (หลายต่อหลายความสัมพันธ์)
CREATE TABLE ElementType_To_Role_Rights
(
RightId (PK)
RoleId (FK to Role)
ElementTypeId (FK to ElementType)
...
)
2) DAC (หลายต่อหลายความสัมพันธ์)
CREATE TABLE ElementBase_To_Actor_Rights
(
RightId (PK)
ElementBaseId (FK to ElementBase)
ActorId (FK to Actor)
...
)
CREATE TABLE Actor
(
Id (PK)
Name
)
CREATE TABLE User
(
Id (PK, FK to Actor)
Password
...
)
CREATE TABLE Role
(
Id (PK, FK to Actor)
...
)