`
wx1569466809
  • 浏览: 72066 次
文章分类
社区版块
存档分类
最新评论

Kubernetes身份认证和授权操作全攻略:上手操作Kubernetes身份认证

 
阅读更多

这是本系列文章的第二篇,在上篇文章中我们介绍了Kubernetes访问控制。在本文中,我们将通过上手实践的方式来进一步理解身份认证的概念。

在生产环境中,Kubernetes管理员使用命名空间来隔离资源和部署。命名空间作为一个逻辑边界来强制基本访问控制。

假设现在我们有个新的管理员叫Bob,要加入开发团队为研发组管理Kubernetes部署。我们现在需要给他提供足够的访问权限以便于他管理工程命名空间。假设你是集群管理员并且拥有管理全局资源和对象的权限,你需要登上Bob的账户并帮助他获取访问Kubernetes集群所需的凭据。

我在操作中使用的是Minikube,但本文示例的场景适用于任何使用其他方式配置的Kubernetes集群(只要你是集群管理员身份就行)。

首先,创建一个名为cred的目录,并运行以下命令为Bob生成一个私钥。

mkdir cred
cd cred

openssl genrsa -out bob.key 2048
Generating RSA private key, 2048 bit long modulus
..................................................................................................................+++
................................................+++
e is 65537 (0x10001)

我们还需要一个可以从私钥生成的证书签名请求。

openssl req -new -key bob.key -out bob.csr -subj "/CN=bob/O=eng"\n

将密钥移动到父级文件夹并在Base64中对其进行编码。

cp bob.key ..
cd ..
cat cred/bob.csr | base64 | tr -d '\n'
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1lqQ0NBVW9DQVFBd0hURU1NQW9HQTFVRUF3d0RZbTlpTVEwd0N3WURWUVFLREFSbGJtZHVNSUlCSWpBTgpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzSU9oUTArMFJUakpqZjBKTkd2Rmo0YWFlN1hYCkkrZWkzTzZWTEpqMHNKNDBvengyUTVndXBmeFc5b0lEYTJETnhVZjZkNHVMOUJ3V2lhdFdQdnBDNm80MHJQc2EKTjBUdEhEekFYeWppc0E5VXVRMVNKMWg5Mkg0TU9XWEpWNWJWaTlXYjBKU3hLbXVrSUVtaERJcW9TcEh6MU5xaApQMWNXOFFpNXpoVVBmWlpnOUhSaWVUQ2xEMmR3bWRtS1JjbU9uenNGVWhJWmZWanVZNzZJUm9KbksyaHNzVjZoCmMyY1JNTVNEdFA0ZDArYkxOY1BKdExpS3JjQkdwUGxLUEdrSHovM2NNbVhpVi8wY2xqUlppMzJCb3B4NlI1NUIKc0Z6cXZwcWgzNWxLNUVOUGxPZy9sdURFdllGeUtzOUY2aERBRFhDNzQxU0ZCQTI0TERzcTFiWWtVUUlEQVFBQgpvQUF3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxTejgxL2N3bjQxbVRrUDhabWhhUUx3MkpIRkN4ZUlaOFdpCkZOV0U1cnRVd3hrSjJGWVJKRlFUL1hJN0FoL0pXTkhqeHlhOUNyN3c0OThmanN3bDF2ZzQ1QUgrR29DeVEwTWkKOU1MMHl0WmZyaG5jYmtpRG9oSUpuaWhJTjlCUGpHVkw2SG1USytGc0sybG1ZZ1JDdk9Cclg3Rkh6ZjgwM0ZFNAp4ZkgrZlFsdGxDdEZTSEhuaUlzZTFEQ2J4cFVTdnRISXpYMFcyb2hXV3RPVkRpOTAzOW8zY2VaWmdVK3VRYno0Cmp2djJoeVdRNDhORFl3RWF1UUU2S3NBQTFLT0IyUkI2dE45bjFTVWoxU1B2WnBsQkVieDZ5MTkzaUJSVFJRM2wKM2JhdFRNUUEzelBsdk01ZEE2Vy8rQWcwVm0xMk1SR091VFRLSEU2bE5INE1DbHQvRGZZPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K

我们需要将生成的base64编码的字符串嵌入到YAML文件中,并将其作为证书签名请求提交给Kubernetes。这一步骤基本上可以将Bob的私钥与Kubernetes集群相关联。


apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
  name: bob-csr
spec:
  groups:
  - system:authenticated
 
  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1lqQ0NBVW9DQVFBd0hURU1NQW9HQTFVRUF3d0RZbTlpTVEwd0N3WURWUVFLREFSbGJtZHVNSUlCSWpBTgpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzSU9oUTArMFJUakpqZjBKTkd2Rmo0YWFlN1hYCkkrZWkzTzZWTEpqMHNKNDBvengyUTVndXBmeFc5b0lEYTJETnhVZjZkNHVMOUJ3V2lhdFdQdnBDNm80MHJQc2EKTjBUdEhEekFYeWppc0E5VXVRMVNKMWg5Mkg0TU9XWEpWNWJWaTlXYjBKU3hLbXVrSUVtaERJcW9TcEh6MU5xaApQMWNXOFFpNXpoVVBmWlpnOUhSaWVUQ2xEMmR3bWRtS1JjbU9uenNGVWhJWmZWanVZNzZJUm9KbksyaHNzVjZoCmMyY1JNTVNEdFA0ZDArYkxOY1BKdExpS3JjQkdwUGxLUEdrSHovM2NNbVhpVi8wY2xqUlppMzJCb3B4NlI1NUIKc0Z6cXZwcWgzNWxLNUVOUGxPZy9sdURFdllGeUtzOUY2aERBRFhDNzQxU0ZCQTI0TERzcTFiWWtVUUlEQVFBQgpvQUF3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxTejgxL2N3bjQxbVRrUDhabWhhUUx3MkpIRkN4ZUlaOFdpCkZOV0U1cnRVd3hrSjJGWVJKRlFUL1hJN0FoL0pXTkhqeHlhOUNyN3c0OThmanN3bDF2ZzQ1QUgrR29DeVEwTWkKOU1MMHl0WmZyaG5jYmtpRG9oSUpuaWhJTjlCUGpHVkw2SG1USytGc0sybG1ZZ1JDdk9Cclg3Rkh6ZjgwM0ZFNAp4ZkgrZlFsdGxDdEZTSEhuaUlzZTFEQ2J4cFVTdnRISXpYMFcyb2hXV3RPVkRpOTAzOW8zY2VaWmdVK3VRYno0Cmp2djJoeVdRNDhORFl3RWF1UUU2S3NBQTFLT0IyUkI2dE45bjFTVWoxU1B2WnBsQkVieDZ5MTkzaUJSVFJRM2wKM2JhdFRNUUEzelBsdk01ZEE2Vy8rQWcwVm0xMk1SR091VFRLSEU2bE5INE1DbHQvRGZZPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K
  
  usages:
  - digital signature
  - key encipherment
  - server auth

kubectl create -f signing-request.yaml
certificatesigningrequest.certificates.k8s.io/bob-csr created

使用以下kubectl命令验证CSR:

kubectl get csr
NAME      AGE   REQUESTOR       CONDITION
bob-csr   41s   minikube-user   Pending

请注意,请求此时依旧处于pending状态。集群管理员需要批准它,才会变成active状态。

kubectl certificate approve bob-csr
certificatesigningrequest.certificates.k8s.io/bob-csr approved
kubectl get csr
NAME      AGE    REQUESTOR       CONDITION
bob-csr   104s   minikube-user   Approved,Issued

既然证书已经批准并发布,我们需要从集群中获取签名证书。这是登录Bob账户最关键的一步。

kubectl get csr bob-csr -o jsonpath='{.status.certificate}' | base64 --decode > bob.crt

bob.crt这一文件是用于Bob身份认证的客户端证书。我们现在拥有Kubernetes的私钥(bob.key)和批准的证书(bob.crt)。只要Bob拥有这两个凭据,他就可以通过集群进行身份认证。

那么,现在就可以将Bob作为用户添加到Kubernetes中。

kubectl config set-credentials bob --client-certificate=bob.crt --client-key=bob.key
User "bob" set.

打开~/.kube/config 文件确认凭据已经设置完成。

让我们创建一个名为engineering的新命名空间,Bob是其管理员。

kubectl create namespace engineering
namespace/engineering created
kubectl get namespace
NAME              STATUS   AGE
default           Active   37m
engineering       Active   0s
kube-node-lease   Active   37m
kube-public       Active   37m
kube-system       Active   37m

kubectl CLI以auth的形式提供了非常有用的开关,可以验证特定用户的权限。让我们检查一下当前的管理员用户是否可以访问engineering命名空间。鉴于您集群管理员的身份,因此可以轻易看到输出结果。

 kubectl auth can-i list pods --namespace engineering
yes

我们也能够检查Bob能否访问engineering命名空间。

kubectl auth can-i list pods --namespace engineering --as bob
no

很显然,Bob无法访问命名空间,这是因为我们创建了凭据但是没有明确授权Bob对任何对象进行任何特定的动作。

在下一篇文章中,我将引导您完成授权Bob的所有步骤。同时,还会介绍角色以及角色绑定。保持关注哟~

转载于:https://my.oschina.net/u/3330830/blog/3093367

分享到:
评论

相关推荐

    智能时代的生产力变革:AIGC产业应用实践.pdf

    人工智能、大语言模型相关学习资料

    (源码)基于WebAssembly Micro Runtime的嵌入式应用框架.zip

    # 基于WebAssembly Micro Runtime的嵌入式应用框架 ## 项目简介 本项目基于WebAssembly Micro Runtime (WAMR),提供了一个轻量级的WebAssembly运行时环境,适用于嵌入式设备和物联网(IoT)应用。WAMR支持WebAssembly解释器、提前编译(AoT)和即时编译(JIT),并提供了丰富的应用框架和API,支持多种平台和架构。 ## 项目的主要特性和功能 iwasm VM核心 100符合W3C WebAssembly MVP标准。 小巧的运行时二进制大小(解释器85K,AoT 50K)和低内存占用。 通过AoT实现接近原生速度的执行效率。 自实现的模块加载器支持跨Linux、SGX和MCU系统运行。 支持内置libc子集或WASI标准libc。 可嵌入的C API支持。 支持将原生API导出到WebAssembly应用。 应用框架

    芋道 yudao ruoyi-vue-pro crm sql , 更新时间 2024-09-30 ,可对应yudao版本2.4.1

    芋道 yudao ruoyi-vue-pro crm sql , 更新时间 2024-09-30 ,可对应yudao版本2.4.1

    微教育多校版小程序源码 开源版V3.12.75 大数据+营销插件+前端.zip

    微教育多校版小程序源码 开源版V3.12.75 大数据+营销插件+前端 版本号:3.12.75 – 全能版 修复部分用户统计图表不显示的问题 版本号:3.12.74 – 全能版 调整校园首页培训模式下 课程签到柱形图只统计线下课

    AIGC大时代,光模块产业迎风启航-浙商证券-2023.4.14-41页.pdf

    人工智能、大语言模型相关学习资料

    移动端项目-基于Android的随手记APP代码

    移动端项目-基于Android的随手记APP代码

    这是一个pytorch repository的YOLOv4细心的YOLOv4和mobilenet YOLOv4与PAS.zip

    python、yolo、pytorch

    代码目录,traceId 关联,日志,网关

    代码目录,traceId 关联,日志,网关

    systemd-devel-219-78.el7-9.9.x64-86.rpm.tar.gz

    1、文件内容:systemd-devel-219-78.el7_9.9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/systemd-devel-219-78.el7_9.9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    OpenCV车牌识别.zip

    车牌识别项目

    YOLOv9 YOLOv7 YOLOv7的MIT许可证.zip

    python、yolo、pytorch

    java-springboot+vue厨艺交流平台的设计与实现源码(项目源码-说明文档).zip

    系统选用B/S模式,后端应用springboot框架,前端应用vue框架, MySQL为后台数据库。 本系统基于java设计的各项功能,数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。 在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

    PyTorch张量与自动微分实战指南:从基础到高级

    内容概要:本文详细介绍了PyTorch的张量和自动微分两大核心技术。首先,全面概述了PyTorch的特点及其在深度学习领域的优势,并讲解了PyTorch的安装和配置方法。接着,针对张量这一核心数据结构,阐述了张量的创建方式、常用的操作以及重要属性。再深入到自动微分子系统,解释了自动微分的概念及其工作机制,展示了如何利用计算图和反向传播算法来简化梯度计算。进一步地,在实战案例中演示了构建线性回归模型的全过程,从数据准备、模型定义、损失函数的选择直到训练模型。最后,介绍了一些高级进阶技巧,例如张量广播、拼接、切片和高阶导数的计算,为用户处理复杂任务提供了宝贵经验。 适合人群:有一定编程基础并希望深入理解和运用PyTorch进行深度学习项目的开发者、研究人员以及学生。 使用场景及目标:① 学习并掌握PyTorch框架,尤其是张量和自动微分模块的基础知识;② 结合具体示例理解和实施线性回归模型;③ 提升处理复杂深度学习任务的能力,比如通过高级张量操作优化性能、提高效率。 其他说明:本文不仅涵盖了理论知识还提供了大量的实践范例,能够帮助读者更快地上手和应用所学内容,适用于新手入门到中级水平用户的

    安徽19种土壤类型空间分布-mxd可编辑文件+标准shape文件+标准成图TIF

    本资源为安徽省土壤类型空间分布数据(共19类)。 编图所采用的制图单元有土类、亚类、土属、土种等,对照联合国粮农组织(FAO)土壤分类体系。 数据类型为标准shape格式。 可通过查阅“土壤分类体系”excel文件中的“土壤分类编码表”区分土壤类型。 属性表中的“SOIL_ID”与编码表中的“亚类”是一一对应的。 资源中还包含可编辑mxd文件,方便用户任意操作,同时包含标准TIF格式图片,可直接使用,还包含显示样式修改示意图,可自由选择自己喜欢的配色方案。

    嘉立创EDA专业版安装包

    开发工具,可方便画原理图时,下载原理图及PCB 封装库

    YOLO v3 物体检测算法.zip

    python、yolo、pytorch

    p-07导入CSV文件.py

    p-07导入CSV文件.py

    (源码)基于Arduino的RFID门禁系统.zip

    # 基于Arduino的RFID门禁系统 ## 项目简介 本项目是一个基于Arduino的全面RFID门禁系统,旨在实现安全的访问控制。系统使用MFRC522 RFID读取模块、用于控制门锁机制的伺服电机,以及LED和蜂鸣器为用户提供反馈,确保可靠且便捷的访问管理。 ## 项目的主要特性和功能 1. RFID认证系统读取RFID卡的唯一标识符(UID),并与预定义的授权ID列表进行验证。 2. 伺服电机控制伺服电机控制门的物理锁定机制,根据访问授权进行锁定或解锁操作。 3. 视觉和听觉反馈LED和蜂鸣器提供清晰的视觉和听觉指示,表明访问状态,提升用户体验。 4. 模块化和可定制性代码和硬件设置易于修改或扩展,可添加如键盘或生物识别传感器等额外功能。 ## 安装使用步骤 ### 步骤1收集组件 Arduino开发板(如Arduino Uno) MFRC522 RFID读取模块 伺服电机 LED和电阻 无源蜂鸣器 跳线

    2024中国移动数字政府白皮书.pdf

    2024中国移动数字政府白皮书.pdf

Global site tag (gtag.js) - Google Analytics