Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

deagwon97/rbac-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

81 Commits

Repository files navigation

RBAC api with Go

Go Gin 과 React를 사용하여 만든 RBAC 시스템입니다. 일반적인 RBAC 시스템과 다르게 Permission이 Action과 Object로 분리되어 있습니다. Permission 이름, Action, Object는 개발타임에 결정이 되며, Application은 시작되는 순간에 Permission에 대한 정보를 rbac-go로 전달해야합니다.

Admin Page

React를 활용하여 Admin page를 구성하였습니다. 위 화면은 다음 기능을 수행합니다.
  • Role의 생성, 수정, 삭제
  • Permission - Role 할당, 취소
  • Subject - Role 할당, 취소

단, Permission 생성 수정 삭제는 수행하지 않습니다. 해당 작업은 Service application이 담당합니다. Service application은 서버스를 시작하는 순간, rbac-go에 가장 최신 상태의 permission table을 전송하고, rbac-go는 이 정보를 통해서 service 별 permission table을 최신화 합니다.

Check Permission

Request

행동, 권한이름, 서비스이름, 사용자 아이디를 입력받아 해당 조건의 Objects(행동의 대상들)을 반환합니다. (행동의 대상이 존재하지않아도, 행동 자체 권한이 있을 수 있습니다. 권한의 존재 여부는 is_allowed를 통해서 확인합니다.)

curl -X 'POST' \
 '{host-domain}/rbac/permission/objects' \
 -H 'accept: application/json' \
 -H 'Content-Type: application/json' \
 -d '{
 "action": "삭제",
 "name": "게시판",
 "service_name": "bdg블로그",
 "subject_id": 3
}'

Response

{
 "objects": [
 "공지",
 "비밀",
 "자유"
 ],
 "is_allowed": true
}

Development

본 프로젝트는 vscode의 devcontainer위에서 작업하였습니다. 개발에 필요한 plugin 및 go dependency는 devcontainer.json을 통해서 관리합니다.

1. Run docker compose and Attach the container

2. Run main.go on debugger

3. Create docs

api는 swagger를 통해서 문서화 합니다. create-docs.sh는 swagger static 문서를 생성하며, postman 에서 import할 수 있는 openapi2 형식의 openapi.json 문서를 생성합니다.

$ cd /root/src/
$ sh create-docs.sh

Reference

About

Role Based Access Control with Go

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /