Redian新闻
>
k8s安全管理认证

k8s安全管理认证

公众号新闻


1、SA

Service account是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的。

  • 是为Pod中的进程调用Kubernetes API而设计;

  • 仅局限它所在的namespace;

  • 每个namespace都会自动创建一个default service account;

  • Token controller检测service account的创建,并为它们创建secret;

开启ServiceAccount Admission Controller后,每个Pod在创建后都会自动设置spec.serviceAccount为default(除非指定了其他ServiceAccout);验证Pod引用的service account已经存在,否则拒绝创建;如果Pod没有指定ImagePullSecrets,则把service account的ImagePullSecrets加到Pod中;每个container启动后都会挂载该service account的token和ca.crt到/var/run/secrets/kubernetes.io/serviceaccount/

创建SA用户

# vim 01_k8s_pod_test.ymlapiVersion: v1kind: ServiceAccountmetadata:  name: superopsmsb-sa---apiVersion: v1kind: Podmetadata:  name: my-nginx-1spec:  containers:  - image: nginx:1.23.0    name: my-nginx  serviceAccountName: superopsmsb-sa
# kubectl apply -f 01_k8s_pod_test.yml # kubectl get sa# kubectl get pods -o wide# kubectl describe pod my-nginx-1

2、UA

创建UA

# vim test-csr.json  {  "CN": "test",  "hosts": [],  "key": {    "algo": "rsa",    "size": 2048  },  "names": [    {      "C": "CN",      "ST": "Beijing",      "L": "Beijing",      "O": "system:test",                   "OU": "system"    }  ]}

# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes test-csr.json | cfssljson -bare test # cp test*.pem /etc/kubernetes/ssl/## 创建集群# kubectl config set-cluster kubernetes --certificate-authority=ca.pem --embed-certs=true --server=https://192.168.16.250:16443 --kubeconfig=test.kubeconfig## 创建用户# kubectl config set-credentials test --client-certificate=test.pem --client-key=test-key.pem --embed-certs=true --kubeconfig=test.kubeconfig
## 创建上下文,用户和集群关联# kubectl config set-context kubernetes --cluster=kubernetes --user=test --kubeconfig=test.kubeconfig# kubectl config current-context --kubeconfig=test.kubeconfig# kubectl config view --kubeconfig=test.kubeconfig
## 设置使用默认的上下文# kubectl config use-context kubernetes --kubeconfig=test.kubeconfig
# kubectl --kubeconfig=test.kubeconfig get podsError from server (Forbidden): pods is forbidden: User "test" cannot list resource "pods" in API group "" in the namespace "default" # kubectl --kubeconfig=kube.config get podsNAME READY STATUS RESTARTS AGEmy-nginx-1 1/1 Running 0 4h26mpod-cm1 1/1 Running 3 4d22hpod-harbor 1/1 Running 2 26hpod-mysql-secret1 1/1 Running 5 4d21hpod-mysql-secret2 1/1 Running 2 4d21h

3、config文件

  • 创建登录k8s集群的用户,基于证书和密钥信息创建用户

  • 创建登录k8s集群的地址

  • 将登录用户和目标k8s集群关联在一起,形成k8s集群入口

  • 设定默认的k8s集群入口

config文件优先级

  • --kubeconfig 指定文件

  • 设置系统环境 KUBECONFIG

  • /root/.kube/config

4、role创建

资源对象的权限集合定义

# kubectl create role myrole --verb=get,list --resource=pods --dry-run=client -o yaml > 02_k8s_secure_role.yaml# vim 02_k8s_secure_role.yaml apiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata:  name: myrolerules:- apiGroups:  - ""  - "apps"  resources:  - pods  - deployments  - replicasets  verbs:  - get  - list  - delete
# kubectl apply -f 02_k8s_secure_role.yaml
# kubectl get roleNAME CREATED ATmyrole 2023-11-30T02:34:21Z# kubectl describe role myroleName: myroleLabels: <none>Annotations: <none>PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- deployments [] [] [get list delete] pods [] [] [get list delete] replicasets [] [] [get list delete] deployments.apps [] [] [get list delete] pods.apps [] [] [get list delete] replicasets.apps [] [] [get list delete]


5、rolebinding创建

# kubectl create rolebinding test-myrole --role=myrole --user=test --dry-run=client -o yaml > 03_k8s_test-myrole.yaml# kubectl apply -f 03_k8s_test-myrole.yaml # kubectl describe rolebinding test-myroleName:         test-myroleLabels:       <none>Annotations:  <none>Role:  Kind:  Role  Name:  myroleSubjects:  Kind  Name  Namespace  ----  ----  ---------  User  test  

