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.