首页 > 其他分享 >基础网络安全-K8S之网络策略Network policy与RBAC

基础网络安全-K8S之网络策略Network policy与RBAC

时间:2024-10-04 19:22:55浏览次数:10  
标签:master1 Network user1 -- kubeconfig RBAC policy k8s root

一、网络策略Network Policy

      默认情况下,k8s集群网络没有任何网络限制,Pod可以与任何其他Pod通信,此时为了减少网络风险暴露面,防止Pod被失陷后进行横向的移动,可通过网络策略(NetworkPolicy)进行控制,网络策略是K8S的一个资源,可用于限制Pod出入流量,提供pod级别和Namespace级别网络访问控制。类似于在路由器上配置访问控制列表,支持方向、源目的段、namespace选择器、pod选择器、端口、协议。Flannel不支持,需要calico网络。

基础网络安全-K8S之网络策略Network policy与RBAC_Adminssion Control

进入到名字为web的Pod中去:

基础网络安全-K8S之网络策略Network policy与RBAC_K8S认证_02

Web的IP地址为10.244.1.5,网关地址为10.244.1.1,也即是worker2上CNI0的IP地址:

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_03

Worker2:

基础网络安全-K8S之网络策略Network policy与RBAC_RBAC_04

在web 这个pod中ping nginxdemo的IP地址10.244.0.6:

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_05

在web这个Pod中ping 10.244.1.1

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_06

在web这个pod中ping node的eth0接口IP地址:

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_07

通过以上测试说明在缺省情况下,对于一个Pod其出入是没有做任何限制的。

由于我使用的网络插件是flannel,flannel不支持networkpolicy,这里不再做测试,具体可以参考k8s官网:https://kubernetes.io/docs/concepts/services-networking/network-policies/。如下为官网的一个示例。

基础网络安全-K8S之网络策略Network policy与RBAC_RBAC_08

二、基于角色的访问控制RBAC

       RBAC是基于权限的访问控制,K8S将用户的权限进行了细粒度的管控,K8S的资源对象可以按照组或者角色进行划分,对资源的操作类型包括get、list、watch、delete、create等。访问K8S的主体包括通过命令行使用kubectl命令行访问的管理员,也包括通过Pod使用SA(serviceAccount)账号发起的应用,如下:

基础网络安全-K8S之网络策略Network policy与RBAC_RBAC_09

1、 客户端身份认证

在K8S中ApiServer提供了三种客户端身份认证,具体如下:

(1)     HTTPS证书认证:通过数字证书来认证用户(kubeconfig)

(2)     HTTP Token认证:通过Token来标识认证用户,如ServiceAccount

(3)     HTTP Base认证:通过用户名、密码的方式进行认证,已经在1.19版本弃用

2、 授权检查的维度

(1)     用户

(2)     用户组

(3)     资源对象:node、svc……

(4)     资源操作方法:get、list、watch、delete、create、update、patch

(5)     命名空间

(6)     API组

3、 准入控制

       Admission Control是准入控制的插件列表,所有访问API Server的请求都需要经过该插件的检查,只有检查通过才会放行请求。常见的准入控制插件包括NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, RuntimeClass, ResourceQuota,

[root@k8s-master1 bin]# kube-apiserver -h | grep enable-admission-plugins

下面演示用户通过证书访问K8S,并分配查看pod的权限的操作过程:

4、 用户证书签发

通过证书认证有两个重要的字段,分别对应了用户及用户组:

(1)     CommanName(CN):在认证时,将作为用户User

(2)     Organization(O):在认证时,将作为用户组group

这里我将创建一个user1,为user1颁发证书:

[root@k8s-master1 k8s]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes user1-csr.json | cfssljson -bare user1

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_10

[root@k8s-master1 pki]# openssl x509 -in user1.pem -noout –text

基础网络安全-K8S之网络策略Network policy与RBAC_K8S认证_11

5、 创建kubeconfig

[root@k8s-master1 pki]# cat kubeconfig.sh

kubectl config set-cluster kubernetes --certificate-authority=/home/user1/pki/ca.pem --embed-certs=true --server=https://192.168.2.151:6443 --kubeconfig=user1.kubeconfig

kubectl config set-credentials user1 --client-key=user1-key.pem --client-certificate=user1.pem --embed-certs=true --kubeconfig=user1.kubeconfig

kubectl config set-context kubernetes --cluster=kubernetes --user=user1 --kubeconfig=user1.kubeconfig

kubectl config use-context kubernetes --kubeconfig=user1.kubeconfig

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_12

生成的user1.kubeconfig文件内容如下:

基础网络安全-K8S之网络策略Network policy与RBAC_Adminssion Control_13

使用生成的user1.kubeconfig文件访问pod:

[root@k8s-master1 pki]# kubectl get pods --kubeconfig=user1.kubeconfig

Error from server (Forbidden): pods is forbidden: User "user1" cannot list resource "pods" in API group "" in the namespace "defaul

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_14

6、 创建RBAC策略,为user1分配查看pod的权限:

通过apiGroups指定API接口、通过resources指定K8S的资源对象、通过verbs指定操作的类型;在RoleBinding中通过subjects中的name指定用户user,通过roleRef中的name指定角色,然后即实现了用户与角色的绑定:

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_15

通过create执行RBAC策略:

kubectl create -f rbac-user1.yaml

通过—kubeconfig参数指定kubeconfig文件:

