当前位置: 首页 > news >正文

在CSDN学Golang云原生(Kubernetes集群安全)

一,ABAC授权模式

Kubernetes ABAC(Attribute-Based Access Control)授权模式是一种基于属性的访问控制模型,它可以根据用户或组的属性决定是否允许他们访问 Kubernetes 集群中的资源。

在使用 ABAC 授权模式时,管理员需要定义一些规则来限制哪些用户或组有权访问集群中的不同资源。这些规则通常包括一个或多个属性和一个操作,如“查看”、“创建”、“修改”或“删除”。

下面是一些示例规则:

{"apiVersion": "abac.authorization.kubernetes.io/v1beta1","kind": "Policy","spec": {"user": "admin","namespace": "*","resource": "*","readonly": true}
}

这个示例规则表示只有 admin 用户能够读取任何命名空间下的所有资源。

要启用 ABAC 授权模式,管理员必须在 kube-apiserver 的启动参数中添加 --authorization-mode=ABAC,并指定存储策略文件路径(通过 --authorization-policy-file 选项)。另外,还需在 kubelet 的启动参数中添加 --authorization-mode=ABAC 选项。

需要注意的是,在 Kubernetes v1.19 版本之后,已经弃用了 ABAC 授权模式,并且在将来的版本中将被移除。建议使用更安全、更灵活的 RBAC (Role-Based Access Control)或其他授权模式。

二,Webhook授权模式

Kubernetes Webhook 授权模式是一种基于 HTTP 回调的访问控制模型,它可以通过向外部 Web 服务发送请求来判断用户是否有权限访问 Kubernetes 集群中的资源。

在使用 Webhook 授权模式时,管理员需要定义一个 HTTP 回调 URL,然后将该 URL 注册到 Kubernetes API Server 中。当用户发起请求时,API Server 会将请求信息发送到该 URL 上,并等待一个命名为 "status" 的 JSON 对象作为响应。

Webhook 授权模式中的回调服务可以进行各种自定义逻辑来决定用户是否有权限访问集群中的资源。例如,它可以查询 LDAP 或 Active Directory 来获取用户组成员身份、检查 JWT token 签名或者从 RBAC 角色映射文件中读取策略。

下面是一个示例 webhook 配置:

apiVersion: v1
kind: ConfigMap
metadata:name: my-auth-config
data:authz.yaml: |clusterName: my-k8s-clusterendpoint: https://my-webhook-service-endpoint.com/authz-check

这个配置表明了 webhook 认证所需要的参数:集群名称和认证服务端点 URL。

要启用 Webhook 授权模式,管理员需要在 kube-apiserver 的启动参数中添加 --authorization-mode=Webhook,并指定配置文件路径(通过 --authorization-webhook-config-file 选项)。另外还需启动 webhook 容器并监听 API 请求。

三,RBAC授权模式

Kubernetes RBAC (Role-Based Access Control) 授权模式是一种基于角色和权限的访问控制模型,它可以对 Kubernetes 集群中的资源进行精细化的授权管理。

在使用 RBAC 授权模式时,管理员需要定义三种类型的对象:

  1. Role:角色,用来定义一组权限;
  2. RoleBinding:角色绑定,将一个角色与一个用户或用户组关联起来;
  3. ClusterRole:集群级别的角色,用来定义一组跨命名空间的权限;

然后就可以通过 Kubernetes API 来创建、更新和删除这些对象。例如,下面是一个简单的 RBAC 示例:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:name: read-podsnamespace: default
subjects:
- kind: User # 用户类型为 User 或 Group name: test-user # 要授权的用户名或用户组名 
roleRef:kind: Role # 角色类型为 Role 或 ClusterRole name: pod-reader # 要绑定到的角色名称 apiGroup: rbac.authorization.k8s.io

这个例子中创建了一个 PodReader 的角色,并将其绑定到了 test-user 用户上。该角色的权限是只读访问 Pods 资源,而且这个角色只能在 default 命名空间中使用。

要启用 RBAC 授权模式,管理员需要在 kube-apiserver 的启动参数中添加 --authorization-mode=RBAC。如果你使用的是 Kubernetes v1.6 及以上版本,则该参数默认已开启。

