飞天使-k8s基础组件分析-安全

这篇具有很好参考价值的文章主要介绍了飞天使-k8s基础组件分析-安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

名称空间解释

名字是啥? 
答:集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有一个唯一的UID.

名称空间是啥? 
答:名称空间将集群划分为多个领域

什么时候使用?
答: 企业中有多人使用时候,可以进行权限管控

怎么查看?
答:看输出 是false 还是 true 
kubectl api-resources --namespace=false
kubectl api-resources --namespace=true

名称空间和dns的关系? 
答: 
创建服务时,它将创建相应的DNS条目,这个条目的形式是<service-name>.<namespace-name>.svc.cluster.local
上面的namespace-name 是啥就是啥

默认的名称空间?
答:
[root@k8s-01 ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   2d10h
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h
kube-system       Active   2d10h
[root@k8s-01 ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   2d10h 
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h # 保留给集群使用,保持基本使用
kube-system       Active   2d10h  #管理相关的组件


 kubectl get pod -n kube-system
 kubectl describe -n kube-system

如何新增一个名称空间
答:如下命令
[root@k8s-01 ~]# kubectl create ns dev
namespace/dev created
[root@k8s-01 ~]# kubectl  get ns
NAME              STATUS   AGE
default           Active   2d10h
dev               Active   6s
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h
kube-system       Active   2d10h
[root@k8s-01 ~]# kubectl delete ns dev


如何利用json 创建名称空间
答:
[root@k8s-01 chapter06]# kubectl apply -f namespace-dev.json 
namespace/development created
[root@k8s-01 chapter06]# kubectl app^C
[root@k8s-01 chapter06]# kubectl apply -f namespace-prod.json 
namespace/production created
[root@k8s-01 chapter06]# kubectl get ns
NAME              STATUS   AGE
default           Active   2d10h
development       Active   17s
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h
kube-system       Active   2d10h
production        Active   4s
[root@k8s-01 chapter06]# kubectl get ns --show-labels
NAME              STATUS   AGE     LABELS
default           Active   2d10h   <none>
development       Active   35s     name=development
kube-flannel      Active   2d10h   k8s-app=flannel,pod-security.kubernetes.io/enforce=privileged
kube-node-lease   Active   2d10h   <none>
kube-public       Active   2d10h   <none>
kube-system       Active   2d10h   <none>
production        Active   22s     name=production
[root@k8s-01 chapter06]# cat namespace-prod.json 
{
  "apiVersion": "v1",
  "kind": "Namespace",
  "metadata": {
    "name": "production",
    "labels": {
      "name": "production"
    }
  }
}[root@k8s-01 chapter06]# cat namespace-dev.json 
{
  "apiVersion": "v1",
  "kind": "Namespace",
  "metadata": {
    "name": "development",
    "labels": {
      "name": "development"
    }
  }
}



访问kubernetes API的控制
2. 认证的三种类型
基本认证
基于证书的验证
基于OpenID Connect

3. 授权请求
如果Bob有以下策略,那么它可以读取projectCaribou名称空间的Pods
{
  "apiVersion": "abac.authorization.kuberneres.io/vibeta1",
  "kind": "Policy",
  "spec": {
      "user": "bob",
      "namespace": "projectCaribou",
      "resource": "pods",
      "readonly": true
  }
}



如果Bob发出以下请求,则请求将被授权,因为它可以读取projecctCaribou名称空间的对象。

准入控制(有这块功能,使用场景少)
允许控制模块是可以修改或拒绝请求的软件模块。除了授权模块可用的属性之外 ,允许控制模块还可以访问正在创建或更新的对象的内容。

飞天使-k8s基础组件分析-安全,kubernetes,安全,docker

RBAC的介绍
为了充分理解RBAC的思想,我们必须理解它包含的三个要素:
Subject
Resources
Verbs

人,资源,对资源有啥控制权限方向理解
verbs 有普通的角色和集群的角色

飞天使-k8s基础组件分析-安全,kubernetes,安全,docker

kubeconfig

Kubeconfig文件记录如何进行身份验证的详细信息。Kubectl使用这个配置文件来确定api服务器在何处及如何向api服务器发出请求。

Kubeconfig文件三个顶级结构:
用户
Cluster属性
Context
查看授权文件: cat ~/.kube/config 

有没有演示案例?
答:
[root@k8s-01 chapter06]# kubectl config set-credentials cluster-admin --username=admin --password=123456
User "cluster-admin" set.
[root@k8s-01 chapter06]# kubectl config set-credentials regular-user --username=user --password=654321
User "regular-user" set.

[root@k8s-01 chapter06]# kubectl config set-cluster cluster1 --server=https://192.168.1.1
Cluster "cluster1" set.
[root@k8s-01 chapter06]# kubectl config set-cluster cluster2 --server=https://192.168.1.2
Cluster "cluster2" set.
用户名和集群配置完毕

上下文将用户名和密码关联起来
[root@k8s-01 chapter06]# kubectl config set-context cluster-regular --cluster=cluster2 --user=regular-user
Context "cluster-regular" created.
[root@k8s-01 chapter06]# kubectl config set-context cluster-admin --cluster=cluster1 --user=cluster-admin
Context "cluster-admin" modified.


查看配置
root@k8s-01 chapter06]# kubectl config view
apiVersion: v1
clusters:
- cluster:
    server: https://192.168.1.1
  name: cluster1
- cluster:
    server: https://192.168.1.2
  name: cluster2
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://192.168.100.30:6443
  name: kubernetes
contexts:
- context:
    cluster: cluster1
    user: cluster-admin
  name: cluster-admin
- context:
    cluster: cluster2
    user: regular-user
  name: cluster-regular
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: cluster-admin
  user:
    password: "123456"
    username: admin
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
- name: regular-user
  user:
    password: "654321"
    username: user

切换上下文
[root@k8s-01 chapter06]# kubectl config use-context cluster-admin
Switched to context "cluster-admin".
[root@k8s-01 chapter06]# kubectl get pod
^C
切换到其他的上下文是没有内容的
[root@k8s-01 chapter06]# kubectl config use-context kubernetes-admin@kubernetes
Switched to context "kubernetes-admin@kubernetes".

如何删除用户?
kubectl config unset user.regular-user
kubectl config delete-context cluster-admin

飞天使-k8s基础组件分析-安全,kubernetes,安全,docker文章来源地址https://www.toymoban.com/news/detail-668728.html

用户的创建
此处实验做错了,可以参考,如果后续在大公司,人员多的情况下,在来复盘,小公司一般不需要
yum install -y openssl
openssl genrsa -out mike.key 2048
openssl req -new -key mike.key -out mike.csr -subj "/CN=mike/O=devs"

[root@k8s-01 keys]# openssl x509 -req -in mike.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out mike.crt -days 365
Signature ok
subject=/CN=mike/O=devs
Getting CA Private Key

查看集群配置信息 kubectl config view
[root@k8s-01 keys]# kubectl config set-cluster mike --certificate-authority=ca.crt --server=https://192.168.100.30:6443
Cluster "mike" set.

[root@k8s-01 keys]# kubectl config set-credentials mike --client-certificate=mike.crt --client-key=mike.key
User "mike" set.

[root@k8s-01 keys]# kubectl config set-context mike --cluster mike --user mike

集群默认角色
[root@k8s-01 keys]# kubectl describe clusterrole cluster-admin
Name:         cluster-admin
Labels:       kubernetes.io/bootstrapping=rbac-defaults
Annotations:  rbac.authorization.kubernetes.io/autoupdate: true
PolicyRule:
  Resources  Non-Resource URLs  Resource Names  Verbs
  ---------  -----------------  --------------  -----
  *.*        []                 []              [*]
             [*]                []              [*]

验证Mike的权限
# kubectl config use-context kubernetes-admin@kubernetes
# kubectl get all

其它的验证方法
# kubectl auth can-I get pods –-as mike

查看角色
# kubectl get roles

查看Clusterroles
# kubectl get clusterroles

View集群角色
# kubectl describe clusterrole view

Edit集群角色
# kubectl describe clusterrole edit

Admin集群角色
# kubectl describe clusterrole admin

cluster-admin
# kubectl describe clusterrole cluster-admin


创建角色绑定
# kubectl create rolebinding mike --clusterrole view –-user mike --namespace default --save-config
# kubectl get rolebindings

验证mike权限
# kubectl describe rolebinding mike
# kubectl --namespace kube-system describe rolebinding mike
# kubectl auth can-I get pods –-as mike
# kubectl auth can-I get pods --as mike --all-namespaces

删除角色绑定
# kubectl delete rolebinding mike

创建集群所有命名空间查看权限
创建集群角色绑定
# kubectl create –f crb-view.yml --record --save-config
# kubectl describe clusterrolebinding view

验证集群角色绑定
# kubectl auth can-I get pods –-as mike --all-namespaces 

创建指定命名空间管理权限
创建角色绑定
# kubectl create –f rb-dev.yml --record --save-config

验证权限
# kubectl --namespace dev auth can-I create deployments --as mike
# kubectl –-namespace dev auth can-I delete deployments --as mike
# kubectl --namespace dev auth can-I “*”“*” --as mike

创建指定名称空间超级管理权限
创建角色绑定
# kubectl create –f rb-mike.yml --record --save-config

测试权限
# kubectl –-namespace mike auth can-I \”*” “*” --as mike

创建自定义权限
 - 创建角色和绑定
# kubectl create –f crb-release-manager.yml --record --save-cconfig
# kubectl describe clusterrole release-manager

测试权限
# kubectl –-namespace default auth can-I “*” pods –-as mike
# kubectl –-namespace default auth can-I create deployments –-as mike
# kubectl –-namespace  default auth can-I delete deployments –-as mike



给组创建授权

创建一个用户,所属组devs
# openssl req –in keys/mike.csr –noout –subject subject=/CN=mike/O=devs

创建组绑定
# kubectl apply –f groups.yml –-record
# kubectl –-namespace dev auth can-I create deployments –-as mike

客户端执行
# kubectl config use-context mike
# kubectl –-namespace dev run new-db –-image mongo:3.3

针对pod配置服务账户

查看默认的服务帐户
# kubectl get pods/<podname> - yaml
# kubectl get serviceaccounts

创建服务帐户
# kubectl apply –f <<EOF
apiVersion: v1
Kind: ServiceAccount
Metadata: 
  name: build-robot
EOF

查看创建的服务帐户
# kubectl get serviceaccounts/build-robot –o yaml

删除服务帐户
# kubectl delete serviceaccount/build-robot


参考文档

https://edu.csdn.net/course/detail/27762

到了这里,关于飞天使-k8s基础组件分析-安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 飞天使-k8s基础组件分析-服务与ingress

    服务的介绍 服务代理 服务发现 连接集群外服务 服务发布 无头服务 服务,pod和dns的关系 端口转发 通过expose 暴露应用 服务案例 INGRESS MetalLB使用 参考文档

    2024年02月11日
    浏览(42)
  • 飞天使-k8s基础组件分析-配置和密钥管理

    configmap 详解 configmap 使用案例 secret k8s从私有库拉取镜像案例 参考文档

    2024年02月11日
    浏览(49)
  • 飞天使-k8s知识点21-kubernetes实操6-daemonset

    daemonset service endpoint pod 之间的关系 service 基于Service访问外部服务

    2024年02月22日
    浏览(48)
  • 飞天使-k8s知识点22-kubernetes实操7-ingress

    ingress 概念理解 环境准备 准备service和pod tomcat-nginx.yaml 创建ingress-http.yaml 验证效果 https 代理 创建证书 创建ingress-https.yaml 效果 查看映射到公网端口 参考文档: https://znunwm.top/archives/121212#7.4-ingress%E4%BB%8B%E7%BB%8D

    2024年02月22日
    浏览(44)
  • 飞天使-k8s知识点18-kubernetes实操3-pod的生命周期

    探针的生命周期 docker 创建:在创建阶段,你需要选择一个镜像来运行你的应用。这个镜像可以是公开的,如 Docker Hub 上的镜像,也可以是你自己创建的自定义镜像。创建自己的镜像通常需要编写一个 Dockerfile,这个文件定义了创建镜像所需的所有步骤,包括基础镜像、需要安

    2024年02月20日
    浏览(60)
  • 飞天使-k8s知识点17-kubernetes实操2-pod探针的使用

    探针的使用 容器探针启动实验1-启动探针的使用-startupprobe Liveness Probes 和 Readiness Probes 演示 若存在started.html 则进行

    2024年02月20日
    浏览(57)
  • 飞天使-k8s知识点12-kubernetes资源对象5-Volume与ConfigMap等

    为什么需要volume ConfigMap Volume nfs挂载volume 持久卷的痛点 参考文档: 作者:又拍云 链接:https://juejin.cn/post/7186925237592653884 来源:稀土掘金

    2024年01月18日
    浏览(52)
  • 飞天使-k8s知识点20-kubernetes实操5-pod更新与暂停-statefulset

    资源调度 Deployment:扩缩容 资源调度 Deployment:更新的暂停与恢复 资源调度 StatefulSet:定义一个有状态服务 headless service 金丝雀发布 参考文档:https://support.huaweicloud.com/basics-cce/kubernetes_0015.html

    2024年02月20日
    浏览(49)
  • 【云原生-K8s】Kubernetes安全组件CIS基准kube-beach安装及使用

    为了保证集群以及容器应用的安全,Kubernetes 提供了多种安全机制,限制容器的行为,减少容器和集群的攻击面,保证整个系统的安全性。 互联网安全中心(CIS,Center for Internet Security),是一个非盈利组织,致力为互联网提供免费的安全防御解决方案 官网 :https://www.cisecu

    2024年02月06日
    浏览(78)
  • kubernetes(k8s)大白学习02:容器和docker基础、使用、架构学习

    简单说:容器(container)就是计算机上的一个沙盒进程,它与计算机上的所有其它进程相隔离。 这种隔离是怎么做到的呢?它利用了内核提供的 namespace 和 cgroup 这 2 种技术。这些技术能力在 Linux 中已经存在了很长时间。而 Docker 或容器技术致力于将这些功能更易于使用和更

    2024年02月07日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包