Authentication
- Accounts
- User
- Service Accounts
Auth Mechanisms
Static Password File
user.csv
1 | password1,userName1,userID1,group1 |
kube-apiserver.service
1 | --basic-auth-file=user.csv |
Authenticate
1 | curl -v -k https://master-ip:6443/api/v1/pods -u "userName:password" |
Static Token File
user-token.csv
1 | token1,userName1,userID1,group1 |
kube-apiserver.service
1 | --token-auth-file=user-token.csv |
Authenticate
1 | curl -v -k https://master-ip:6443/api/v1/pods --header "Authorization: Bearer token1" |
TLS in Kubernetes
1 | # Look into certificate |
1 | # Get logs without kube-apiserver |
Certificate API
1 | # Generate user certificate |
1 | # Create certificate object |
1 | # Get & approve |
KubeConfig
- Default file is ~/.kube/config
- Clusters
- Contexts
- Users
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20apiVersion: v1
kind: Config
current-context: me@my-cluster
clusters:
- name: my-cluster
cluster:
certificate-authority: ca.crt
server: https://localhost:6443
contexts:
- name: me@my-cluster
context:
cluster: my-cluster
user: me
namespace: default
users:
- name: me
user:
client-certificate: me.crt
client-key: me.key
1 | # Usage |
Authorization
- Mechanisms (mode)
- Node
- ABAC (user/group based)
- RBAC (role based)
- Webhook
- AlwaysAllow
- AlwaysDeny
RBAC
1 | apiVersion: rbac.authorization.k8s.io/v1 |
1 | apiVersion: rbac.authorization.k8s.io/v1 |
Check Access
1 | # kubectl auth can-i command -- as user |
Cluster Roles
1 | # Similar with Role |
1 | # Similar with RoleBinding |