Kubernetes を強化するための 6 つのヒント

Kubernetes を強化するための 6 つのヒント

クラウドネイティブ テクノロジーを採用する組織が増えるにつれ、Kubernetes はコンテナ オーケストレーションの業界標準になりました。 Kubernetes への移行により、コンテナ化されたアプリケーションの展開、スケーリング、管理が大幅に簡素化および自動化され、従来のモノリシック システムやレガシー管理プロトコルに比べて多くの利点がもたらされます。

ただし、Kubernetes を大規模に管理するには、クラスターの強化、サプライ チェーンの保護、実行時の脅威の検出など、独自の課題が伴います。この記事では、Cloud Native Computing Foundation (CNCF)、米国国家安全保障局 (NSA)、サイバーセキュリティおよびインフラストラクチャセキュリティ庁 (CISA) の多くのベストプラクティスを組み合わせて、組織のリスク軽減に役立つ Kubernetes セキュリティ強化に関する 6 つの推奨事項を整理します。

クラスターのセットアップと強化

Kubernetes 環境のセキュリティ保護は、クラスターの強化から始まります。 GKE、EKS、AKS などのマネージド Kubernetes サービスを使用しているユーザーの場合、それぞれのクラウド プロバイダーがマスター ノードのセキュリティを管理し、クラスターのさまざまなデフォルトのセキュリティ設定を実装します。 GKE Autopilot は、GKE 強化ガイドラインと GCP セキュリティのベスト プラクティスを適用するために追加の手順を実行します。ただし、GKE Standard または EKS/AKS ユーザーの場合でも、クラウド プロバイダーには、Kubernetes API サーバーへのユーザー アクセス、クラウド リソースへのコンテナ アクセス、Kubernetes のアップグレードを保護するための一連のガイドラインがあります。

ガイドラインは次のとおりです。

  • GKE 強化ガイド
  • EKS セキュリティベストプラクティスガイド
  • AKS クラスターのセキュリティ

自己管理型 Kubernetes クラスター (kube-adm や kops など) の場合、kube-bench を使用して、クラスターが CIS Kubernetes ベンチマークで指定されたセキュリティ ガイドラインを満たしているかどうかをテストできます。主な推奨事項には、etcd に保存されている機密情報を暗号化すること、TLS 証明書を使用してコントロール プレーンの通信を保護すること、監査ログを有効にすることなどがあります。

ネットワークとリソースのポリシー

デフォルトでは、Kubernetes は任意のポッドから同じクラスター内の別のポッドへの通信を許可します。これはサービス検出には理想的ですが、ネットワーク分離が提供されず、悪意のある人物や侵害されたシステムがすべてのリソースに無制限にアクセスできるようになります。チームが Kubernetes 内でマルチテナントの主な手段として名前空間を使用している場合、これは非常に深刻な問題になります。

ポッド、名前空間、外部エンドポイント間のトラフィックを制御するには、ネットワーク分離のために NetworkPolicy API (Calico、Flannel、クラウド固有の CNI など) をサポートする CNI プラグインを使用する必要があります。ゼロ トラスト モデルに従うベスト プラクティスは、別のポリシーで明示的に許可されていない限り、すべての受信トラフィックと送信トラフィックをブロックする、デフォルトで拒否するポリシーを実装することです。

ネットワーク ポリシーに加えて、Kubernetes は LimitRange と ResourceQuotas という 2 つのリソース レベル ポリシーも提供します。 LimitRanges は個々のリソースの使用を制限するために使用できます (ポッドあたり最大 2 CPU など)。一方、ResourceQuota は集約リソースの使用を制御します (dev 名前空間内の合計 20 CPU など)。

RBAC とサービス アカウント

強力なネットワークおよびリソース ポリシーが導入されたら、次のステップは RBAC 認証を適用してアクセスを制限することです。 Kubernetes 管理者は、ユーザーおよびユーザー グループがクラスターにアクセスするための RBAC を適用できるほか、サービスがクラスター内外のリソース (クラウドでホストされているデータベースなど) にアクセスすることを制限できます。さらに、企業は、各ポッドの作成時にマウントされるデフォルトのサービス アカウントの使用に注意する必要があります。デフォルトのサービス アカウントに付与された権限によっては、ポッドに過剰な権限が付与される場合があります。 Kubernetes サービスとの特定の通信が必要ない場合は、automountServiceAccountToken を false に設定してマウントを防止します。

システムの強化

