Skip to content

Conversation

@deads2k
Copy link
Contributor

@deads2k deads2k commented Jan 9, 2017

Adds information about bootstrap RBAC roles, what they're for, and how to bind them.

@kubernetes/sig-auth-misc


This change is Reviewable

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jan 9, 2017
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.

Once example is the `clusterrole/system:nodes`. This role is used to provide limited permissions to kubelets. If the
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One example is clusterrole/system:nodes

@erictune
Copy link
Contributor

erictune commented Jan 9, 2017

Thanks, looks good to me aside from ncdc's comment.

@deads2k deads2k force-pushed the rbac-01-bootstrap branch from c0e7400 to 7737c60 Compare January 9, 2017 17:32
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 | --- | --- |

Copy link
Contributor

@seh seh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had been trying to glean this information from the names and definitions themselves, so I'm very happy to see someone documenting the intended uses.


|Default Role |Description

|*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?

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


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


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

### `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.
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/

@deads2k
Copy link
Contributor Author

deads2k commented Jan 17, 2017

@devin-donnelly @alex-mohr @cjcullen I'm referring people to this pull a lot and we really need a spot where we can merge this and then continue a guide. Can we get a 1.6 branch or something so we can actively work on the docs in this area?

@liggitt
Copy link
Member

liggitt commented Jan 25, 2017

@jaredbhatti any word on the 1.6 branch?

@liggitt liggitt mentioned this pull request Jan 26, 2017
@chenopis chenopis added the do-not-merge DEPRECATED. Indicates that a PR should not merge. Label can only be manually applied/removed. label Jan 26, 2017
@chenopis chenopis added this to the 1.6 milestone Feb 3, 2017
@chenopis
Copy link
Contributor

@deads2k @liggitt FYI, the kubernetes:release-1.6 branch is now available. Please change the base branch to that. I will then be able to merge the PR. Thx

@liggitt
Copy link
Member

liggitt commented Feb 14, 2017

included in #2360

@liggitt liggitt closed this Feb 14, 2017
@vishal-denge
Copy link

i am getting this error . can anyone plz help me
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {

},
"status": "Failure",
"message": "services "https:kubernetes-dashboard:" is forbidden: User "system:anonymous" cannot get services/proxy in the namespace "kube-system"",
"reason": "Forbidden",
"details": {
"name": "https:kubernetes-dashboard:",
"kind": "services"
},
"code": 403
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge DEPRECATED. Indicates that a PR should not merge. Label can only be manually applied/removed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants