-
Notifications
You must be signed in to change notification settings - Fork 15.1k
add information about RBAC bootstrap roles #2169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -441,6 +441,55 @@ subjects: | |
| name: system:serviceaccounts | ||
| ``` | ||
|
|
||
| ### `system:*` prefixed RBAC resources | ||
|
|
||
| If an RBAC resource (`ClusterRole`, `ClusterRoleBinding`, etc) is prefixed with `system:*`, that indicates that | ||
| the resource is "owned" by the infrastructure. Modifications to these resources can result in non-functional clusters. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. s/non-functional/nonfunctional/ |
||
|
|
||
| One example is the `clusterrole/system:nodes`. This role is used to provide limited permissions to kubelets. If the | ||
| role is modified, its possible to prevent your kubelet from working. | ||
|
|
||
| ### Default ClusterRoles and ClusterRoleBindings | ||
|
|
||
| When starting up an API server without any ClusterRoles or ClusterRoleBindings, the API server will bootstrap itself | ||
| with a set of default ClusterRoles and ClusterRoleBindings. Most of these are `system:*` prefixed, but some are not. | ||
| They are all labeled with `kubernetes.io/bootstrapping=rbac-defaults`. These are the most commonly used: | ||
|
|
||
| |Default Role |Description | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Table doesn't render correctly. I think you're missing a line of |
||
|
|
||
| |*admin* |A project manager. If used in a `RoleBinding`, an *admin* user will have | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What is a "project"? Is it manifested as a Kubernetes namespace? Is it the Kubernetes cluster? |
||
| rights to view any Kubernetes resource in the project and modify any resource in the | ||
| project except for quota. | ||
|
|
||
| |*cluster-admin* |A super-user role that can perform any action in any project. When | ||
| granted to a user within a local policy, they have full control over quota and | ||
| roles and every action on every resource in the project. | ||
|
|
||
| |*cluster-status* |A role that can get basic cluster status information. | ||
|
|
||
| |*edit* |A role that can modify most objects in a project, but does not have the | ||
| power to view or modify roles or bindings. | ||
|
|
||
| |*view* |A role who cannot make any modifications, but can see most objects in a | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. s/who/that/, for consistency with line 468 above. |
||
| project. They cannot view or modify roles or bindings. They cannot view secrets, | ||
| since those are escalating. | ||
|
|
||
| |*system:auth-delegator*|A role which allows delegated authentication and authorization | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. s/which/that/, for consistency with line 468 above. |
||
| checks. This is commonly used by add-on API servers for a unified authentication and | ||
| authorization experience. | ||
|
|
||
| |*system:basic-user* |A role that can get basic information about himself. | ||
|
|
||
| |*system:discovery*|A role which provides just enough power to access discovery and | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. s/which/that/, for consistency with line 468 above. |
||
| negotiate an API level. | ||
|
|
||
| ### CLI helpers | ||
|
|
||
| In order to ease the binding of `ClusterRoles`, two CLI helpers were created. `kubectl create rolebinding` and | ||
| `kubectl create clusterrolebinding`. See the CLI help for detailed usage, but they allow for usage like | ||
| `kubectl create clusterrolebinding cluster-admins --clusterrole=cluster-admin --user=root` and | ||
| `kubectl create rolebinding -n my-namespace viewers --clusterrole=view --user=collaborator --serviceaccount=other-ns:default`. | ||
|
|
||
| ## Webhook Mode | ||
|
|
||
| When specified, mode `Webhook` causes Kubernetes to query an outside REST | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a period after "etc".