Member-only story
安全なクラスタのための10のベストプラクティス(後半)
安全なクラスタのための10のベストプラクティスについての記事です。長い記事なので、前半と後半の2つに分けて投稿いたします。今回は後半です。
4. 環境変数にシークレットを入れないようにする
システムの他の部分が簡単に環境変数にアクセスできるため、ちゃんとオブジェクトが環境変数にシークレットを使用するようにしてください。secretをファイルとして使用するか、secretKeyRefの恩恵を受け、潜在的な脅威を最小化します。
5. コンテナを特権モードで実行しない
デプロイメントでコンテナを特権(ルート)モードで実行すると、コンテナが重要なホストリソースにアクセスすることが可能になります。これは、セキュリティの問題につながる可能性があります。特権モードでコンテナを実行しないようにするか、PodSecurityPolicy をオンにして、特権パラメータを false に設定します。これにより、コンテナはホスト上でルート権限を必要とするプロセスを実行できないようになります。
6. ホストのIPCやネットワークのネームスペースを共有しない
あなたのPodを見て、それらがホストのIPCまたはネットワークのネームスペースを共有しているかどうかを確認してください。Podとホストのプロセス間通信のためのネームスペースを共有することは、共有情報へのアクセスを許してしまう可能性があるため危険です。このため、ポッドはホストのネームスペースにアクセスすることを決して許してはいけません。
ポッドとホスト・ネットワークのネームスペースを共有すると、ポッドからホスト・ネットワークへのネットワーク・アクセスが可能になります。これは、ネットワークの分離を破壊します。PodSecurityPolicyでhostNetworkパラメータをfalseに設定し、クラスタが保護されていることを知って夜によく眠れるようにしましょう。
7. NET_RAWを無効にする
KubernetesコンテナがNET_RAW機能を落とさない場合、クラスタ内から幅広いネットワークエクスプロイトを可能にする可能性があります。EKSのセキュリティを確保するには、Open Policy Agents、Kyverno、またはKubernetes Pod Securityアドミッション・コントローラのようなPolicy Enforcementソリューションを使用して、業界のベストプラクティスに従います。PodのsecurityContext定義でALLまたはNET_RAW能力のdropを設定し、NET_RAW能力が無効化されているようにしてください。[2, 3]
8. セキュアでない/procマウントのチェック
unsafe /proc mount (procMount=Unmasked) を使用したデプロイメントでは、コンテナランタイムのデフォルトのマスキング動作をバイパスすることができます。Unmasked /proc mount…