k8s,盘他!k8s的安全机制与RBAC使用方法

本文详细介绍了k8s的安全机制,包括安全框架、Authentication、Authorization及Admission Control。重点讨论了RBAC(Role-Based Access Control)的使用,包括Role、ClusterRole、RoleBinding和ClusterRoleBinding的配置,并提供了实际操作步骤,如创建命名空间、角色、角色绑定及测试访问控制。同时,文章提及了传输安全和准入控制的重要性。
摘要由CSDN通过智能技术生成

前言

一:k8s安全机制

安全框架、

传输安全、认证,授权,准入控制

使用rbac授权

1.1:kubernetes安全框架

mark

  • 安全框架的流程

流程:kubectl先请求api资源,然后是过三关,第一关是认证(Authentication),第二关是授权(Authorization),第三关是准入控制(Admission Control),只有通过这三关才可能会被k8s创建资源。

K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都支持插件方式,通过API Server配置来启用插件。

普通用户若要安全访问集群API Server,往往需要证书、Token或者用户名+密码;Pod访问,需要ServiceAccount

  • apiserver使用的是token认证

    [root@master ~]# ps aux |grep apiserver
    root      12636  3.0 23.6 420460 235620 ?       Ssl  5月17 156:09 /opt/kubernetes/bin/kube-apiserver --logtostderr=true --v=4 --etcd-servers=https://192.168.233.131:2379,https://192.168.233.132:2379,https://192.168.233.133:2379 --bind-address=192.168.233.131 --secure-port=6443 --advertise-address=192.168.233.131 --allow-privileged=true --service-cluster-ip-range=10.0.0.0/24 --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction --authorization-mode=RBAC,Node --kubelet-https=true --enable-bootstrap-token-auth --token-auth-file=/opt/kubernetes/cfg/token.csv --service-node-port-range=30000-50000 --tls-cert-file=/opt/kubernetes/ssl/server.pem --tls-private-key-file=/opt/kubernetes/ssl/server-key.pem --client-ca-file=/opt/kubernetes/ssl/ca.pem --service-account-key-file=/opt/kubernetes/ssl/ca-key.pem --etcd-cafile=/opt/etcd/ssl/ca.pem --etcd-certfile=/opt/etcd/ssl/server.pem --etcd-keyfile=/opt/etcd/ssl/server-key.pem
    root      22849  0.0  0.0 112728   976 pts/0    S+   10:20   0:00 grep --color=auto apiserver
    '//其中能够查询到token认证等信息'
    
  • 查看ServiceAccount,可以通过ServiceAccount在pod中去访问apiserver

    [root@master ~]# kubectl get sa
    NAME      SECRETS   AGE
    default   1         21d
    '//Service Account它并不是给kubernetes集群的用户使用的,而是给pod里面的进程使用的,它为pod提供必要的身份认证。'
    
  • 传输安全方面:8080用于内部通讯,6443是提供给外部访问的端口

    [root@master ~]# netstat -ntap |grep 8080 |grep LISTEN	'//默认8080监听本地(是通过master及其他组件连接使用)'
    tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      12636/kube-apiserve 
    [root@master ~]# netstat -ntap |grep 6443 |grep LISTEN	'//对外提供服务端口是6443'
    tcp        0      0 192.168.233.131:6443    0.0.0.0:*               LISTEN      12636/kube-apiserve 
    

1.2:第一关:Authentication认证

三种客户端身份认证:

1、HTTPS 证书认证:基于CA证书签名的数字证书认证

2、HTTP Token认证:通过一个Token来识别用户(生产环境中使用广泛)

3、HTTP Base认证:用户名+密码的方式认证

  • 1、HTTPS证书认证

    [root@master ~]# cat k8s/k8s-cert/k8s-cert.sh
    cat > ca-config.json <<EOF
    {
         
      "signing": {
         
        "default": {
         
          "expiry": "87600h"
        },
        "profiles": {
         
          "kubernetes": {
         
             "expiry": "87600h",
             "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ]
          }
        }
      }
    }
    EOF
    
    cat > ca-csr.json <<EOF
    {
         
        "CN": "kubernetes",
        "key": {
         
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
         
                "C": "CN",
                "L": "Beijing",
                "ST": "Beijing",
          	    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值