説明
Kubernetes のネームスペースは、運用と権限管理の基本単位です。異なるチーム、サービス、環境のリソースを混在させると、管理主体や必要な権限の範囲が不明確になる場合があります。
同じネームスペースを使うこと自体が脆弱性ではありません。分離の必要性は運用目的で判断し、名前を分けるだけでネットワークや強固なセキュリティ境界が確立するわけではない点も考慮する必要があります。
想定される影響
- チームやサービス間で管理責任や権限の範囲が不明確になる場合があります。
- 問題発生時の影響範囲の把握や運用ポリシーの適用が複雑になる場合があります。
対処方法
- サービス、チーム、環境ごとに管理境界を分ける必要があるか検討してください。権限や管理責任が異なるワークロードは、適切なネームスペースに分けてください。
- ネームスペースごとの RBAC、ResourceQuota、サポートされる NetworkPolicy を合わせて設定してください。移動するワークロードの Secret・Service 参照や接続経路も確認してください。
例
example イメージとネームスペースは配置構造の例です。実際のイメージを指定し、移動先のネームスペース、権限、ネットワークポリシーを別途用意する必要があります。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: frontend
namespace: shared-all
spec:
containers:
- name: app
image: example/frontend:v1
---
apiVersion: v1
kind: Pod
metadata:
name: billing
namespace: shared-all
spec:
containers:
- name: app
image: example/billing:v1
二つのワークロードを shared-all に置きます。共同管理が意図されていれば有効な場合もあり、実際の権限範囲を確認する必要があります。
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: frontend
namespace: frontend-team
spec:
containers:
- name: app
image: example/frontend:v1
---
apiVersion: v1
kind: Pod
metadata:
name: billing
namespace: billing-team
spec:
containers:
- name: app
image: example/billing:v1
チームごとにネームスペースを分けます。名前の分離だけではアクセスを遮断しないため、実際のポリシーを適用する必要があります。