Hướng dẫn user account management, roles, permissions, authentication php and mysql github - quản lý tài khoản người dùng, vai trò, quyền, php xác thực và github mysql

Thực hiện kiểm soát truy cập dựa trên vai trò trong PHP

Hướng dẫn user account management, roles, permissions, authentication php and mysql github - quản lý tài khoản người dùng, vai trò, quyền, php xác thực và github mysql

Tổng quan

Triển khai dựa trên web nguồn mở của kiểm soát truy cập dựa trên vai trò (RBAC) trong PHP. Việc triển khai là linh hoạt để tích hợp vào bất kỳ dự án PHP hiện có nào.Role Based Access Control (RBAC) in PHP. The implementation is flexible to integrate into any existing PHP project.

Đặc điểm và chính sách [1]

  • Trong khung RBAC, người dùng là một người, vai trò là tập hợp các chức năng công việc và hoạt động thể hiện một chế độ truy cập cụ thể vào một tập hợp một hoặc nhiều đối tượng RBAC được bảo vệ;user is a person, a role is a collection of job functions, and an operation represents a particular mode of access to a set of one or more protected RBAC objects;

  • Loại hoạt động và các đối tượng mà các điều khiển RBAC phụ thuộc vào loại hệ thống mà nó sẽ được thực hiện, ví dụ: Trong một hệ thống quản lý giao dịch, các hoạt động sẽ ở dạng và trưng bày tất cả các thuộc tính của một giao dịch;

  • Vai trò có thể có trách nhiệm và đặc quyền chồng chéo, tức là người dùng thuộc các vai trò khác nhau có thể cần thực hiện các hoạt động chung. Do đó, RBAC hỗ trợ khái niệm phân cấp vai trò;

  • Một phân cấp vai trò xác định các vai trò có các thuộc tính duy nhất và có thể chứa các vai trò khác, tức là một vai trò có thể ngầm bao gồm các hoạt động, ràng buộc và các đối tượng được liên kết với vai trò khác;role hierarchy defines roles that have unique attributes and that may contain other roles, i.e. that one role may implicitly include the operations, constraints, and objects that are associated with another role;

  • ủy quyền vai trò (liên kết của người dùng có vai trò) có thể phải tuân theo: (association of user with a role) can be subject to the following:

    • Người dùng không thể được ban cho nhiều đặc quyền hơn là cần thiết để thực hiện công việc của mình (nguyên tắc ít đặc quyền nhất);(principle of least privilege);
    • Vai trò mà người dùng đang đạt được tư cách thành viên không loại trừ lẫn nhau với vai trò khác mà người dùng đã sở hữu tư cách thành viên (phân tách nhiệm vụ tĩnh); Không có giá trị(static separation of duty); &
    • Giới hạn số tồn tại đối với tư cách thành viên vai trò không thể vượt quá (tài sản cardinality);(cardinality property);
  • Kích hoạt vai trò liên quan đến việc ánh xạ của người dùng thành một hoặc có thể nhiều vai trò. Người dùng bắt đầu một phiên trong đó người dùng được liên kết với một tập hợp các vai trò mà người dùng đó có tư cách thành viên. Một vai trò cụ thể cho người dùng có thể được kích hoạt nếu: involves the mapping of a user to one or possibly many roles. A user initiates a session during which the user is associated with a subset of roles for which that user has membership. A particular role for a user can be activated if:

    • Người dùng được ủy quyền cho vai trò được đề xuất để kích hoạt;
    • Việc kích hoạt vai trò đề xuất không loại trừ lẫn nhau với bất kỳ vai trò hoạt động nào khác của người dùng;
    • Hoạt động đề xuất được ủy quyền cho vai trò đang được đề xuất để kích hoạt; Không có giá trị
    • Hoạt động đang được đề xuất là nhất quán trong một chuỗi hoạt động bắt buộc;
  • Việc thực hiện vai trò của một hoạt động chỉ có thể diễn ra nếu đối tượng hoạt động trong vai trò tích cực, tức là một khi xác định rằng vai trò là một phần của vai trò được ủy quyền cho chủ đề; of an operation can take place only if the subject is acting within an active role, i.e. once it is determined that a role is part of the authorised role set for the subject;

  • Sự phân tách động của nhiệm vụ có thể được cung cấp với RBAC miễn là quy tắc sau được thỏa mãn: một chủ thể chỉ có thể hoạt động trong vai trò mới nếu vai trò đề xuất không loại trừ lẫn nhau với bất kỳ vai trò nào mà chủ thể hiện đang hoạt động; can be provided with RBAC as long as the following rule is satisfied: a subject can become active in a new role only if the proposed role is not mutually exclusive with any of the roles in which the subject is currently active;

  • Ủy quyền hoạt động chỉ có thể được cấp cho một đối tượng nếu hoạt động được ủy quyền cho các đối tượng được đề xuất vai trò hoạt động; can only be granted to a subject if the operation is authorised for the subjects proposed active role;

  • Việc phân tách hoạt động của nhiệm vụ đòi hỏi phải có tất cả các hoạt động liên quan đến một chức năng kinh doanh cụ thể, không người dùng nào có thể được phép thực hiện tất cả các hoạt động này. Nói cách khác, vai trò có thể được liên kết với hoạt động của chức năng kinh doanh nếu vai trò là vai trò được ủy quyền cho chủ đề và vai trò chưa được gán trước đây cho tất cả các hoạt động khác; requires that for all the operations associated with a particular business function, no single user can be allowed to perform all of these operations. In other words, a role can be associated with an operation of business function only if the role is an authorised role for the subject and the role had not been assigned previously to all of the other operations;

  • Ủy quyền truy cập đối tượng yêu cầu quyền truy cập chủ thể vào các đối tượng RBAC phải được kiểm soát. Điều này đảm bảo thực thi các chính sách doanh nghiệp cho các đối tượng RBAC. Một chủ đề chỉ có thể truy cập một đối tượng nếu: requires subject access to RBAC objects to be controlled. This ensures enforcement of enterprise policies to RBAC objects. A subject can access an object only if:

    • Vai trò là một phần của các đối tượng tập hợp vai trò hoạt động hiện tại;active role set;
    • Vai trò được phép thực hiện hoạt động; Không có giá trị
    • Các hoạt động để truy cập đối tượng được ủy quyền.