[root@k8s-master1 pki]# kubectl get pods --kubeconfig=user1.kubeconfig

NAME                          READY   STATUS    RESTARTS   AGE

nginxdemo-75c5ffcc9c-7x4wl    1/1     Running   0          39d

nginxdemo-75c5ffcc9c-j6ljb    1/1     Running   0          46d

nginxdemo1-58bff5ffd6-h8pm5   1/1     Running   0          39d

web-7f8f4959cd-jjs5w          1/1     Running   0          20d

基础网络安全-K8S之网络策略Network policy与RBAC_K8S认证_16

现在user1拥有了查看pod的权限,但是无service查看的权限:

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_17

[root@k8s-master1 pki]# kubectl get clusterrolebinding -A -o wide

[root@k8s-master1 pki]# kubectl get role -o wide

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_18

[root@k8s-master1 pki]# kubectl get rolebindings -A -o wide

基础网络安全-K8S之网络策略Network policy与RBAC_Network Policy_19

[root@k8s-master1 pki]# kubectl describe rolebindings read-pods

基础网络安全-K8S之网络策略Network policy与RBAC_Adminssion Control_20

 

标签:master1,Network,user1,--,kubeconfig,RBAC,policy,k8s,root
From: https://blog.51cto.com/u_9652359/12171423

相关文章

  • Cisco Secure Network Analytics 7.5.1 发布下载,新增功能概览
    CiscoSecureNetworkAnalytics7.5.1发布下载,新增功能概览CiscoSecureNetworkAnalytics7.5.1-领先的网络检测和响应(NDR)解决方案SecureNetworkAnalytics(formerlyStealthwatch)-NetworkVisibilityandSegmentation请访问原文链接:https://sysin.org/blog/ci......
  • Cisco Secure Network Analytics 7.5.1 - 领先的网络检测和响应 (NDR) 解决方案
    CiscoSecureNetworkAnalytics7.5.1-领先的网络检测和响应(NDR)解决方案SecureNetworkAnalytics(formerlyStealthwatch)-NetworkVisibilityandSegmentation请访问原文链接:https://sysin.org/blog/cisco-secure-network-analytics/,查看最新版。原创作品,转载请保......
  • Centos Linux下配置网络组Network Teaming(待完善)
    待完善[root@sre01~]#nmcliconnectionaddtypeteamcon-nameteam0ifnameteam0config'{"runner":{"name":"loadbalance"}}'ipv4.addresses15.15.15.15/24ipv4.methodmanualConnection'team0'(57b44a77-63ae-......
  • 【深度学习基础模型】卷积神经网络(Convolutional Neural Networks, CNN)详细理解并附实
    【深度学习基础模型】卷积神经网络(ConvolutionalNeuralNetworks,CNN)详细理解并附实现代码。【深度学习基础模型】卷积神经网络(ConvolutionalNeuralNetworks,CNN)详细理解并附实现代码。文章目录【深度学习基础模型】卷积神经网络(ConvolutionalNeuralNetworks,......
  • Linux: network: /proc/net/sockstat 解读
    怎么解读:sockets:used333833TCP:inuse18017orphan0tw2alloc333609mem232518ChatGPT这些数据是关于系统网络套接字使用情况的统计信息。下面是各项的解释:sockets:used333833:当前系统正在使用的套接字总数为333,833。TCP:inuse18017:表示当前有18,017......
  • ELEC5517: Software Defined Networks
    ELEC5517:SoftwareDefinedNetworksProjectIIwithONOScontrollerandP4languageBackgroundConsideringacompanyisdevelopinganetworktopology,andwearegoingtosimulatethedeployment.Thiscompanyhasthreedepartments,andeachdepartment......
  • 若依框架中的RBAC权限控制
    若依使用springsecurity实现RBAC权限控制,前端部分我们就不探讨,我们主要说明的是后端部分。我们从用户登录到访问资源这一步骤来讲解。1.定义角色和权限首先,你需要定义你的角色和权限。例如,假设你有以下角色和权限:角色:ADMINUSER权限:READ_PRIVILEGESWRITE_PRIVILEGES2......
  • [GAN][图片异常检测]Unsupervised Anomaly Detection withGenerative Adversarial Net
    论文背景与目标:    本文旨在将GAN运用到图片异常检测中,并取得了一定的效果,该模型不仅能够检测已知的异常,还能够发现未曾标注的新异常。提出了结合GAN的生成和判别功能的新型异常评分方法。在无监督的前提下实现了异常图像的分割。通过利用GAN的潜在空间,提出了新的......
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.5-2.
    目录第四门课卷积神经网络(ConvolutionalNeuralNetworks)第二周深度卷积网络:实例探究(Deepconvolutionalmodels:casestudies)2.5网络中的网络以及1×1卷积(NetworkinNetworkand1×1convolutions)2.6谷歌Inception网络简介(Inceptionnetworkmotivation)......
  • YOLOv8改进 - 注意力篇 - 引入(A2-Nets)Double Attention Networks注意力机制
    一、本文介绍作为入门性篇章,这里介绍了A2-Nets网络注意力在YOLOv8中的使用。包含A2-Nets原理分析,A2-Nets的代码、A2-Nets的使用方法、以及添加以后的yaml文件及运行记录。二、A2-Nets原理分析A2-Nets官方论文地址:A2-Nets文章A2-Nets注意力机制(双重注意力机制):它从输入图......