Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Validate ¶
func Validate(config *AuthorizationConfig) error
Validate validates the authorization configuration.
Types ¶
type AuthorizationConfig ¶
type AuthorizationConfig struct { // Admin contains the configuration for the admin role. Admin RoleConfig `json:"admin,omitempty"` // View contains the configuration for the view role. View RoleConfig `json:"view,omitempty"` // ProtectedNamespaces contains the list of namespaces that are protected from being modified by the user. ProtectedNamespaces []ProtectedNamespace `json:"protectedNamespaces,omitempty"` // ClusterAdmin contains the configuration for the cluster admin role. ClusterAdmin ClusterAdmin `json:"clusterAdmin,omitempty"` }
AuthorizationConfig contains the configuration for the authorization controller.
func LoadConfig ¶
func LoadConfig(path string) (*AuthorizationConfig, error)
LoadConfig reads the configuration file from a given path and parses it into an AuthorizationConfig object.
func (*AuthorizationConfig) GetRulesConfig ¶
func (ac *AuthorizationConfig) GetRulesConfig(clusterRoleName string) *RulesConfig
GetRulesConfig returns the rules configuration for the given cluster role name.
func (*AuthorizationConfig) IsAllowedNamespaceName ¶
func (ac *AuthorizationConfig) IsAllowedNamespaceName(name string) bool
IsAllowedNamespaceName returns true if the given namespace name is allowed to be modified by the user.
func (*AuthorizationConfig) SetDefaults ¶
func (ac *AuthorizationConfig) SetDefaults()
SetDefaults sets the default values for the authorization configuration when not set.
type ClusterAdmin ¶
type ClusterAdmin struct { // ActiveDuration is the duration for which the cluster admin role is active. ActiveDuration metav1.Duration `json:"activeDuration,omitempty"` }
ClusterAdmin contains the configuration for the cluster admin role.
type ProtectedNamespace ¶
type ProtectedNamespace struct { // Exact is the exact namespace name. Exact string `json:"exact,omitempty"` // Prefix is the prefix of the namespace name. Prefix string `json:"prefix,omitempty"` // Postfix is the postfix of the namespace name. Postfix string `json:"postfix,omitempty"` // Pattern is the pattern of the namespace name. Pattern string `json:"pattern,omitempty"` // CompiledPattern is the compiled pattern of the namespace name. // Not serialized. CompiledPattern *regexp.Regexp `json:"-"` }
ProtectedNamespace contains the configuration for a protected namespace. If any of the non-empty fields is matched, the namespace is considered protected. The ordering of the matching is as follows: 1. Exact 2. Prefix 3. Postfix 4. Pattern
type RoleConfig ¶
type RoleConfig struct { // AdditionalSubjects contains the additional subjects for the role. // They are added to a MCP alongside the subjects specified by the user. AdditionalSubjects []rbacv1.Subject `json:"additionalSubjects,omitempty"` // NamespaceScoped contains the configuration for the namespace scoped rules of the role. NamespaceScoped RulesConfig `json:"namespaceScoped,omitempty"` // ClusterScoped contains the configuration for the cluster scoped rules of the role. ClusterScoped RulesConfig `json:"clusterScoped,omitempty"` }
RoleConfig contains the configuration for a role.
type RulesConfig ¶
type RulesConfig struct { // Labels are added to the `ClusterRole` that defines the common rules for a user. Labels map[string]string `json:"labels,omitempty"` // ClusterRoleSelectors define label selector which aggregate specific `Cluster` to the common `ClusterRole`. ClusterRoleSelectors []metav1.LabelSelector `json:"clusterRoleSelectors,omitempty"` // Rules specifies the rules for the role. Rules []rbacv1.PolicyRule `json:"rules,omitempty"` }
RulesConfig contains the configuration for the rules of a role.