本博客地址:https://security.blog.csdn.net/article/details/130793290
一、平台安全使用规范
平台安全使用规范主要是规定平台层(包括主机、Kubernetes集群)的用户和文件权限及Kubernetes平台配置和使用规则。
如下所示:
类别 | 说明 |
---|---|
用户权限相关 | • 不能使用root账号执行命令 • 平台中需配置密码复杂度策略 • 平台中需配置密码更改周期 • root需禁用密码方式登录,改用证书方式登录 |
文件权限相关 | • 应用可执行程序不能以root身份启动 • 平台中关键位置需设置不可修改位 • 除非必要情况,文件的可执行权限位不可设置为SUID权限 |
容器平台配置相关 | • kube-apiserver启用安全认证策略,屏蔽匿名访问 • kube-apiserver需关闭AlwaysAllow和AlwaysAdmin配置 • etcd需开启数据加密和TLS访问认证 • 单个主机节点中的kubelet进程需开启CA认证 • 主机节点上的kubelet进程需关闭只读接口 • 需启用RBAC访问 |
二、容器镜像安全规范
容器镜像安全规范主要是规定应用镜像打包规范,约束使用的基础镜像以及基础镜像的使用方法。
如下所示:
● 只能使用指定的容器基础镜像(如alpine的固定版本)
● Dockerfile中不能包含敏感信息(比如密码等)
● 需通过USER命令指定容器进程的启动用户,不能以默认的root身份启动
● 镜像不能挂载包括/etc、/bin、/root等路径在内的系统关键路径
● 发布的镜像需通过镜像扫描平台进行安全扫描
● 非特殊情况,不允许在基础镜像的基础上再下载扩展软件包
● 某些情况下,安装扩展软件包时,去除无用的附属文件(如debug工具、帮助文件等)
三、云原生应用安全规范
云原生应用安全规范主要是规定Pod的定义规则、namespace的隔离规则以及各应用之间的访问规则;还包括应用在架构上的安全定义规则。
如下所示:
类别 | 说明 |
---|---|
应用中间件 | • 使用云服务中间件 • 为云服务中间件添加访问密码设置,对通信流量进行加密 • 对中间件启用外网隔离 |
应用架构实现 | • 防范常见的应用配置漏洞,比如关闭XML外部实体解析 • 在应用层实现中,不能使用SQL拼接 • 应用接口实现方法中,需要对参数长度和参数字符进行检查判断 • 对Web头部进行Token校验 • Token需设置有效期 • Web对外接口需使用HTTPS连接 |
Pod 配置和容器间隔离 | • 业务应用需运行在自定义的namespace中,不能部署和运行在Kubernetes的默认namespace (包括 default、kube-system 等)中 • 需为namespace启用网络策略 • Pod定义中需包含SecurityContext声明,SecurityContext部分需指定Pod运行的用户,用户组。不能使用root账户运行 Pod • Pod声明中需包含seLinuxOptions • 业务应用Pod不能以特权模式运行 • 集群角色中需绑定Pod安全策略,在Pod安全策略中配置角色运行执行的动作以及可以操作的资源范围和列表 • Pod需配置ready检查策略和健康检查策略,需配资源使用的request和limit值 |
四、安全审计规范
安全审计规范主要是规定应用的操作日志、与安全相关的运行日志及运行事件的输出规范。
如下所示:
● 用户对资源的操作和管理需记录操作日志,操作日志的信息字段需记录操作源IP等关键字段
● Web层接口的调用入口及出口需记录调用日志,调用日志的级别需为WARN。调用日志需标记出调用时间、输入参数和能够标记调用用户的字段信息
● 应用日志中不能输出用户的隐私信息(比如用户密码等)
● 应用日志需对应用异常情况进行捕获,并输出应用运行的整体情况日志,如在线程池满的时候,输出线程总数及请求队列的统计信息
● 需开启kube-apiserver审计,记录平台的事件信息
最后,应在DevSecOps流水线中配置自动化的安全规范检查机制,将安全的检查工作融入日常的开发流程中,利用云平台的自动化机制来实现自动化的持续安全。