Kubernetes Pod Security Policies详解

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: Kubernetes Pod Security Policies详解

文章目录

1. 版本

功能状态: Kubernetes v1.21 [deprecated]

PodSecurityPolicyKubernetes v1.21 起已弃用,并将在 v1.25 中删除。

Pod 安全策略启用对 Pod 创建和更新的细粒度授权

2. 介绍

PodSecurityPolicy对象定义一组条件,一个pod必须以被接受进入系统,以及用于相关字段默认值运行。它们允许管理员控制以下内容:

1670927391949.png

Pod 安全策略控制作为可选(但推荐)的 准入控制器实现。PodSecurityPolicies 是通过启用准入控制器来强制执行的,但是在没有授权任何策略的情况下这样做会阻止在集群中创建任何 pod。


由于 Pod 安全策略 API ( policy/v1beta1/podsecuritypolicy) 是独立于准入控制器启用的,对于现有集群,建议在启用准入控制器之前添加和授权策略。

3. 授权政策

创建 PodSecurityPolicy 资源时,它什么都不做。为了使用它,请求用户或目标 Pod 的服务帐户必须被授权使用该策略,方法是允许use策略上的动词。


大多数 Kubernetes pod 不是由用户直接创建的。相反,它们通常作为Deployment、 ReplicaSet或其他模板化控制器的一部分通过控制器管理器间接创建 。授予控制器访问策略的权限将授予该控制器创建的所有pod 的访问权限,因此授权策略的首选方法是授予对 pod 服务帐户的访问权限

3.1 通过 RBAC

RBAC是一种标准的 Kubernetes 授权模式,可以很容易地用于授权使用策略。

首先, a RoleorClusterRole需要授予use对所需策略的访问权限。授予访问权限的规则如下所示:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: <role name>
rules:
- apiGroups: ['policy']
  resources: ['podsecuritypolicies']
  verbs:     ['use']
  resourceNames:
  - <list of policies to authorize>

然后(Cluster)Role绑定到授权用户:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: <binding name>
roleRef:
  kind: ClusterRole
  name: <role name>
  apiGroup: rbac.authorization.k8s.io
subjects:
# Authorize specific service accounts:
- kind: ServiceAccount
  name: <authorized service account name>
  namespace: <authorized pod namespace>
# Authorize specific users (not recommended):
- kind: User
  apiGroup: rbac.authorization.k8s.io
  name: <authorized user name>

如果使用 a RoleBinding(不是 a ClusterRoleBinding),它只会授予在与绑定相同的命名空间中运行的 pod 的使用权。这可以与系统组配对以授予对在命名空间中运行的所有 pod 的访问权限:


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
30天前
|
Kubernetes API 调度
k8s中节点无法启动Pod
【10月更文挑战第3天】
73 6
|
2天前
|
Kubernetes Nacos 微服务
探讨了在Kubernetes中使用Nacos v2.2.3时,强制删除Pod后Pod仍存在的常见问题
本文深入探讨了在Kubernetes中使用Nacos v2.2.3时,强制删除Pod后Pod仍存在的常见问题。通过检查Pod状态、事件、配置,调整Nacos和Kubernetes设置,以及手动干预等步骤,帮助开发者快速定位并解决问题,确保服务稳定运行。
13 2
|
1月前
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
30天前
|
存储 Kubernetes Perl
K8S中Pod启动异常
【10月更文挑战第3天】
64 2
|
1月前
|
应用服务中间件 调度 nginx
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
|
1月前
|
Kubernetes API 调度
k8s学习--pod的所有状态详解(图例展示)
k8s学习--pod的所有状态详解(图例展示)
116 1
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
|
1月前
|
JSON Kubernetes API
在K8S中,什么是静态Pod?
在K8S中,什么是静态Pod?
|
1月前
|
Kubernetes 应用服务中间件 调度
k8s的Pod常见的几种调度形式
k8s的Pod常见的几种调度形式
23 0
|
1月前
|
Kubernetes 固态存储 调度
k8s学习--如何控制pod调度的位置
k8s学习--如何控制pod调度的位置