Node Metadata Protection--节点的元数据保护

Node Metadata  Protection--节点的元数据保护

1. 关于元数据

kubernets集群不管是运行与公有云还是私有云,都是有些元数据的资源的各种各样的标签。比如镜像id,网络设备id,硬盘的唯一id等。

2. 举一个例子

2.1 cloud platform node metadata 云平台节点元数据

  1. 拿谷歌云和亚马逊云来说
  2. 默认的情况下可以从虚拟机vm(云主机)访问元数据服务的api
  3. 元数据中保护有vm节点(云主机)的各种凭据信息。如网络id,镜像id vpcid.硬盘等待各种相关信息。具体详细度要看云商平台或者私有云架构
  4. 可以包含诸如kubelet凭证之类的置备数据

Node Metadata  Protection--节点的元数据保护

2.2 access sensitive node metadta 访问敏感节点元数据的原则

2.2.1 最常说的权限控制原则

  1. Limitat permissions for instance credentials 权限最小化原则。
  2. 确保cloud-instance-account仅具有必要的权限
  3. 每个云提供商都应遵循一系列建议
  4. 权限控制不在kubernetes中

Node Metadata  Protection--节点的元数据保护

3. restrict access using networkpolicies 使用网络策略限制访问

Node Metadata  Protection--节点的元数据保护

3.1 限制访问云商的元数据

Node Metadata  Protection--节点的元数据保护
由于没有谷歌云拿腾讯云意淫下了,可能理解的不是很对。往指教:
翻了下腾讯云的文档关于元数据也有文档:https://cloud.tencent.com/document/product/213/4934?from=10680
Node Metadata  Protection--节点的元数据保护
就简单的证明一下,node节点和pod节点都可以访问云商的源数据。相对于谷歌云的文档,腾讯的还是略简单,想比着课程查询下硬盘,貌似还是没有这接口的。不过觉得下面这话说的很对,能访问实例就可以查看元数据。关于元数据的安全也很重要啊…
Node Metadata  Protection--节点的元数据保护

3.2通过networkpolicy 限制对元数据的访问

ping metadata.tencentyun.com得到medata的地址169.254.0.23,依然是命名空间级别的限制
Node Metadata  Protection--节点的元数据保护

kubectl apply -f deny.yaml
kubectl -n metadata  exec nginx -it bash
curl http://metadata.tencentyun.com/latest/meta-data/instance/image-id

OK,如下图获取不了元数据中的镜像id了
Node Metadata  Protection--节点的元数据保护
然后我如何运行一组pod去访问元数据呢?
Node Metadata  Protection--节点的元数据保护

kubectl apply -f allow.yaml

嗯 matchLabels我设置了一个不存在的,然后给pods加上labels

kubectl get pods --show-labels -n metadata
kubectl label pod nginx role=metadata-accessor -n metadata
kubectl get pods --show-labels -n metadata
kubectl -n metadata  exec nginx -it bash

Node Metadata  Protection--节点的元数据保护
OK,可以返回元数据了。now现在去掉role=metadata-accessor 的标签
Node Metadata  Protection--节点的元数据保护
验证通过,其实我觉这节课主要的还是再强调networkpolicy。不仅仅是元数据的保护。networkpolicy是很重要的基石。

上一篇:硬件相关优化的host_kernel_metadata文件的个人理解


下一篇:Kubernetes 存储类型