Pod のセキュリティ ポリシーを有効にすると、不正使用された名前空間(istio-system
以外)が、同じノードを共有する別の名前空間のセキュリティに影響しないようにします。Mesh CA で動作するサンプル PodSecurityPolicy
リソース ファイルには、Anthos Service Mesh が用意されています。これらのファイルは必要に応じて変更できます。以下では、最初に Pod のセキュリティ ポリシーを適用してから、GKE クラスタの Pod のセキュリティ ポリシーを有効にします。
Pod のセキュリティ ポリシーの有効化
システムに Pod のセキュリティ ポリシーがすでに定義されているかどうかを確認します。
kubectl get psp --all-namespaces
コマンドが既存のポリシーのリストを返す場合、システムにはすでに Pod のセキュリティ ポリシーが適用されています。ロールバックを行う必要がある場合に備え、既存の
PodSecurityPolicy
YAML ファイルを使用できるようにしておくことをおすすめします。既存の各 Pod のセキュリティ ポリシーのspec
部分(gce
で始まるポリシーを除く)に、次のセクションを追加する必要があります。allowedHostPaths: - pathPrefix: "/var/run/sds" readOnly: true allowedCapabilities: - NET_ADMIN - NET_RAW
これらの行により、
/var/run/sds
ホストパスからの読み取りが許可され、自動サイドカー インジェクションが可能になります。kubectl
を使用すると、Kubernetes で Pod のセキュリティ ポリシーの編集と適用が可能になります。kubectl edit psp YOUR_EXISTING_POD_SECURITY_POLICY
このコマンドが
No resources found
を返す場合、Pod のセキュリティ ポリシーが定義されていません。既存のワークロードと競合しないように、samples/security/psp/all-pods-psp.yaml
ファイルの変更が必要になる場合もあります。詳細については、Pod のセキュリティ ポリシーのガイドをご覧ください。ファイルを変更したら、それを適用します。kubectl apply -f "samples/security/psp/all-pods-psp.yaml"
Pod のセキュリティ ポリシーを適用して Secret Discovery Service(SDS)を保護します。
kubectl apply -f "samples/security/psp/citadel-agent-psp.yaml"
これにより、ホスト VM 上で UDS パス
/var/run/sds
を作成する権限が Citadel エージェント(ノード エージェントとも呼ばれる)に付与されます。次のコマンドを実行して、Pod のセキュリティ ポリシーを有効にします。
gcloud beta container clusters update ${CLUSTER_NAME} \ --enable-pod-security-policy
Pod のセキュリティ ポリシーが有効になるまで数分かかることがあります。このプロセス中、既存のワークロードは Kubernetes マスターに接続できません。Kubernetes マスターが再起動するまで待ちます。クラスタのステータスは、Google Cloud コンソールの Kubernetes クラスタページで確認できます。
詳細については、Pod のセキュリティ ポリシーの使用をご覧ください。
Pod のセキュリティ ポリシーの確認
既存のワークロードがある場合は、新しい Pod のセキュリティ ポリシーを使用してワークロードをデプロイできることを検証することをおすすめします。
確認するデプロイを選び、レプリカを増やしていきます。たとえば、指定したサービスに 1 つのレプリカがある場合は 1 ずつ増やします。
kubectl scale deployment YOUR_DEPLOYMENT --replicas=2 -n YOUR_NAMESPACE
デプロイがスケールアップされていることを確認します。
kubectl get deploy
新しいワークロードをデプロイできることを確認します。つまり、Pod のセキュリティ ポリシーはサービスのワークロードのデプロイには影響しません。
kubectl get deployment YOUR_SERVICE -n YOUR_NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE YOUR_SERVICE 2/2 2 2 ...
サービスのレプリカをスケールダウンします。
kubectl scale deployment YOUR_SERVICE --replicas=1 -n YOUR_NAMESPACE
ワークロードが正常にデプロイされない場合は、YAML ファイルを修正しながら、Pod のセキュリティ ポリシーを一時的に無効にできます。
gcloud beta container clusters update ${CLUSTER_NAME} \ --no-enable-pod-security-policy