Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions docs/admin/authorization.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Contributor

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".

the resource is "owned" by the infrastructure. Modifications to these resources can result in non-functional clusters.
Copy link
Contributor

Choose a reason for hiding this comment

The 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

Choose a reason for hiding this comment

The 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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
Expand Down