Kubernetes に関していくつか質問があります: Kubernetes クラスターを保護するにはどうすればよいですか?
私の計画は、デフォルトで Kubernetes クラスターを保護するアプリケーションを開発することです。いくつかのネットワーク ポリシーを作成してテストしましたが、成功しました。2 番目のステップとして、これらの情報をクラウド プロバイダーなどに基づいてアプリケーションで動的に設定したいと考えています。
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
DMZゾーンのDNSサーバーのようなものがまだ到達可能かどうか、誰か知っていますか?
4.) 名前空間が異なるポッドへの通信をブロックしたい:
egress:
- to:
- namespaceSelector:
matchLabels:
project: default
ここでは、名前空間を動的に設定するコントローラーを開発しました。