Thực hiện

Các bảng cơ sở dữ liệu cơ sở dữ liệu được tạo để lưu trữ thông tin về vai trò và quyền Vai trò nào được gán cho người dùng. Four database tables are created to store role and permission information: the roles table stores a role ID and role name, the permissions table stores a permission ID and description, the role_perm table associates which permissions belong to which roles, and the user_role table associates which roles are assigned to which users.

Các lớp mô hình Role lớp sẽ trả về một đối tượng vai trò được điền với từng vai trò tương ứng. PrivilegedUser Lớp mở rộng lớp người dùng hiện có (tái sử dụng logic mã hiện tại để quản lý người dùng) và sau đó thêm một số phương thức bổ sung đặc biệt hoạt động với các đặc quyền. Lớp Permission là để thêm và xóa quyền. Database Lớp để kết nối với cơ sở dữ liệu. Role class is to return a role object that is populated with each roles corresponding permissions. PrivilegedUser class extends existing User class (reuse existing code logic for managing users) and then add some additional methods specifically working with privileges. Permission class is to add and delete permissions. Database class to connect with database.

Mật khẩu mật khẩu được lưu trữ bằng thuật toán SHA512 128 bit. Thuật toán được coi là tính toán đắt tiền đối với mật khẩu vũ lực (trong trường hợp cơ sở dữ liệu của bạn bị xâm phạm). Passwords are stored using 128-bit SHA512 algorithm. The algorithm is considered computationally expensive to brute-force password (in the event your database is compromised).

Cách chạy dự án

1. Tạo các bảng cơ sở dữ liệu trống bằng cách sử dụng db/schema.sql sau đó chèn các giá trị trong các bảng roles, permissions, role_permuser_role. Ngoài ra, các bảng cơ sở dữ liệu làm việc mẫu cũng có sẵn roles4. Create empty database tables using db/schema.sql then insert values in roles, permissions, role_perm and user_role tables. Alternatively, sample working database tables are also available roles4.

2. Chạy máy chủ web. Cách sử dụng: roles5 Ví dụ: roles6 Run web server.
Usage: roles5
Example: roles6

3. Trình duyệt truy cập http://127.0.0.1:82. Browser visit to http://127.0.0.1:82.


[1]: A. Rhodes và W. Caelli, "Một bài báo đánh giá - Kiểm soát truy cập dựa trên vai trò", trang 3-5.

Giấy phép

   
   Copyright (c) 2017 Hamza Rashid
   
   Permission is hereby granted, free of charge, to any person obtaining a copy of
   this software and associated documentation files (the "Software"), to deal in
   the Software without restriction, including without limitation the rights to
   use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
   the Software, and to permit persons to whom the Software is furnished to do so,
   subject to the following conditions:
   
   The above copyright notice and this permission notice shall be included in all
   copies or substantial portions of the Software.
   
   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
   FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
   COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
   IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Vai trò nào có sẵn với vai trò

Một tổ chức gán vai trò kiểm soát truy cập dựa trên vai trò cho mọi nhân viên; Vai trò xác định quyền nào mà hệ thống cấp cho người dùng. Ví dụ: bạn có thể chỉ định xem người dùng là quản trị viên, chuyên gia hoặc người dùng cuối và giới hạn quyền truy cập vào các tài nguyên hoặc nhiệm vụ cụ thể.designate whether a user is an administrator, a specialist, or an end-user, and limit access to specific resources or tasks.

Vai trò là gì

Kiểm soát truy cập dựa trên vai trò là gì?Kiểm soát truy cập dựa trên vai trò (RBAC) là một phương pháp hạn chế truy cập mạng dựa trên vai trò của người dùng cá nhân trong một doanh nghiệp.RBAC đảm bảo nhân viên chỉ truy cập thông tin họ cần để thực hiện công việc của mình và ngăn họ truy cập thông tin không liên quan đến họ.a method of restricting network access based on the roles of individual users within an enterprise. RBAC ensures employees access only information they need to do their jobs and prevents them from accessing information that doesn't pertain to them.

RBAC và IAM là gì?

Kiểm soát truy cập dựa trên vai trò Azure (Azure RBAC) là hệ thống ủy quyền bạn sử dụng để quản lý quyền truy cập vào tài nguyên Azure.Kiểm soát truy cập (IAM) là trang mà bạn thường sử dụng để gán vai trò để cấp quyền truy cập vào tài nguyên Azure.

Hai loại vai trò là gì

Kỹ thuật - được gán cho người dùng thực hiện các tác vụ kỹ thuật. Administrative – access for users that perform administrative tasks.