• Kubernetes Submit Queue's avatar
    Merge pull request #29930 from ericchiang/rbac-validation-dont-mix-non-resource-urls-and-resources · 16454277
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue
    
    rbac validation: rules can't combine non-resource URLs and regular resources
    
    This PR updates the validation used for RBAC to prevent rules from mixing non-resource URLs and regular resources.
    
    For example the following is no longer valid
    
    ```yml
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1alpha1
    metadata:
      name: admins
    rules:
      - apiGroups: ["*"]
        resources: ["*"]
        verbs: ["*"]
        nonResourceURLs: ["*"]
    ```
    
    And must be rewritten as so.
    
    ```yml
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1alpha1
    metadata:
      name: admins
    rules:
      - apiGroups: ["*"]
        resources: ["*"]
        verbs: ["*"]
      - nonResourceURLs: ["*"]
        verbs: ["*"]
    ``` 
    
    It also:
    * Mandates non-zero length arrays for required resources.
    * Mandates non-resource URLs only be used for ClusterRoles (not namespaced Roles).
    * Updates the swagger validation so `verbs` are the only required field in a rule. Further validation is done by the server.
    
    Also, do we need to bump the API version?
    
    Discussed by @erictune and @liggitt  in #28304
    
    Updates kubernetes/features#2
    
    cc @kubernetes/sig-auth 
    
    Edit:
    * Need to update the RBAC docs if this change goes in.
    16454277
Name
Last commit
Last update
..
admission Loading commit data...
api Loading commit data...
apimachinery Loading commit data...
apis Loading commit data...
apiserver Loading commit data...
auth Loading commit data...
capabilities Loading commit data...
client Loading commit data...
cloudprovider Loading commit data...
controller Loading commit data...
conversion Loading commit data...
credentialprovider Loading commit data...
dns Loading commit data...
fieldpath Loading commit data...
fields Loading commit data...
genericapiserver Loading commit data...
healthz Loading commit data...
httplog Loading commit data...
hyperkube Loading commit data...
kubectl Loading commit data...
kubelet Loading commit data...
kubemark Loading commit data...
labels Loading commit data...
master Loading commit data...
metrics Loading commit data...
probe Loading commit data...
proxy Loading commit data...
quota Loading commit data...
registry Loading commit data...
runtime Loading commit data...
security Loading commit data...
securitycontext Loading commit data...
serviceaccount Loading commit data...
ssh Loading commit data...
storage Loading commit data...
types Loading commit data...
ui Loading commit data...
util Loading commit data...
version Loading commit data...
volume Loading commit data...
watch Loading commit data...
OWNERS Loading commit data...