クラスターが安全になったので、次のステップはシステムの攻撃対象領域を最小限に抑えることです。これは、ノード上で実行されているオペレーティング システムとコンテナ上のカーネルの両方に適用されます。汎用 Linux ノードを選択する代わりに、AWS Bottlerocket や GKE COS など、コンテナの実行に最適化された専用のオペレーティングシステムを選択します。次に、SELinux、AppArmor (1.4 以降ベータ版)、seccomp (1.19 以降安定) などの Linux カーネルのセキュリティ機能を活用します。 AppArmor は、プログラムを限られたリソース セットに制限する Linux ユーザーまたはグループの権限を定義します。 AppArmor プロファイルが定義されると、AppArmor アノテーションを持つポッドによってそれらのルールが適用されます。

 APIバージョン: v1

種類: ポッド

メタデータ:

名前: アパマー

注釈:

容器装甲安全ベータKubernetesio / hello : localhost / k8s - apparmor - - 拒否- 書き込み

仕様:

コンテナ:

- 名前: こんにちは

画像: ビジーボックス

コマンド: [ "sh""-c""echo 'Hello AppArmor!' && 1時間睡眠" ]

一方、Seccomp はコンテナによるシステムコールを制限します。基盤となる Kubernetes ノードで seccomp プロファイルが使用可能である限り、seccomp プロファイルは securityContext セクションで定義できます。

 APIバージョン: v1

種類: ポッド

メタデータ:

名前: 監査- ポッド

ラベル:

アプリ: 監査- ポッド

仕様:

セキュリティコンテキスト:

seccompプロフィール:

タイプ: ローカルホスト

localhostProfile : プロファイル/audit.json

コンテナ:

- 名前: テスト- コンテナ

イメージ: hashicorp / http - echo : 0.2.3

引数:

- "-text=いくつかのシステムコールを実行しました!"

seccomp プロファイルがなくても、ユーザーはさまざまな権限昇格攻撃からコンテナを制限できます。セキュリティの観点から、Kubernetes では、コンテナを特権またはルートとして実行できるかどうか、または権限をルートに昇格できるかどうかを構成できます。ユーザーは、hostPID、hostIPC、hostNetwork、および hostPaths を制限することもできます。これらの設定はすべて、Pod セキュリティ ポリシー (v1.21 では非推奨) または K-Rail、Kyverno、OPA/Gatekeeper などの他のオープン ソース ツールを使用して適用できます。

最後に、追加の安全性保証が必要な場合は、ハードウェア仮想化 (gVisor や Kata など) を活用するようにカスタム RuntimeClass を構成できます。ノード レベルで RuntimeClass を定義し、ポッド定義で指定します。

 apiバージョン: ノードk8sio / v1 # RuntimeClass はノード定義されます k8sio API グループ

種類: ランタイムクラス

メタデータ:

name : myclass # RuntimeClass 参照れる名前

# RuntimeClass 名前空間ないリソースです

handler : myconfiguration # 対応するCRI 設定名前

-- -

APIバージョン: v1

種類: ポッド

メタデータ:

名前: マイポッド

仕様:

ランタイムクラス名: myclass

サプライチェーンのセキュリティ

クラスターとシステムが安全であっても、アプリケーション全体のエンドツーエンドのセキュリティを確保するには、サプライ チェーンを考慮する必要があります。社内でアプリケーションを開発する場合は、最小限のベースイメージを使用して攻撃対象領域を減らす、パッケージのバージョンを固定する、マルチステージビルドを使用して小さなイメージを作成するなど、コンテナを作成するためのベストプラクティスに従ってください。さらに、コンテナを実行するために必要な非 root ユーザーを定義するか、podman を使用して rootless コンテナを構築し、root アクセスを制限します。

次に、Trivy、Clair、Anchore などのオープンソース ツールまたは商用ツールを使用して、すべてのイメージの脆弱性をスキャンします。一部のツールでは、イメージに署名し、署名を検証して、ビルドおよびアップロードのプロセス中にコンテナーが改ざんされていないことを確認することもできます。最後に、ImagePolicyWebhook または上記のポリシー適用ツールのいずれかを使用して、Kubernetes がイメージをプルできるホワイトリスト レジストリを定義します。

監視、ログ記録、ランタイムセキュリティ

この時点で、厳重に保護されたサプライ チェーンを備えた安全なクラスターが完成し、アクセスが制限されたクリーンで検証済みのイメージを生成できるようになりました。ただし、環境は動的であり、セキュリティ チームは運用環境内のイベントに対応できる必要があります。まず、readOnlyRootFilesystem を true に設定し、tmp ログ ファイルを emptyDir に保存して、コンテナーの実行中に変更されないようにします。一般的なアプリケーション監視 (Prometheus/Grafana など) やログ (EFK など) ストレージに加えて、Falco または Sysdig を使用してシステム コール プロセスや Kubernetes API ログを分析することもできます。

