Authorization
- The authorization mode is defined in the
kube-apiserver -
If multiple authorization modes are defined, user tries to authorize in each one of them until it of one them passes
-
Authorization Modes
ABAC AuthorizationRBAC AuthorizationNode AuthorizationWebHook ModeAlwaysAllowAlwaysDeny
ExecStart=/usr/local/bin/kube-apiserver \\
... \\
--authorization-mode=Node,RBAC,Webhook
ABAC (Atribute Based Access Control)
- Authorize user/group to a set of permissions
- E.g., view, create, delete PODs
[
{
"kind": "Policy",
"spec": {
"user": "dev-user",
"namespace": "*",
"resource": "pods",
"apiGroup": "*"
}
},
{
"kind": "Policy",
"spec": {
"user": "security-user",
"namespace": "*",
"resource": "csr",
"apiGroup": "*"
}
}
]
RBAC (Role Based Access Control)
- Subject: entity that needs access to Kubernetes API
- Kind: User
- Kind: Group
- Kind: Service Account
- Resource + API Group: kubernetes object that we grant access to
- apps/Deployment, core/Pod, core/Service
- Verbs: list of actions that can be performed
- Create, List, Watch, Get, ...
Roles & Bindings

- A
ClusterRoleBindingis a subject to be bound to aClusterRole, which is a verb + non-namespaced resource - A
RoleBindingis a subject to be bound to aRole, which is a verb + namespaced resource
Node Authorization
- Authorize nodes (
kubelets) to invokekube-apiservermethods - Kubelets are part of the
SYSTEM:NODESgroup
Webhook
- Use third-party to help with admission control and authorization
- E.g.,
Open Policy Agent - The third-party service then decides if the user is permitted or not
AlwaysAllow
- Allow everything
AlwaysDeny
- Deny everything