У меня есть несколько вопросов относительно Kubernetes: Как защитить кластер Kubernetes?
Мой план состоит в том, чтобы разработать приложение, которое по умолчанию защищает кластер Kubernetes.Я успешно написал и протестировал несколько сетевых политик.В качестве второго шага я хочу установить эти данные динамически в моем приложении на основе облачного провайдера и т. Д.
1.) Я хочу заблокировать доступ к сети хоста, а также к службам метаданных (мой кластер работаетна AWS):
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.250.0.0/16 # host network
- 169.254.169.254/32 # metadata service
Кто-нибудь знает, как я могу получить динамический доступ к сети хоста?Я обнаружил проблему, которая говорит о том, что вы должны использовать службу метаданных: https://github.com/kubernetes/kubernetes/issues/24657
Кто-нибудь знает, как я могу узнать, на каком облачном провайдере я сейчас работаю?На основании этой информации я хочу установить IP-адрес службы метаданных.
2.) Я хочу заблокировать доступ к пространству имен "kube-system":
egress:
- to:
- podSelector:
matchExpressions:
- key: namespace
operator: NotIn
values:
- kube-system
Кто-нибудь знаеткак я могу обеспечить фактический отказ в доступе?Насколько я понял, «пространство имен», обозначенное ключом, - это просто имя, которое я выбрал.Как Kubernetes знает, что я на самом деле имею в виду пространство имен и ничего больше?
3.) Я хочу заблокировать доступ в Интернет:
spec:
podSelector: {}
policyTypes:
- Egress
Кто-нибудь знает, если что-то вроде DNS-сервера взона DMZ все еще доступна?
4.) Я хочу заблокировать связь с модулями с другим пространством имен:
egress:
- to:
- namespaceSelector:
matchLabels:
project: default
Здесь я разработал контроллер, который динамически устанавливает пространство имен.