どちらのツールも、実行時にカーネルからの Linux システム コールを解析し、ルールに違反した場合にアラートをトリガーできます。ルールの例としては、権限昇格が発生したときに警告する、既知のディレクトリで読み取り/書き込みイベントが検出されたときに警告する、シェルが呼び出されたときに警告するなどがあります。最後に、Kubernetes API 監査ログを既存のログ集約およびアラート ツールと統合して、クラスター内のすべてのアクティビティを監視します。これには、API リクエスト履歴、パフォーマンス メトリック、デプロイメント、リソース消費、オペレーティング システム呼び出し、ネットワーク トラフィックが含まれます。

結論

クラウドネイティブ システムは複雑であるため、Kubernetes 環境を保護するには多層アプローチが必要です。 Kubernetes では、クラウド ネイティブ セキュリティの 4C (クラウド、クラスター、コンテナ、コード) を実装することが推奨されます。まず、クラスターを強化し、クラウド セキュリティのベスト プラクティスに従います。次に、コンテナを保護し、攻撃対象領域を減らし、アクセスを制限し、実行時の不変性を確保します。 3 番目に、サプライ チェーンを保護し、コードとコンテナーの脆弱性を分析します。最後に、実行時にすべてのアクティビティを監視し、Kubernetes 内で実行されているソフトウェアのすべてのレイヤーに防御を構築します。

参考リンク: https://dzone.com/articles/kubernetes-security-guide-high-level-k8s-hardening

<<:  NoSQL の「先駆的取り組み」である Amazon DynamoDB の 10 年間のイノベーション

>>:  エンタープライズコンピューティングとパブリッククラウドのジレンマ

推薦する

123host: ベトナムの専用サーバー、ベトナムのクラウドサーバー、その他のサービスを提供するベトナムのホスティングプロバイダー

123host はベトナムのホスティング会社で、2009 年に設立されました。正式名称は「123HO...

大学入試の「クラウド得点チェック」を開始しました。その背後にあるブラックテクノロジーとは何でしょうか?

7月23日、全国各省の大学入試成績が相次いで発表された。このうち湖北省、甘粛省、雲南省、広西チワン族...

これについて話しましょう: ウェブサイトを最適化するときに、外部リンクを投稿する必要はまだありますか?

外部リンクワーカーによるプロパガンダとジャンク外部リンクからの攻撃が長く続いた後、多くの SEO 担...

これらの SEO テクニックはまだ不正行為だと思いますか?

SEO テクニックは数多くあり、SEO 担当者によって最適化の方法は異なりますが、検索エンジンからペ...

エッジコンピューティングとデータサイエンス: IoT デバイスの強化

IoTの強化: 革新的なエッジコンピューティングと優れたデータサイエンスの組み合わせコネクテッド イ...

Ingress/IngressController/IngressClass の違いを 5 分で理解する

一言でまとめると、Ingress は Ingress ルール、IngressController、I...

百度のオンライン外部リンク拒否ツールが私たちにもたらした影響と啓蒙

3月1日、Baiduは外部リンクを拒否するツールをリリースしました。青大根アルゴリズムに続いて、Ba...

当社では、非常に強力な Redis 分散電流リミッターを 6 年間使用しています。

1. 電流制限とは何ですか?なぜ流れを制限する必要があるのでしょうか?地下鉄の駅に入るのに列に並ばな...

重要な報告 |今後のデジタル開発における9つの主要トレンド

2月20日、アリババクラウドリサーチセンターは「2019年デジタルトレンドレポート」を発表しました。...

クラウド制御: マルチクラウド時代を乗り切るための効果的な戦略

適切なクラウド ソリューションを見つけるには、企業は慎重なアプローチを取る必要があります。ただし、適...

Duomao Interactiveはインターネットの光を照らし、企業の効率的なマーケティングを支援します

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています今日、イン...

PieLayer - 年間 15 USD/512 MB RAM/100 GB ハード ドライブ/800 GB データ フロー/G ポート

PieLayerは創業4年の歴史を持ち、現在は米国ロサンゼルス、ニューヨーク、カンザス、ドイツフラン...

#ハロウィン# hostsailor - すべての VPS/オランダ/ルーマニア/Windows が 50% オフ

ドバイのホスティング プロバイダーである Hostsailor は、ハロウィーン プロモーションを予...

エッジコンピューティングを活用して 5G の世界でネットワークを変革する

グローバル ネットワークが進化し、分散化が進み、高速で低遅延のネットワーク サービスに対する顧客の需...

aulerion: VPS 競争、好きなだけ預けて好きなだけ受け取る、9 つのデータ センター

以前 aulerion について一度触れましたが、ここでもう一度それについて話す必要があります。au...