Zanzana: handle service accounts (#97123)
* add service account to the schema * sync managed permissions for service accounts * sync SA basic roles * sync SA roles * Fix endless loop in reconciler while read openfga
This commit is contained in:
@@ -10,12 +10,13 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
TypeUser string = "user"
|
||||
TypeTeam string = "team"
|
||||
TypeRole string = "role"
|
||||
TypeFolder string = "folder"
|
||||
TypeResource string = "resource"
|
||||
TypeNamespace string = "namespace"
|
||||
TypeUser string = "user"
|
||||
TypeServiceAccount string = "service-account"
|
||||
TypeTeam string = "team"
|
||||
TypeRole string = "role"
|
||||
TypeFolder string = "folder"
|
||||
TypeResource string = "resource"
|
||||
TypeNamespace string = "namespace"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -2,28 +2,30 @@ module core
|
||||
|
||||
type namespace
|
||||
relations
|
||||
define view: [user, team#member, role#assignee] or edit
|
||||
define edit: [user, team#member, role#assignee] or admin
|
||||
define admin: [user, team#member, role#assignee]
|
||||
define view: [user, service-account, team#member, role#assignee] or edit
|
||||
define edit: [user, service-account, team#member, role#assignee] or admin
|
||||
define admin: [user, service-account, team#member, role#assignee]
|
||||
|
||||
define read: [user, team#member, role#assignee] or view
|
||||
define create: [user, team#member, role#assignee] or edit
|
||||
define write: [user, team#member, role#assignee] or edit
|
||||
define delete: [user, team#member, role#assignee] or edit
|
||||
define permissions_read: [user, team#member, role#assignee] or admin
|
||||
define permissions_write: [user, team#member, role#assignee] or admin
|
||||
define read: [user, service-account, team#member, role#assignee] or view
|
||||
define create: [user, service-account, team#member, role#assignee] or edit
|
||||
define write: [user, service-account, team#member, role#assignee] or edit
|
||||
define delete: [user, service-account, team#member, role#assignee] or edit
|
||||
define permissions_read: [user, service-account, team#member, role#assignee] or admin
|
||||
define permissions_write: [user, service-account, team#member, role#assignee] or admin
|
||||
|
||||
type user
|
||||
|
||||
type service-account
|
||||
|
||||
type role
|
||||
relations
|
||||
define assignee: [user, team#member, role#assignee]
|
||||
define assignee: [user, service-account, team#member, role#assignee]
|
||||
|
||||
type team
|
||||
relations
|
||||
# Action sets
|
||||
define admin: [user]
|
||||
define member: [user] or admin
|
||||
define admin: [user, service-account]
|
||||
define member: [user, service-account] or admin
|
||||
|
||||
define read: [role#assignee] or member
|
||||
define write: [role#assignee] or admin
|
||||
|
||||
@@ -5,13 +5,13 @@ type folder
|
||||
define parent: [folder]
|
||||
|
||||
# Action sets
|
||||
define view: [user, team#member, role#assignee] or edit or view from parent
|
||||
define edit: [user, team#member, role#assignee] or admin or edit from parent
|
||||
define admin: [user, team#member, role#assignee] or admin from parent
|
||||
define view: [user, service-account, team#member, role#assignee] or edit or view from parent
|
||||
define edit: [user, service-account, team#member, role#assignee] or admin or edit from parent
|
||||
define admin: [user, service-account, team#member, role#assignee] or admin from parent
|
||||
|
||||
define read: [user, team#member, role#assignee] or view or read from parent
|
||||
define create: [user, team#member, role#assignee] or edit or create from parent
|
||||
define write: [user, team#member, role#assignee] or edit or write from parent
|
||||
define delete: [user, team#member, role#assignee] or edit or delete from parent
|
||||
define permissions_read: [user, team#member, role#assignee] or admin or permissions_read from parent
|
||||
define permissions_write: [user, team#member, role#assignee] or admin or permissions_write from parent
|
||||
define read: [user, service-account, team#member, role#assignee] or view or read from parent
|
||||
define create: [user, service-account, team#member, role#assignee] or edit or create from parent
|
||||
define write: [user, service-account, team#member, role#assignee] or edit or write from parent
|
||||
define delete: [user, service-account, team#member, role#assignee] or edit or delete from parent
|
||||
define permissions_read: [user, service-account, team#member, role#assignee] or admin or permissions_read from parent
|
||||
define permissions_write: [user, service-account, team#member, role#assignee] or admin or permissions_write from parent
|
||||
|
||||
@@ -2,28 +2,28 @@ module resource
|
||||
|
||||
extend type folder
|
||||
relations
|
||||
define resource_view: [user, team#member, role#assignee] or resource_edit or resource_view from parent
|
||||
define resource_edit: [user, team#member, role#assignee] or resource_admin or resource_edit from parent
|
||||
define resource_admin: [user, team#member, role#assignee] or resource_admin from parent
|
||||
define resource_view: [user, service-account, team#member, role#assignee] or resource_edit or resource_view from parent
|
||||
define resource_edit: [user, service-account, team#member, role#assignee] or resource_admin or resource_edit from parent
|
||||
define resource_admin: [user, service-account, team#member, role#assignee] or resource_admin from parent
|
||||
|
||||
define resource_read: [user with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_view or resource_read from parent
|
||||
define resource_create: [user with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_edit or resource_create from parent
|
||||
define resource_write: [user with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_edit or resource_write from parent
|
||||
define resource_delete: [user with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_edit or resource_delete from parent
|
||||
define resource_permissions_read: [user with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_admin or resource_permissions_read from parent
|
||||
define resource_permissions_write: [user with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_admin or resource_permissions_write from parent
|
||||
define resource_read: [user with folder_group_filter, service-account with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_view or resource_read from parent
|
||||
define resource_create: [user with folder_group_filter, service-account with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_edit or resource_create from parent
|
||||
define resource_write: [user with folder_group_filter, service-account with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_edit or resource_write from parent
|
||||
define resource_delete: [user with folder_group_filter, service-account with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_edit or resource_delete from parent
|
||||
define resource_permissions_read: [user with folder_group_filter, service-account with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_admin or resource_permissions_read from parent
|
||||
define resource_permissions_write: [user with folder_group_filter, service-account with folder_group_filter, team#member with folder_group_filter, role#assignee with folder_group_filter] or resource_admin or resource_permissions_write from parent
|
||||
|
||||
type resource
|
||||
relations
|
||||
define view: [user with group_filter, team#member with group_filter, role#assignee with group_filter] or edit
|
||||
define edit: [user with group_filter, team#member with group_filter, role#assignee with group_filter] or admin
|
||||
define admin: [user with group_filter, team#member with group_filter, role#assignee with group_filter]
|
||||
define view: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter] or edit
|
||||
define edit: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter] or admin
|
||||
define admin: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter]
|
||||
|
||||
define read: [user with group_filter, team#member with group_filter, role#assignee with group_filter] or view
|
||||
define write: [user with group_filter, team#member with group_filter, role#assignee with group_filter] or edit
|
||||
define delete: [user with group_filter, team#member with group_filter, role#assignee with group_filter] or edit
|
||||
define permissions_read: [user with group_filter, team#member with group_filter, role#assignee with group_filter] or admin
|
||||
define permissions_write: [user with group_filter, team#member with group_filter, role#assignee with group_filter] or admin
|
||||
define read: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter] or view
|
||||
define write: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter] or edit
|
||||
define delete: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter] or edit
|
||||
define permissions_read: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter] or admin
|
||||
define permissions_write: [user with group_filter, service-account with group_filter, team#member with group_filter, role#assignee with group_filter] or admin
|
||||
|
||||
condition group_filter(requested_group: string, group_resource: string) {
|
||||
requested_group == group_resource
|
||||
|
||||
@@ -11,12 +11,13 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
TypeUser = common.TypeUser
|
||||
TypeTeam = common.TypeTeam
|
||||
TypeRole = common.TypeRole
|
||||
TypeFolder = common.TypeFolder
|
||||
TypeResource = common.TypeResource
|
||||
TypeNamespace = common.TypeNamespace
|
||||
TypeUser = common.TypeUser
|
||||
TypeServiceAccount = common.TypeServiceAccount
|
||||
TypeTeam = common.TypeTeam
|
||||
TypeRole = common.TypeRole
|
||||
TypeFolder = common.TypeFolder
|
||||
TypeResource = common.TypeResource
|
||||
TypeNamespace = common.TypeNamespace
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
Reference in New Issue
Block a user