四,Pod的安全策略配置

Kubernetes 的 Pod 安全策略可以帮助我们提高集群的安全性。以下是一些常见的 Pod 安全策略配置:

  1. 禁止特权容器:特权容器是具有 Linux 的 root 权限和访问主机名字空间、网络名字空间等权限的容器。禁止使用特权容器可以有效地避免攻击者利用容器逃脱沙盒。
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:name: restrict-privilege
spec:privileged: falseallowPrivilegeEscalation: false
  1. 文件系统只读:将文件系统设置为只读,可以防止攻击者在运行时修改敏感信息或植入木马。
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:name: readonly-fs
spec:volumes:- configMap- downwardAPI- emptyDir- persistentVolumeClaim- projected - secret fsGroup:rule: RunAsAny # 继承宿主机用户组 runAsUser:rule: RunAsAny # 继承宿主机用户 seLinux:rule: RunAsAny # 继承宿主机 SELinux 标签 supplementalGroups:rule: MustRunAs # 必须以指定用户组运行 
  1. AppArmor 或 Seccomp:AppArmor 和 Seccomp 是两种 Linux 安全模块,它们可以限制容器的系统调用和文件系统访问权限。
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:name: restrict-apparmor-seccomp
spec:seLinux:rule: RunAsAny # 继承宿主机 SELinux 标签 supplementalGroups:rule: MustRunAs # 必须以指定用户组运行 volumes:- configMap- downwardAPI- emptyDir- persistentVolumeClaim allowedUnsafeSysctls:- "kernel.msg*"forbiddenSysctls:- "net.ipv4.ip_forward"

在配置完 Pod 安全策略后,需要创建一个 ClusterRoleBinding 对象来将该安全策略绑定到 ServiceAccount 上:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:name: psp-admin-binding
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRole name: psp-admin 
subjects:
- kind: ServiceAccount name: default namespace: default

这个例子中创建了一个名为 restrict-privilege 的 PodSecurityPolicy,并将其绑定到了默认的 ServiceAccount 上。这样,在使用该 ServiceAccount 创建 Pod 或 Deployment 时,就会自动应用这个安全策略。

相关文章:

在CSDN学Golang云原生(Kubernetes集群安全)

一,ABAC授权模式 Kubernetes ABAC(Attribute-Based Access Control)授权模式是一种基于属性的访问控制模型,它可以根据用户或组的属性决定是否允许他们访问 Kubernetes 集群中的资源。 在使用 ABAC 授权模式时,管理员…...

浅谈深度神经网络

Deep neural networks are completely flexible by design, and there really are no fixed rules when it comes to model architecture. -- David Foster 前言 神经网络 (neural network) 受到人脑的启发,可模仿生物神经元相互传递信号。神经网络就是由神经元组成…...

『C语言初阶』第六章-操作符详解

前言 今天小羊又来为铁汁们更新C语言初阶的操作符详解,我们在平时写代码时总会写到一些算术操作符和赋值操作符,可是当铁汁们遇到其他的操作符时,就会望而却步,甚至写出一些bug,所以这期我给铁汁们带来新鲜出炉的操作…...

企业知识文档管理+群晖nas安全云存储

企业知识管理系统,利用软件系统或其他工具的企业管理方法,利用软件系统或其他工具,对组织中大量的有价值的方案、策划、成果、经验等知识进行分类存储和管理,积累知识资产避免流失,促进知识的学习、共享、培训、再利用…...

​《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(9)-Fiddler如何设置捕获Https会话​

1.简介 由于近几年来各大网站越来越注重安全性都改成了https协议,不像前十几年前直接是http协议直接裸奔在互联网。还有的小伙伴或者童鞋们按照上一篇宏哥的配置都配置好了,想大展身手抓一下百度的包,结果一试傻眼了,竟然毛都没有…...

对比CahtGPT Bard Claude2对中文的理解

对比CahtGPT Bard Claude2对中文的理解 今天简单测试了一下目前这三个很火的模型对中文的理解能力 简单问题 鲁迅和周树人的关系 Bard CahtGPT Claude 介绍一下平凡的世界这本书 Bard CahtGPT...

