Skip to content

Implement authorization middleware to enable access control across the RPCs #383

@jrschumacher

Description

@jrschumacher

Admins need the ability to specify the authorizations for the RPCs so that they can control who can do certain actions.

To make this possible, we are looking to implement Casbin, an authorization library which can utilize flat files to make authorization decisions. This is chosen to make use of the simple method calls e.Enforce(subject_or_entity, resource, action) and implement an MVP solution.

Service maintainer consideration

Service maintainers should have the ability to register their service with the RPCs and behaviors which the service performs. By requiring service maintainers to describe the behavior, we will be able to expand our authorization service without undue complexity.

Example

func RegisterService() ServiceRegistration {
  return ServiceRegistration {
    //...
    AuthZ: 
  }
}

Acceptance Criteria

  • implement Casbin
  • add authorization support in the yaml file
  • default authorization to no-access
  • enhance service registration

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions