【k8s系列】token.csv

简述

token.csv
该文件为一个用户的描述文件,基本格式为 Token,用户名,UID,用户组;这个文件在 apiserver 启动时被 apiserver 加载,然后就相当于在集群内创建了一个这个用户;接下来就可以用 RBAC 给他授权

这些 token 的形式是 [a-z0-9]{6}.[a-z0-9]{16}。第一部分是 Token ID,第二部分是 Token Secret。

测试

##### 1. apiserver的启动参数中添加
--token-auth-file=xxx/token.csv

##### 2. 查看内容
# cat token.csv 
12ba4f.d82a57a4433b2359,"system:admin",10001,"system:masters"
12ba4f.d82a57a4433b2358,"system:admin",10001,"system:admin"

##### 3. 测试1:system:masters
# curl https://10.191.193.19:16941/api/v1/nodes  --header "Authorization: Bearer 12ba4f.d82a57a4433b2359" --insecure
{
    
    
  "kind": "NodeList",
  "apiVersion": "v1",
  "metadata": {
    
    
    "resourceVersion": "5899"
  },
  "items": [
    {
    
    
      "metadata": {
    
    
...

##### 3. 测试2:system:admin
# curl https://10.191.193.19:16941/api/v1/nodes  --header "Authorization: Bearer 12ba4f.d82a57a4433b2358" --insecure
{
    
    
  "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可以获取到所有资源

image.png

image.png

生成token的方式

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 ' '
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
# head -c 16 /dev/urandom | od -An -t x | tr -d ' '
00f87bd9ae7cabc5f6da29534525f84f
## 数过了,32位

参考

k8s官网 用户认证
k8s官网 使用 RBAC 鉴权

猜你喜欢

转载自blog.csdn.net/weixin_42072280/article/details/130579299
k8s
今日推荐