返回顶部
首页 > 资讯 > 操作系统 >飞天使-k8s基础组件分析-安全
  • 446
分享到

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

kubernetes安全docker 2023-08-30 10:08:37 446人浏览 安东尼
摘要

文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥? 答:集群中每

名称空间解释

名字是啥? 答:集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有一个唯一的UID.名称空间是啥? 答:名称空间将集群划分为多个领域什么时候使用?答: 企业中有多人使用时候,可以进行权限管控怎么查看?答:看输出 是false 还是 true kubectl api-resources --namespace=falsekubectl api-resources --namespace=true名称空间和dns的关系? 答: 创建服务时,它将创建相应的DNS条目,这个条目的形式是..svc.cluster.local上面的namespace-name 是啥就是啥默认的名称空间?答:[root@k8s-01 ~]# kubectl get namespaceNAME              STATUS   AGEdefault           Active   2d10hkube-flannel      Active   2d10hkube-node-lease   Active   2d10hkube-public       Active   2d10hkube-system       Active   2d10h[root@k8s-01 ~]# kubectl get nsNAME              STATUS   AGEdefault           Active   2d10h kube-flannel      Active   2d10hkube-node-lease   Active   2d10hkube-public       Active   2d10h # 保留给集群使用,保持基本使用kube-system       Active   2d10h  #管理相关的组件 kubectl get pod -n kube-system kubectl describe -n kube-system如何新增一个名称空间答:如下命令[root@k8s-01 ~]# kubectl create ns devnamespace/dev created[root@k8s-01 ~]# kubectl  get nsNAME              STATUS   AGEdefault           Active   2d10hdev               Active   6skube-flannel      Active   2d10hkube-node-lease   Active   2d10hkube-public       Active   2d10hkube-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 nsNAME              STATUS   AGEdefault           Active   2d10hdevelopment       Active   17skube-flannel      Active   2d10hkube-node-lease   Active   2d10hkube-public       Active   2d10hkube-system       Active   2d10hproduction        Active   4s[root@k8s-01 chapter06]# kubectl get ns --show-labelsNAME              STATUS   AGE     LABELSdefault           Active   2d10h   development       Active   35s     name=developmentkube-flannel      Active   2d10h   k8s-app=flannel,pod-security.kubernetes.io/enforce=privilegedkube-node-lease   Active   2d10h   kube-public       Active   2d10h   kube-system       Active   2d10h   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 Connect3. 授权请求如果Bob有以下策略,那么它可以读取projectCaribou名称空间的Pods{  "apiVersion": "abac.authorization.kuberneres.io/vibeta1",  "kind": "Policy",  "spec": {      "user": "bob",      "namespace": "projectCaribou",      "resource": "pods",      "readonly": true  }}如果Bob发出以下请求,则请求将被授权,因为它可以读取projecctCaribou名称空间的对象。准入控制(有这块功能,使用场景少)允许控制模块是可以修改或拒绝请求的软件模块。除了授权模块可用的属性之外 ,允许控制模块还可以访问正在创建或更新的对象的内容。

在这里插入图片描述

RBAC的介绍

为了充分理解RBAC的思想,我们必须理解它包含的三个要素:SubjectResourcesVerbs人,资源,对资源有啥控制权限方向理解verbs 有普通的角色和集群的角色

在这里插入图片描述

kubeconfig

Kubeconfig文件记录如何进行身份验证的详细信息。Kubectl使用这个配置文件来确定api服务器在何处及如何向api服务器发出请求。Kubeconfig文件三个顶级结构:用户Cluster属性Context查看授权文件: cat ~/.kube/config 有没有演示案例?答:[root@k8s-01 chapter06]# kubectl config set-credentials cluster-admin --username=admin --passWord=123456User "cluster-admin" set.[root@k8s-01 chapter06]# kubectl config set-credentials regular-user --username=user --password=654321User "regular-user" set.[root@k8s-01 chapter06]# kubectl config set-cluster cluster1 --server=https://192.168.1.1Cluster "cluster1" set.[root@k8s-01 chapter06]# kubectl config set-cluster cluster2 --server=Https://192.168.1.2Cluster "cluster2" set.用户名和集群配置完毕上下文将用户名和密码关联起来[root@k8s-01 chapter06]# kubectl config set-context cluster-regular --cluster=cluster2 --user=regular-userContext "cluster-regular" created.[root@k8s-01 chapter06]# kubectl config set-context cluster-admin --cluster=cluster1 --user=cluster-adminContext "cluster-admin" modified.查看配置root@k8s-01 chapter06]# kubectl config viewapiVersion: v1clusters:- 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: kubernetescontexts:- 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@kubernetescurrent-context: kubernetes-admin@kuberneteskind: Configpreferences: {}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-adminSwitched to context "cluster-admin".[root@k8s-01 chapter06]# kubectl get pod^C切换到其他的上下文是没有内容的[root@k8s-01 chapter06]# kubectl config use-context kubernetes-admin@kubernetesSwitched to context "kubernetes-admin@kubernetes".如何删除用户?kubectl config unset user.regular-userkubectl config delete-context cluster-admin