# kubectl get pods --kubeconfig=test.kubeconfigNAME READY STATUS RESTARTS AGEmy-nginx-1 1/1 Running 1 25hpod-cm1 1/1 Running 5 5d20h
# kubectl get deployment --kubeconfig=test.kubeconfig
# kubectl get deployment --kubeconfig=test.kubeconfig -n kube-systemError from server (Forbidden): deployments.apps is forbidden: User "test" cannot list resource "deployments" in API group "apps" in the namespace "kube-system"# kubectl get svc --kubeconfig=test.kubeconfigError from server (Forbidden): services is forbidden: User "test" cannot list resource "services" in API group "" in the namespace "default"

6、clusterrole和clusterrolebinding创建

# kubectl create clusterrole myclusterrole --verb=get,list,delete --resource=pods --dry-run=client -o yaml > 04_k8s_secure-clsterrole.yaml# kubectl apply -f 04_k8s_secure-clsterrole.yaml 
# kubectl create clusterrolebinding test-myclusterrole --clusterrole=myclusterrole --user=test
# kubectl edit clusterrolebinding test-myclusterrole
[root@k8s-master01 tools]# kubectl get deployment --kubeconfig=test.kubeconfig -n kube-systemError from server (Forbidden): deployments.apps is forbidden: User "test" cannot list resource "deployments" in API group "apps" in the namespace "kube-system"# kubectl get pods --kubeconfig=test.kubeconfig -n kube-systemNAME READY STATUS RESTARTS AGEcalico-kube-controllers-7cc8dd57d9-hvkz5 1/1 Running 55 6d23hcalico-node-c4dxg 1/1 Running 7 6d22hcalico-node-srqch 1/1 Running 8 6d22hcalico-node-tcdmv 0/1 Running 7 6d22hcalico-node-tvjzj 1/1 Running 7 6d22hcoredns-675db8b7cc-5fbjk 1/1 Running 7 6d22h

role和clusterrole混合使用,赋予clusterrole权限,但又限制命名空间权限

# kubectl create rolebinding test-myclusterrole --clusterrole=myclusterrole --user=test

接:https://www.cnblogs.com/zbc230/p/17864665.html

(版权归原作者所有,侵删)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
关注丨国家移民管理局:5月6日起出台便民利企出入境管理六项政策措施广发证券管理层换届:秦力担任总经理,还有3张“新面孔”,新管理团队体现何种意图?一图看懂!国家移民管理局实施进一步便民利企出入境管理若干政策措施雪后 背影总理难做《会计师事务所数据安全管理暂行办法》:财政部 国家网信办发布!全文及答记者问【买房】Brookline优质学区 独栋 近紫线 安静高绿化环境 | 3b3.5b 3,048sqft $147W百年无痕 2.5【买房】Framingham 近I90 弗雷明汉&纳提克商圈 房大地大 独栋 | 3b2.5b 1,928sqft $75W34、长篇家庭伦理小说《嫁接 下》第十二章 异国情缘(1)K8S部署ECK采集日志什么是单向认证与双向认证2024春假伦敦邮轮行之伦敦k8s-权限管理【买房】Newton 6b3.5b 3,808sqft $180W 顶尖学区 部分翻新2000+车企KOX账号一站式管理,打造矩阵数字化管理解决方案Europrivacy认证即将正式落地:欧盟首个获批的官方GDPR认证机制旱灾时疯狂偷水!澳洲一酒庄遭重罚,酒庄经理认罪[汽车] 独一无二的718 KING!718Spyder RS国内首提!旧金山海湾水族馆失去AZA认证,CEO因挥霍无度及管理混乱已辞职重磅立法 | 《网络数据安全管理条例》2024年拟制定!国家药监局开展疫苗监管质量管理体系管理评审一文帮你搞定JDK8升级114月12家新登记私募基金管理人出炉,含5家国资机构丨睿兽分析基金管理人月报【买房】Newton优质学区 近90查尔斯河 潜力半翻新独栋别墅 | 3b2b 1,568sqft $74.9W美国人认为加拿大是全世界最安全的国家!最新全球最安全国家排行榜,加拿大又荣登“安全”榜!管了3年 K8S 集群,我学到了 10 个经验教训!【买房】Natick独栋 | 街角阳光充足 高性价比 生活便利 近Mall和紫线 | 4b2b 1,298sqft $89.9W特别策划 | 以卓越管理激活企业增长力 第六届年度卓越管理奖案例征集开启!《泛血管疾病代谢异常管理中国专家共识》盛大发布,开启疾病管理新时代 | 2024 CCIF&CCPCCK8s 的最后一片拼图:dbPaaS欧盟AIA通过了!人工智能管理专家CAIM认证课程:聚焦ISO/IEC42001人工智能管理体系行业模版 | 金融监管总局《银行保险机构数据安全管理办法》征求意见k8s WebTerminal 开发实战(文末送Docker书籍)上海《关于进一步加强本市数据资产管理的通知》发布:探索数据资产全过程管理路径
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。