Kubernetes RBAC 之 ServiceAccount

news/2024/10/6 15:51:51/

Kubernetes RBAC 之 ServiceAccount

定义

RABC 英文全称是 Role-Based Access Control,它通过角色绑定账户,来使得账户拥有某些操控 K8S 集群的权限。ServiceAccount 是集群内部 Pod 访问集群所使用的服务账户,它包括了 Namespace、Token、Ca 证书,并且通过目录挂载的方式绑定 Pod。当 Pod 运行起来的时候,就会使用这些信息与 ApiServer 进行通信。

使用

  1. 创建 sa 账户 sa-test

    kubectl create sa sa-test
    
  2. 创建绑定 sa-test 账户的 Pod

    apiVersion: v1
    kind: Pod
    metadata:name: rbac-sanamespace: defaultlabels:app:  nginx
    spec:serviceAccountName: sa-testcontainers:- name:  curl-nginxports:- containerPort: 80image: curl-nginx:1.0imagePullPolicy: IfNotPresent
    
  3. 访问新建立 Pod,发现没有权限访问 ApiServer

    root@k8s-master1:~# kubectl exec -it rbac-sa -- /bin/sh
    / # cd /var/run/secrets/kubernetes.io/serviceaccount/
    /var/run/secrets/kubernetes.io/serviceaccount # ls -l
    total 0
    lrwxrwxrwx    1 root     root            13 Jul  6 02:59 ca.crt -> ..data/ca.crt
    lrwxrwxrwx    1 root     root            16 Jul  6 02:59 namespace -> ..data/namespace
    lrwxrwxrwx    1 root     root            12 Jul  6 02:59 token -> ..data/token/var/run/secrets/kubernetes.io/serviceaccount # curl --cacert ./ca.crt  -H "Authorization: Bearer $(cat ./token)"  https://kubernetes/api/v1/namespaces/kube-system
    {"kind": "Status","apiVersion": "v1","metadata": {},"status": "Failure","message": "namespaces \"kube-system\" is forbidden: User \"system:serviceaccount:default:sa-test\" cannot get resource \"namespaces\" in API group \"\" in the namespace \"kube-system\"","reason": "Forbidden","details": {"name": "kube-system","kind": "namespaces"},"code": 403
    }
    /var/run/secrets/kubernetes.io/serviceaccount #
    
  4. 赋予 sa-test 权限

    root@k8s-master1:~# kubectl create clusterrolebinding sa-test-admin --clusterrole=cluster-admin  --serviceaccount=default:sa-test
    clusterrolebinding.rbac.authorization.k8s.io/sa-test-admin created
    
  5. 再次访问

    root@k8s-master1:~# kubectl exec -it rbac-sa -- /bin/sh
    / # curl --cacert ./ca.crt  -H "Authorization: Bearer $(cat ./token)"  https://kubernetes/api/v1/namespaces/kube-system
    /var/run/secrets/kubernetes.io/serviceaccount # curl --cacert ./ca.crt  -H "Authorization: Bearer $(cat ./token)"  https://kubernetes/api/v1/namespaces/kube-system
    {"kind": "Namespace","apiVersion": "v1","metadata": {"name": "kube-system","uid": "6a42a1bb-6375-4658-9948-7f395e509197","resourceVersion": "26","creationTimestamp": "2024-05-13T00:41:10Z","labels": {"kubernetes.io/metadata.name": "kube-system"},"managedFields": [{"manager": "kube-apiserver","operation": "Update","apiVersion": "v1","time": "2024-05-13T00:41:10Z","fieldsType": "FieldsV1","fieldsV1": {"f:metadata": {"f:labels": {".": {},"f:kubernetes.io/metadata.name": {}}}}}]},"spec": {"finalizers": ["kubernetes"]},"status": {"phase": "Active"}
    }/var/run/secrets/kubernetes.io/serviceaccount #
    

http://www.ppmy.cn/news/1473965.html

相关文章

易备数据备份软件——数据安全的可靠卫士

在信息时代,数据的重要性不言而喻。易备数据备份软件,犹如一位忠诚的卫士,全方位守护您的数据安全。 易备的云备份功能强大,支持通过多种协议连接网络存储设备,无论是天翼云、华为云、阿里云等国内主流云服务&#xf…

数字货币高频交易策略解析:深入理解与实践指南

随着数字货币市场的蓬勃发展,高频交易(High-Frequency Trading, HFT)逐渐成为投资者关注的焦点。高频交易以其快速的交易执行和微小的利润累积而闻名,是量化交易领域中的一颗璀璨明珠。本文将为读者提供一份深入浅出的高频交易策略…

Mac本地部署Stable-Diffusion

之前有AI绘图场景时一直用的是封装好的软件,因为不用考虑背后繁琐的细节,但因为各种原因难免会有使用不了等问题,为了一劳永逸,决定直接使用Stable-Diffusion。之前因为图省事以及电脑硬盘所剩空间捉襟见肘就没部署(Stable-Diffus…

8、开发与大模型对话的独立语音设备

一、设计原理 该系统的核心部分主要由ESP32-WROVER开发板和ESP32-CAM摄像头、MAX9814麦克风放大器模块、MAX98357功放、声音传感器和SU-03T语音识别芯片构成。通过使用ESP32-WROVER开发板,用户可以实现通过语音与ai进行交互并进行人脸识别。 系统中,从外部输入电源中获取电源…

Cocos Creator 游戏性能优化指南

性能优化 引言一、减少Draw Call什么是Draw Call?为什么要减少Draw Call?减少Draw Call的方法1、剔除I、视锥剔除:摄像机的位置和视角形成一个视锥体,只有位于视锥体内的对象才会被渲染。可以通过检查对象的包围盒(Bou…

uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据@getIndex点击事件获取点击的地区下标和地区名

项目场景: uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据getIndex点击事件获取点击的地区下标和地区名 例如: 问题描述 官方给的文档有限,需要自己下载地图json数据然后自己渲染和编写鼠标悬浮显示内容以及获取点击地址…

高效使用 Guzzle:POST 请求与请求体参数的最佳实践

介绍 在现代爬虫技术中,高效发送 HTTP 请求并处理响应数据是关键步骤之一。Guzzle 是一个强大的 PHP HTTP 客户端,广泛应用于发送同步和异步请求。本文将介绍如何使用 Guzzle 发送 POST 请求,特别是如何传递请求体参数,并结合代理…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令

大致介绍了一下管道、环境变量、一些常用的基本命令,可以当作学习笔记收藏学习一下!!! 文章目录 前言 一、管道 二、环境变量 1.概念 2.查看 3.修改 4.常用环境变量 三、系统状况 总结 前言 大致介绍了一下管道、环境变量、一些常…