k8s.io/apiserver@v0.31.1/pkg/authorization/authorizer/rule.go (about)

     1  /*
     2  Copyright 2017 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package authorizer
    18  
    19  type ResourceRuleInfo interface {
    20  	// GetVerbs returns a list of kubernetes resource API verbs.
    21  	GetVerbs() []string
    22  	// GetAPIGroups return the names of the APIGroup that contains the resources.
    23  	GetAPIGroups() []string
    24  	// GetResources return a list of resources the rule applies to.
    25  	GetResources() []string
    26  	// GetResourceNames return a white list of names that the rule applies to.
    27  	GetResourceNames() []string
    28  }
    29  
    30  // DefaultResourceRuleInfo holds information that describes a rule for the resource
    31  type DefaultResourceRuleInfo struct {
    32  	Verbs         []string
    33  	APIGroups     []string
    34  	Resources     []string
    35  	ResourceNames []string
    36  }
    37  
    38  func (i *DefaultResourceRuleInfo) GetVerbs() []string {
    39  	return i.Verbs
    40  }
    41  
    42  func (i *DefaultResourceRuleInfo) GetAPIGroups() []string {
    43  	return i.APIGroups
    44  }
    45  
    46  func (i *DefaultResourceRuleInfo) GetResources() []string {
    47  	return i.Resources
    48  }
    49  
    50  func (i *DefaultResourceRuleInfo) GetResourceNames() []string {
    51  	return i.ResourceNames
    52  }
    53  
    54  type NonResourceRuleInfo interface {
    55  	// GetVerbs returns a list of kubernetes resource API verbs.
    56  	GetVerbs() []string
    57  	// GetNonResourceURLs return a set of partial urls that a user should have access to.
    58  	GetNonResourceURLs() []string
    59  }
    60  
    61  // DefaultNonResourceRuleInfo holds information that describes a rule for the non-resource
    62  type DefaultNonResourceRuleInfo struct {
    63  	Verbs           []string
    64  	NonResourceURLs []string
    65  }
    66  
    67  func (i *DefaultNonResourceRuleInfo) GetVerbs() []string {
    68  	return i.Verbs
    69  }
    70  
    71  func (i *DefaultNonResourceRuleInfo) GetNonResourceURLs() []string {
    72  	return i.NonResourceURLs
    73  }