k8s安全

举报
ming-1 发表于 2020/12/04 17:11:23 2020/12/04
【摘要】 k8s认证问题HTTP Token 认证:通过一个 Token 来识别合法用户 HTTP Token 的认证是用一个很长的特殊编码方式的并且难以被模仿的字符串 - Token 来表达客户的一 种方式。Token 是一个很长的很复杂的字符串,每一个 Token 对应一个用户名存储在 API Server 能访 问的文件中。当客户端发起 API 调用请求时,需要在 HTTP Header 里放入...

k8s认证问题

HTTP Token 认证:通过一个 Token 来识别合法用户 HTTP Token 的认证是用一个很长的特殊编码方式的并且难以被模仿的字符串 - Token 来表达客户的一 种方式。Token 是一个很长的很复杂的字符串,每一个 Token 对应一个用户名存储在 API Server 能访 问的文件中。当客户端发起 API 调用请求时,需要在 HTTP Header 里放入 Token

HTTP Base 认证:通过 用户名+密码 的方式认证 用户名+:+密码 用 BASE64 算法进行编码后的字符串放在 HTTP Request 中的 Heather Authorization 域里发送给服务端,服务端收到后进行编码,获取用户名及密码 最严格的 HTTPS 证书认证:基于 CA 根证书签名的客户端身份认证方式。

AAA.png

Controller Manager、Scheduler 与 API Server 在同一台机器,所以直接使用 API Server 的非安全端口访问。

kubectl、kubelet、kube-proxy 访问 API Server 就都需要证书进行 HTTPS 双向认证。

Pod调度

因Pod是动态调度的,所以Pod访问通过ServiceAccount进行。

默认情况下,每个 namespace 都会有一个 ServiceAccount,如果 Pod 在创建时没有指定 ServiceAccount, 就会使用 Pod 所属的 namespace 的 ServiceAccount。

查看pod的安全文件,默认目录如下:

/run/secrets/kubernetes.io/serviceaccount

不单独指定的话这三个目录为默认,可在describe中查看

XN0SN%8Q3{%X2W0`YZI[]HS.png

鉴权

鉴权是确定请求方有哪些资源的权 限。

API Server 目前支持以下几种授权策略 (通过 API Server 的启动参数 “--authorization-mode” 设置) AlwaysDeny:表示拒绝所有的请求,一般用于测试

AlwaysAllow:允许接收所有请求,如果集群不需要授权流程,则可以采用该策略

ABAC(Attribute-Based Access Control):基于属性的访问控制,表示使用用户配置的授权规则对用户 请求进行匹配和控制

Webbook:通过调用外部 REST 服务对用户进行授权

RBAC(Role-Based Access Control):基于角色的访问控制,现行默认规则

CCC.png

Kubenetes 并不会提供用户管理,那么 User、Group、ServiceAccount 指定的用户又是从哪里 来的呢? Kubenetes 组件(kubectl、kube-proxy)或是其他自定义的用户在向 CA 申请证书时,需要提供一个 证书请求文件.

{
       "CN": "admin",
        "hosts": [],
        "key": {
        "algo": "rsa",
        "size": 2048
},
           "names": [
{
             "C": "CN",
             "ST": "HangZhou",
             "L": "XS",
             "O": "system:masters",
             "OU": "System"
} 
]
}

API Server会把客户端证书的 CN 字段作为User,把 names.O 字段作为Group.

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。