Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update authorization model and valid relations #80

Merged
merged 1 commit into from
Jan 28, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 32 additions & 20 deletions reference/authorisation_model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,44 +18,48 @@ JAAS authorisation model reshapes the `Juju permission model <https://juju.is/do
.. code:: text

model
schema 1.1
schema 1.1

type applicationoffer
type user

type role
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
define assignee: [user, user:*, group#member]

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

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

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

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

type model
type cloud
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
define administrator: [user, user:*, group#member, role#assignee] or administrator from controller
define can_addmodel: [user, user:*, group#member, role#assignee] or administrator

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

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.

Expand Down Expand Up @@ -127,6 +131,14 @@ 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.
============= =========

Role
^^^^
============= =========
Relations Abilities
============= =========
assignee Assigned to a specific role within the role.
============= =========

Service Account
^^^^^^^^^^^^^^^
============= =========
Expand Down