简述
token.csv
该文件为一个用户的描述文件,基本格式为 Token,用户名,UID,用户组;这个文件在 apiserver 启动时被 apiserver 加载,然后就相当于在集群内创建了一个这个用户;接下来就可以用 RBAC 给他授权
这些 token 的形式是 [a-z0-9]{6}.[a-z0-9]{16}
。第一部分是 Token ID,第二部分是 Token Secret。
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| --token-auth-file=xxx/token.csv
12ba4f.d82a57a4433b2359,"system:admin",10001,"system:masters" 12ba4f.d82a57a4433b2358,"system:admin",10001,"system:admin"
{ "kind": "NodeList", "apiVersion": "v1", "metadata": { "resourceVersion": "5899" }, "items": [ { "metadata": { ...
{ "kind": "Status", "apiVersion": "v1", "metadata": {}, "status": "Failure", "message": "nodes is forbidden: User \"system:admin\" cannot list resource \"nodes\" in API group \"\" at the cluster scope", "reason": "Forbidden", "details": { "kind": "nodes" }, "code": 403 }
|
说明
system:masters是k8s中最大权限的用户组,所以token文件中将用户写成system:masters可以获取到所有资源
生成token的方式
1 2 3 4 5 6 7
| pwd /etc/kubernetes echo "`head -c 16 /dev/urandom | od -An -t x | tr -d ' '`,kubelet-bootstrap,10001,\"system:kubelet-bootstrap\"" > token.csv cat token.csv
也可以使用上面的命令在工作中生成随机字符串 head -c 16 /dev/urandom | od -An -t x | tr -d ' '
|
1 2 3 4
| export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ') cat > token.csv <<EOF ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap" EOF
|
1 2 3
| 00f87bd9ae7cabc5f6da29534525f84f
|
参考
k8s官网 用户认证
k8s官网 使用 RBAC 鉴权