某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 学习建议

  • Docker命令大全
  • Kubernetes教程

    • Kubernetes(K8s)学习教程 - 前言
    • 第1章-Kubernetes集群部署
    • 第2章-便捷性设置以及集群插件的安装
    • 第3章-基础操作
    • 第4章-集群升级
    • 第5章-Pod
    • 第6章-Pod生命周期与资源限制
    • 第7章-Pod与节点
    • 第8章-控制器Deployment
    • 第9章-Deployment镜像变更和滚动更新
    • 第10章-其他控制器-以及标签表达式
    • 第11章-控制器与节点驱逐
    • 暂缓更新
    • 练习题

    • 常用命令及yaml配置

      • 常见的集群配置文件
      • kubectl

      • kubeadm

      • ctr

      • etcd(etcdctl)

      • yaml常用配置项

        • Pod文件常用配置项
        • LimitRange文件常用配置项
        • ResourceQuota文件常用配置项
        • 控制器(Deployment)
        • 水平自动扩缩(HPA)
        • 其他控制器(DS、RC和RS)
        • 持久卷(PV)
        • 持久卷申领(PVC)
        • 存储类(StorageClass)
        • Secret
        • ConfigMap
        • 任务(Job)
        • 周期任务(CronJob)
        • 服务(Service)
        • 路由规则(Ingress)
        • 网络策略(NetworkPolicy)
        • 角色(Role)
        • 角色绑定(RoleBinding)
        • 集群角色(ClusterRole)
        • 集群角色绑定(ClusterRoleBinding)
        • 证书签名请求(CertificateSigningRequest)
          • CSR 示例
          • 创建CSR步骤
            • 1、生成私钥文件
            • 2、创建和批准证书签名请求
            • 3、创建角色和角色绑定
            • 4、将这个用户添加到 Kubeconfig 中,并切换用户
            • 5、验证
      • 具有特殊作用的标签或注释

  • CKS教程

  • 云原生安全
  • Kubernetes教程
  • 常用命令及yaml配置
  • yaml常用配置项
carsaid
2023-12-04
目录

证书签名请求(CertificateSigningRequest)

# CertificateSigningRequest(CSR) 常用配置项

学习更多

官方文档-证书和证书签名请求 (opens new window) 官方文档-如何为用户签发证书 (opens new window)

# CSR 示例

字段说明:

  • spec.request是证书文件内容的 Base64 编码值
  • (可选)spec.expirationSeconds是所请求证书的有效期,单位:秒
  • spec.signerName和spec.usages都是固定搭配
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: myuser
spec:
  request: <经过 Base64 编码的证书>
  signerName: kubernetes.io/kube-apiserver-client
  expirationSeconds: 86400  # 86400s = 1天
  usages:
  - client auth
1
2
3
4
5
6
7
8
9
10

# 创建CSR步骤

# 1、生成私钥文件

openssl genrsa -out myuser.key 2048
openssl req -new -key myuser.key -out myuser.csr -subj "/CN=myuser"
1
2

# 2、创建和批准证书签名请求

获得文件myuser.csr的 Base64 编码值:

# -w0 去除换行符
cat myuser.csr | base64 -w0
1
2

创建一个名为myuser.yaml的文件,复制和粘贴以下内容,并自行填写spec.request字段:

apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: myuser
spec:
  request: <文件 myuser.csr 的 Base64 编码值>
  signerName: kubernetes.io/kube-apiserver-client
  expirationSeconds: 86400  # one day
  usages:
  - client auth
1
2
3
4
5
6
7
8
9
10

创建证书签名请求 CSR:

kubectl create -f myuser.yaml

# 验证
kubectl get csr
1
2
3
4

批准这个 CSR,并将证书内容导出至myuser.crt文件中:

kubectl certificate approve myuser

# 验证,从 CSR 中导出证书
kubectl get csr myuser -o jsonpath='{.status.certificate}'| base64 -d > myuser.crt
1
2
3
4

# 3、创建角色和角色绑定

将角色绑定到一个名为mike的用户身上。

kubectl create role myuser-role --verb=get,list,update,delete --resource=pods

kubectl create rolebinding myuser-role-binding --role=myuser-role --user=mike
1
2
3

# 4、将这个用户添加到 Kubeconfig 中,并切换用户

kubectl config set-credentials mike --client-key=myuser.key --client-certificate=mike.crt --embed-certs=true

# 创建新上下文,并切换至该上下文
kubectl config set-context mike --cluster=kubernetes --user=mike
kubectl config use-context mike
1
2
3
4
5

# 5、验证

# 询问当前用户是否有创建 Pod 的权限
➜ kubectl auth can-i get pods
    yes

# 角色绑定是有命名空间范围的,所以在其他命名空间中,mike 用户不具备相关权限
➜ kubectl auth can-i get pods -n ns2
    no
1
2
3
4
5
6
7
编辑 (opens new window)
集群角色绑定(ClusterRoleBinding)
节点角色标签

← 集群角色绑定(ClusterRoleBinding) 节点角色标签→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式