Giter VIP home page Giter VIP logo

gorbac's Introduction

gorbac

RBAC Authorization library for Go. It provides developers with NIST Level 2 Standard Role Based Access Control and more.

gorbac is ported from http://phprbac.net. Currently there is only support for MySQL.

The API documentation can ben found at: https://godoc.org/github.com/jgrusewski/gorbac

Why RBAC?

Role Based Access Control is the standard means of authorization (access control). The other approach is ACLs, where a table defines who can do what. ACLs are only good for very small systems, because of the following reasons:

Big systems have lots of permits

  • alt tag People move in organizations, and all their permits should be changed when they do
  • alt tag Maintenance (adding, changing, removing) of 100,000 permits requires a handful of staff
  • alt tag Maintenance of the permits assigned to each user, requires more staff than above!
  • alt tag One wrong user-permit and you have a serious breach in your security, so no room for error

RBAC separates the concepts of Users, Roles and Permissions. Roles are defined in a system, then Permissions defined separately. Then the security administrator decides what role should be permitted to do what action, by assigning that role to the permission. Finally users are assigned to roles. The system does the rest.

  • alt tag Still lots of permits in the system are the problem
  • alt tag People move, and only their roles need to be changed
  • alt tag Maintenance of permits is still an issue
  • alt tag Maintenance of permits assigned to each role is easy, it doesn't change much logically.
  • alt tag Role-Permission assignments can be double checked so that no wrong permit is given to any role

That was NIST Level 1 standard RBAC above, and it still had issues. NIST Level 2 RBAC requires Roles and/or Permissions to be hierarchical, so that management of them can easily be handled in hierarchies. The figure below demonstrates a system in hierarchical RBAC:

alt tag (source: http://phprbac.net)

gorbac's People

Contributors

jgrusewski avatar

Stargazers

Arjun Srivastava avatar vulcangz avatar Kyo Nguyen avatar H. ZHOU avatar  avatar  avatar Tim Rose avatar Atallah khedrane avatar

Watchers

 avatar James Cloos avatar Kyo Nguyen avatar

Forkers

yeung908

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.