安全测试国家标准解读——并发程序安全

本系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理&#xff…...

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(12)-Fiddler设置IOS手机抓包,你知多少???

1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler 能捕获Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。同理也可以截获iOS设备发出的请求,比如 iPhone、iPad 和 MacBook 等苹…...

MySQL中锁的简介——行级锁

1.行级锁概念及分类 可通过以下语句查看意向锁和行锁的加锁情况: select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据&#xff0…...

4 个最常见的自动化测试挑战及应对措施

有人说:“杂乱无章的自动化只会带来更快的混乱。”不仅更快,而且是更严重、更大的混乱。如果使用得当,自动化可以成为测试团队中令人惊叹的生产力助推器和系统的质量增强器。自动化测试的关键是要正确运用,这是初始最困难的部分。…...

23款奔驰GLE450豪华型升级AMG直瀑式中网,战斗感立马提升了一个档次

奔驰GLE450豪华型升级AMG竖杠中网前进气格栅,AMG中网竖杠格栅,镀铬饰条呈圆弧状,色泽均衡,质感顺滑,极富冲击力。AMG专属字标,与中网卡扣装配紧密,凸显AMG的身份象征,点睛之笔又不显…...

ALLEGRO之Logic

本文主要讲述ALLEGRO的Logic菜单。 (1)Net Logic:暂不清楚; (2)Net Schedule:暂不清楚; (3)AssignDifferential Pair:暂不清楚; &a…...

算法leetcode|64. 最小路径和(rust重拳出击)

文章目录 64. 最小路径和:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 64. 最小路径和: 给定一个包含非负整数的 m x n 网…...

css---实现文本超过两行时显示省略号(...)的效果

可以使用CSS中的text-overflow属性配合-webkit-line-clamp属性来实现。以下是一种常见的方式: .text-container {overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2; /* 设置最大显示行数 */-webkit-box-orient: vertical;text-overflow: ellipsis; }在…...

30-使用RocketMQ做削峰处理

1、增加排队功能的思路 在出票模块里,一个消费者拿到了某个车次锁,则该车次下所有的票都由他来出,一张一张的出,知道所有的订单都出完。 2、实现排队出票功能 2.1、 修改发送到MQ消息的内容 修改MQ消息内容,只需要通知出哪天和哪个车次的票(即:组成锁的内容),不需要…...

如何用非root账号安装k8s集群

在大多数情况下,为了安装 Kubernetes(K8s)集群,需要具有root权限或者以root身份执行某些操作,例如安装软件包和配置系统级别的设置。然而,你可以通过以下方法在非root账号下安装K8s集群: 使用Mi…...

windows环境安装elasticsearch+kibana并完成JAVA客户端查询

下载elasticsearch和kibana安装包 原文连接:https://juejin.cn/post/7261262567304298554 elasticsearch官网下载比较慢,有时还打不开,可以通过https://elasticsearch.cn/download/下载,先找到对应的版本,最好使用迅…...

高精度算法

基础模板: (411条消息) 高精度加法_会笑的小熊的博客-CSDN博客 (411条消息) 高精度乘法_会笑的小熊的博客-CSDN博客 (411条消息) 高精度减法_会笑的小熊的博客-CSDN博客 目录 P1601 AB Problem(高精) P1303 A*B Problem P1009 [NOIP1998 普…...

DragGAN:用崭新的方式进行图像处理

该项目的论文被SIGGRAPH 2023 收录,论文以 StyleGAN2 架构为基础,实现了 “Drag” 关键点就能轻松 P 图的效果。 https://github.com/XingangPan/DragGAN https://vcai.mpi-inf.mpg.de/projects/DragGAN/ 目录 原图1测试一测试二测试三 原图2测试一测试…...

语音播放 linux

调整语音音量大小 pactl list sinks pactl set-sink-volume 15 12345 # 15可以改成别的id安装pip install pyttsx3 sudo apt-get update sudo apt-get install espeak sudo ldconfig pip3 install pyttsx3代码 import pyttsx3 import threading def speak_work(text):engine…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...