JAAS: Authorisation Model

JAAS uses a Relationship-Based Access Control (ReBAC) scheme for authorisation purposes. This document illustrates the underlying authorisation model used by JAAS.

Hint

For an explanation on Relationship-Based Access Control (ReBAC) check out this explanation topic.

Hint

As a reference on manipulating authorisation data, check out this reference topic.

The model

JAAS authorisation model reshapes the Juju permission model into a ReBAC paradigm. The OpenFGA authorisation model used by JAAS is defined as:

model
    schema 1.1

type applicationoffer
relations
    define administrator: [user, user:*, group#member] or administrator from model
    define consumer: [user, user:*, group#member] or administrator
    define model: [model]
    define reader: [user, user:*, group#member] or consumer


type cloud
relations
    define administrator: [user, user:*, group#member] or administrator from controller
    define can_addmodel: [user, user:*, group#member] or administrator
    define controller: [controller]

type controller
relations
    define administrator: [user, user:*, group#member] or administrator from controller
    define audit_log_viewer: [user, user:*, group#member] or administrator
    define controller: [controller]

type group
relations
    define member: [user, user:*, group#member]

type model
relations
    define administrator: [user, user:*, group#member] or administrator from controller
    define controller: [controller]
    define reader: [user, user:*, group#member] or writer
    define writer: [user, user:*, group#member] or administrator

type serviceaccount
relations
    define administrator: [user, user:*, group#member]

type user

Here is the directed graph illustration of the above model. In this figure, purple and green nodes represent entity types and relations, respectively. The dashed lines show the internal indirect relationships among relations defined on the entity type.

../../_images/authorisation_model.png

Valid Relations

Below we break down, by resource type, the relations from the authorisation model. By describing what level of access each relation provides so that you can determine how much access to provide to users and groups.

Below, only permissions which are assignable to users or groups are described. Relations like controller are used internally to indicate that, for example, a controller admin is also an admin of any models.

You can use the jimmctl CLI to manipulate relations as mentioned above or via the Juju Terraform Provider using the JAAS specific resources.

Hint

Treat service accounts as users when relating them to resources. Only when assigning permissions over a service account are they treated as a different entity.

Currently the permission levels are analogous (with slightly different wording) to those built into Juju. They are included here as JAAS intends to build finer grained access levels in the future. View the Juju permission docs.

Application Offer

Relations

Abilities

administrator

You can do anything that it is possible to do at the level of an offer.

consumer

Relate an application to the offer.

reader

View offers during a search with juju find-offers.

Cloud

Relations

Abilities

administrator

You can do anything that it is possible to do at the level of a cloud.

can_addmodel

Add a model. Grant another user model-level permissions.

Controller

Relations

Abilities

administrator

You can do anything that it is possible to do at the level of a controller. This grants permissions to all resources that inherit from controller access.

audit_log_viewer

Allows you to read audit logs.

Group

Relations

Abilities

member

Assigns a user/group as a member of the group.

Model

Relations

Abilities

reader

View the content of a model without changing it. Can use any of the read commands.

writer

Deploy and manage applications on the model.

administrator

You can do anything that it is possible to do at the level of a model. This grants permissions to all resources that inherit from model access.

Service Account

Relations

Abilities

administrator

You can do anything that it is possible to do at the level of a service account. Used to manage the credentials of a service account.