在这里插入图片描述

用户的创建

此处实验做错了,可以参考,如果后续在大公司,人员多的情况下,在来复盘,小公司一般不需要yum install -y opensslopenssl genrsa -out mike.key 2048openssl 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 365Signature oksubject=/CN=mike/O=devsGetting 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:6443Cluster "mike" set.[root@k8s-01 keys]# kubectl config set-credentials mike --client-certificate=mike.crt --client-key=mike.keyUser "mike" set.[root@k8s-01 keys]# kubectl config set-context mike --cluster mike --user mike

集群默认角色

[root@k8s-01 keys]# kubectl describe clusterrole cluster-adminName:         cluster-adminLabels:       kubernetes.io/bootstrapping=rbac-defaultsAnnotations:  rbac.authorization.kubernetes.io/autoupdate: truePolicyRule:  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 clusterrolesView集群角色# kubectl describe clusterrole viewEdit集群角色# kubectl describe clusterrole editAdmin集群角色# kubectl describe clusterrole admincluster-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/ - yaml# kubectl get serviceaccounts创建服务帐户# kubectl apply –f <

参考文档

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

来源地址:https://blog.csdn.net/startfefesfe/article/details/132458782

--结束END--

本文标题: 飞天使-k8s基础组件分析-安全

本文链接: https://lsjlt.com/news/382518.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 飞天使-k8s基础组件分析-安全
    文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥? 答:集群中每...
    99+
    2023-08-30
    kubernetes 安全 docker
  • Dubbo Service Mesh基础架构组件源码分析
    这篇文章主要讲解了“Dubbo Service Mesh基础架构组件源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Dubbo Service ...
    99+
    2023-07-05
  • 【移动安全】—apk反编译基础及静态分析
    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:一切为了她座右铭:不要让时代的悲哀成为你的悲哀专研方向:网络安全,数据结构 每日emo:ctf被大佬吊打的一天,裂开   目录 一、常见术语 1、APK文件  2...
    99+
    2023-08-31
    android linux 网络安全
  • Linux基础优化与安全归纳的示例分析
    这篇文章主要介绍Linux基础优化与安全归纳的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!               &nb...
    99+
    2023-06-05
  • 云服务器ecs基础概念安全组件是什么
    云服务器ECS基础概念安全组件通常是一个软件组件,用于保护云服务器的应用程序和数据。其中,基础概念安全组件是安全性管理系统(BSM)的核心模块,可以帮助安全团队识别和管理云服务器环境中的安全漏洞、威胁和风险。 在云服务器ECS基础概念安全...
    99+
    2023-10-26
    组件 概念 服务器
  • ES6基础语法之数组的使用实例分析
    这篇文章主要介绍了ES6基础语法之数组的使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之数组的使用实例分析文章都会有所收获,下面我们一起来看看吧。一、Array.of()将参数中所有值...
    99+
    2023-06-30
  • 云服务器ecs基础概念安全组件是什么样的
    首先,安全组件是云服务器中最基本的组件之一。它是一种防御机制,用于识别和防止恶意攻击和威胁。安全组件通常包括以下功能: 端口安全:确保云服务器ECS实例可以接受所有网络流量,并防止来自内部或外部的恶意流量攻击。 认证和授权:安全组件需要...
    99+
    2023-10-27
    组件 概念 服务器
  • HDFS基础配置安装及命令使用的示例分析
    小编给大家分享一下HDFS基础配置安装及命令使用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!HDFS是基于Java的文件系统,可在Hadoop生态系统中提供可扩展且可靠的数据存储。因此,我们需要了解基本的HDF...
    99+
    2023-06-02
  • 如何使用CentOS系统的日志记录功能来分析安全事件
    要使用CentOS系统的日志记录功能来分析安全事件,可以按照以下步骤进行操作:1. 确认日志位置:在CentOS系统中,常见的安全相...
    99+
    2023-10-10
    CentOS
  • 报错 “代理XP“组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用sp_configure来 启用“代理XP”。
    背景: 想为 SQL Server 数据库设置自动备份,点击维护计划向导的时候报错 “代理XP"组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用sp_configure来启用"代理XP”。有关启用"代理XP"的详细信息,请参...
    99+
    2023-08-19
    服务器 数据库 sqlserver
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作