“在代码的世界里,每一行都是进步的足迹,每一次挑战都是成长的机遇。”

常见的访问控制(RBAC、MAC、DAC、ABAC、IBAC)


1. 离散访问控制(DAC):DAC常用于个人计算设备和某些企业系统中,允许用户对自己的文件和程序设置访问权限。例如,一个用户可以设置他的文档只能由他自己和他的团队成员访问。
2. 强制访问控制(MAC):MAC常用于需要高级别安全保护的系统,如军事系统或政府机构的系统。在这些系统中,访问权限由系统级的策略决定,用户不能更改。
3. 基于角色的访问控制(RBAC):RBAC常用于企业和组织的系统中,用户根据其角色获得访问权限。例如,一个企业可能有管理员、经理和员工等角色,每个角色有不同的访问权限。
4. 基于属性的访问控制(ABAC):ABAC常用于需要细粒度访问控制的系统中。例如,一个健康系统可能允许只有医生可以访问病人的医疗记录,而且只能在工作时间访问。
5. 基于规则的访问控制(RBAC):RBAC常用于需要根据特定规则动态决定访问权限的系统中。例如,一个企业可能设置规则,只有在工作时间,员工才能访问公司的内部系统。
6. 基于身份的访问控制(IBAC):IBAC常用于简单的系统中,用户根据其身份获得访问权限。例如,一个网站可能允许注册用户访问某些页面,而不允许游客访问。
离散访问控制(DAC):
CREATE TABLE Users (
UserID INT PRIMARY KEY,
UserName VARCHAR(100),
Password VARCHAR(100)
-- 其他用户信息字段
);

CREATE TABLE Objects (
ObjectID INT PRIMARY KEY,
OwnerID INT,
-- 其他对象信息字段
FOREIGN KEY (OwnerID) REFERENCES Users(UserID)
);

CREATE TABLE ObjectPermissions (
ObjectID INT,
UserID INT,
Permission VARCHAR(50),
PRIMARY KEY (ObjectID, UserID),
FOREIGN KEY (ObjectID) REFERENCES Objects(ObjectID),
FOREIGN KEY (UserID) REFERENCES Users(UserID)
);
强制访问控制(MAC):
CREATE TABLE Resources (
ResourceID INT PRIMARY KEY,
-- 其他资源信息字段
);

CREATE TABLE ResourcePermissions (
ResourceID INT,
UserID INT,
Permission VARCHAR(50),
PRIMARY KEY (ResourceID, UserID),
FOREIGN KEY (ResourceID) REFERENCES Resources(ResourceID),
FOREIGN KEY (UserID) REFERENCES Users(UserID)
);
基于角色的访问控制(RBAC):
CREATE TABLE Roles (
RoleID INT PRIMARY KEY,
RoleName VARCHAR(100),
-- 其他角色信息字段
);

CREATE TABLE UserRoles (
UserID INT,
RoleID INT,
PRIMARY KEY (UserID, RoleID),
FOREIGN KEY (UserID) REFERENCES Users(UserID),
FOREIGN KEY (RoleID) REFERENCES Roles(RoleID)
);

CREATE TABLE Permissions (
PermissionID INT PRIMARY KEY,
PermissionName VARCHAR(100),
-- 其他权限信息字段
);

CREATE TABLE RolePermissions (
RoleID INT,
PermissionID INT,
PRIMARY KEY (RoleID, PermissionID),
FOREIGN KEY (RoleID) REFERENCES Roles(RoleID),
FOREIGN KEY (PermissionID) REFERENCES Permissions(PermissionID)
);
基于属性的访问控制(ABAC):

CREATE TABLE Attributes (
AttributeID INT PRIMARY KEY,
AttributeName VARCHAR(100),
-- 其他属性信息字段
);

CREATE TABLE UserAttributes (
UserID INT,
AttributeID INT,
PRIMARY KEY (UserID, AttributeID),
FOREIGN KEY (UserID) REFERENCES Users(UserID),
FOREIGN KEY (AttributeID) REFERENCES Attributes(AttributeID)
);

CREATE TABLE AttributePermissions (
AttributeID INT,
PermissionID INT,
PRIMARY KEY (AttributeID, PermissionID),
FOREIGN KEY (AttributeID) REFERENCES Attributes(AttributeID),
FOREIGN KEY (PermissionID) REFERENCES Permissions(PermissionID)
);
基于规则的访问控制(RBAC):
CREATE TABLE Rules (
RuleID INT PRIMARY KEY,
RuleExpression VARCHAR(500),
-- 其他规则信息字段
);

CREATE TABLE RulePermissions (
RuleID INT,
PermissionID INT,
PRIMARY KEY (RuleID, PermissionID),
FOREIGN KEY (RuleID) REFERENCES Rules(RuleID),
FOREIGN KEY (PermissionID) REFERENCES Permissions(PermissionID)
);
基于身份的访问控制(IBAC)
CREATE TABLE IdentityPermissions (
UserID INT,
PermissionID INT,
PRIMARY KEY (UserID, PermissionID),
FOREIGN KEY (UserID) REFERENCES Users(UserID),
FOREIGN KEY (PermissionID) REFERENCES Permissions(PermissionID)
);

Write your comment Here