2018年、ハッカーがAmazon上のTeslaのKubernetesコンテナクラスターに侵入した。クラスター コンソールはパスワードで保護されていなかったため、ハッカーは Kubernetes ポッドのアクセス資格情報を取得し、それを使用してネットワーク ストレージ バケット S3 にアクセスすることができました。 S3を通じてテレメトリ技術などの機密データが取得され、TeslaのKubernetesポッドでマイニングも実行されました。 ハッカーは、パスワードで保護されていない Kubernetes 制御コンソールに侵入しました。 Kubernetes ポッドでは、Tesla のパブリック クラウド環境へのアクセスが盗まれ、対応するパブリック クラウド環境にはテレメトリなどの機密データが保存されていました。 公開されたデータに加えて、RedLock はこの攻撃でさらに洗練された検出回避手法もいくつか発見しました。 まず、よく知られている公開の「マイニング プール」は使用されません。マイニング ソフトウェアをインストールし、悪意のあるスクリプトを介して非公開/半公開のエンドポイントに接続します。第二に、ハッカーは無料の CDN サービスである CloudFlare を通じて、マイニング プール サーバーの実際の IP アドレスを隠しました。このサービスを通じて新しい IP アドレスを取得します。したがって、一般的な標準 IP またはドメインベースの検出を使用してこのような悪意のある動作を検出することは困難です。 マイニング ソフトウェアは非標準ポートをリッスンするため、ポートベースの悪意のある検出が困難になります。ハッカーのマイニング ソフトウェアは「目立たない」状態を保ち、CPU を過度に使用しないため、リソースの占有が発見されることは容易ではありません。 このインシデントは、Kubernetes の脆弱性を悪用した典型的な例にすぎません。 近年、Kubernetes に代表されるセキュリティ オーケストレーション ツールにより、企業はアプリケーションの展開を自動化できるようになり、企業に大きなビジネス上のメリットをもたらしています。ただし、従来の環境と同様に、これらのデプロイメントもハッカーや内部者による攻撃や悪用に対して脆弱であるため、Kubernetes のセキュリティはコンテナの使用における重要な保護対象となっています。 1. Kubernetes1. KubernetesとはKubernetes は、もともと Google によって設計され、インキュベーションのために Cloud Native Computing Foundation (CNCF) に寄贈されたオープンソースのコンテナ オーケストレーション プラットフォームです。 Kubernetes は、コンテナ化されたアプリケーションを自動的にデプロイ、スケーリング、管理でき、サービス検出、負荷分散、自己修復などの多くの便利な機能を提供します。 Kubernetes の中心的な概念は、アプリケーションとインフラストラクチャを分離して、クラウドネイティブ アプリケーションの開発と展開をより高速、安全、柔軟に行うことです。 Kubernetes のコンポーネントは、コントロール プレーンとデータ プレーンの 2 つの主要なカテゴリに分けられます。コントロール プレーンには、Kubernetes API サーバー、etcd ストレージ、コントローラー マネージャー、スケジューラーなどが含まれます。etcd に保存されているクラスターの状態を管理し、実行環境におけるコンテナーの場所、タグ、制限を決定する役割を担います。データ プレーンには、コンテナ ランタイム、kubelet デーモン、kube-proxy プロキシ サーバーなどのさまざまなノードが含まれており、コンテナのライフサイクル、データ トラフィック、負荷分散などの維持を担当します。 Kubernetes は、コンテナを簡単に作成およびデプロイする方法を提供し、その柔軟性と拡張性により、非常に人気のあるアプリケーション デプロイおよび管理プラットフォームとなっています。 2. Kubernetes にセキュリティが必要なのはなぜですか?Kubernetes には多くの利点がありますが、慎重に考慮しなければならないセキュリティ上の考慮事項も数多くあります。 Kubernetes のセキュリティ脅威の例をいくつか示します。 (1)許可の問題侵害されたコンテナは複数のポッドに拡散し、Kubernetes クラスターの全体的なセキュリティを危険にさらす可能性があります。 Kubernetes 内のユーザーとロールが適切に構成されていないと、攻撃者が必要以上の権限を持つ可能性があります。 (2)ネットワークの問題Kubernetes は高度に自動化されているため、権限の割り当てが分散化され、混乱が生じやすくなります。この場合、攻撃者は Kubernetes の脆弱性を悪用して横方向に移動して、クラスター内のアクセス レベルを拡大できます。さらに、サービス検出やコンテナ ネットワーク構成などのアプリケーション レベルでの安全なネットワーク ポリシーと保護により、アプリケーションとデータが攻撃に対して脆弱になり、侵害される可能性がなくなります。 (3)制御プレーンKubernetes API サーバーが攻撃活動にさらされると、クラスターの状態が変更、追加、または削除され、クラスター全体のセキュリティが侵害される可能性があります。さらに、侵害されたポッドは、トラフィックをスニッフィングしたり、攻撃対象領域を増やすためにポッドを変更しようとしたりするなど、他のポッドやホストに壊滅的な結果をもたらす可能性のある多くのアクティビティを実行する可能性があります。 (4)イメージセキュリティの問題コンテナ イメージはいつでも置き換えられる可能性があり、イメージの内容と整合性を検証する方法はありません。したがって、悪意のあるイメージが発生した場合、特定のコンテナ全体のデータとアプリケーションが深刻な危険にさらされる可能性があります。 3. Kubernetes セキュリティのヒントの紹介Kubernetes クラスターのセキュリティを最大限に高めるには、セキュリティのベスト プラクティスと原則を理解することが重要です。 Kubernetes のセキュリティに関する基本的なヒントをいくつか紹介します。 (1)KubernetesオブジェクトのRBACを構成するKubernetes クラスターを保護するには、Kubernetes で実行されているオブジェクト、ポッド、および状態オブジェクトを認証および承認する必要があります。 Kubernetes ロールベース アクセス制御 (RBAC) は、Kubernetes API オブジェクトにアクセスするための承認と権限を管理するために Kubernetes API オブジェクトに適用されるベスト プラクティスの 1 つです。 (2)安全なコンテナベースイメージを使用するセキュリティのベスト プラクティスを使用することで、コンテナーのセキュリティを強化できます。適切なベースイメージを選択することは、この目標を達成するための重要な部分です。たとえば、信頼できるソースからのイメージのみを使用し、コンテナー内のクライアント ライブラリの数を最小限に抑えます。 (3)Kubernetesネットワークとポリシーを構成する安全なネットワークと保護戦略により、Kubernetes クラスターを脅威から保護できます。ネットワーク プラグインを構成してネットワーク分離を実装し、ポッドとサービス間のネットワーク ポリシーを設定してセキュリティを強化します。 (4)セキュリティ監査にKubernetesセキュリティスキャナを使用するKubernetes セキュリティ スキャナーを使用すると、コンテナ イメージ内の潜在的な脆弱性を見つけ、各大規模コンテナ イメージにタイムリーに修正する必要があるセキュリティ脆弱性がないことを確認できます。 2. Kubernetes クラスターを構成する1. MinikubeのインストールMinikube は Kubernetes の軽量実装です。テスト、開発、学習のために、ローカル エリア ネットワーク内に Kubernetes クラスターを迅速に構築できます。 (1)Minikubeのインストール手順:仮想マシン ソフトウェアをインストールします。Minikube は仮想マシンで実行する必要があります。 VirtualBox または HyperKit を使用することをお勧めします。 VirtualBox はクロスプラットフォームの無料ソフトウェアであり、HyperKit は macOS で提供される軽量の仮想化ソリューションです。 kubectl をインストールします。kubectl は、Kubernetes クラスターを管理するために使用される Kubernetes のコマンドライン ツールです。次のコマンドでインストールできます。 macOS に kubectl をインストールするコマンドは次のとおりです。 Minikube をインストールする: 次のコマンドで Minikube をインストールできます。 macOS に Minikube をインストールするコマンドは次のとおりです。 Minikube クラスターを起動します。 サンプルアプリケーションを実行するには: 上記は、Minikube をインストールして使用するための詳細な手順です。 2. Kubernetes RBACを構成するKubernetes RBAC (ロールベースのアクセス制御) は、ロール、ロール バインディング、クラスター ロール バインディングのセットを定義して、Kubernetes クラスター内のユーザーとサービス アカウントの権限の範囲を制限するロールベースのアクセス制御です。 (1)Kubernetes RBACの設定手順:ロールを作成します。 ここでは、Kubernetes クラスター内のポッドとサービス リソースへのアクセス権を持つ test-role という名前のロールが作成されます。 サービス アカウントを作成します。 ここでは、test-account という名前のサービス アカウントが作成され、後で作成されるロールにバインドされます。 ロール バインディングを作成します。 ここでは、test-role-binding という名前のロール バインディングが作成され、test-role が test-account にバインドされ、test-account にポッドとサービス リソースへのアクセスが許可されます。 名前空間を作成します。 上記のロールおよびサービス アカウントのスコープを分離するために、test-namespace という名前の名前空間がここで作成されます。 上記は Kubernetes RBAC の設定手順です。ロール、サービス アカウント、ロール バインディング、名前空間を作成することで、ユーザーとサービス アカウントの権限の範囲を定義できます。 3. ネットワークポリシーを構成するネットワーク ポリシーは、Kubernetes 内のネットワーク アクセス制御ポリシーを定義するためのメカニズムであり、特定の IP またはラベルからのトラフィックが Kubernetes 内の Pod にアクセスすることを制限できます。 (1)ネットワークポリシーの設定手順:ネットワーク ポリシー機能が適切に機能するようにするには、Kubernetes で Calico や Cilium などのネットワーク プラグインを実行します。 ネットワーク ポリシーを作成するには: ここでは、test-network-policy という名前のネットワーク ポリシーが作成されます。このポリシーは、test-namespace 名前空間に属し、app=test-app ラベルを含む Pod にアクセスするときに、10.0.0.0/24 ネットワーク セグメント IP または test-namespace 名前空間からの Pod のみが Pod の TCP ポート 8080 にアクセスできることを定義します。 上記はネットワーク ポリシーを構成する手順です。ネットワーク ポリシーを構成することで、Pod 間のネットワーク通信を制御できます。 4. Kubernetes APIアクセスを制限するKubernetes では、ネットワーク ポリシーを使用して、Pod 間および Pod とクラスター内の他のリソース間のネットワーク トラフィックを制御できます。この記事では、Kubernetes API へのアクセスを制限するためにネットワーク ポリシーを構成する方法について説明します。 名前空間を作成します。 ネットワーク ポリシーによって保護されるポッドをマークするために使用するラベルを作成します。 ポッドを作成する: ネットワーク ポリシーを作成します。 上記のポリシーは、トラフィックがラベル app=kubernetes の Pod から発信されない限り、ラベル app=example の Pod へのすべての受信トラフィックを許可しません。このルールはトラフィックを制限するだけなので、コンテナの実行状態には影響しないことに注意してください。 ポリシーが有効であることを確認します。 最初の行は、busybox イメージを使用して busybox という名前の Pod を作成し、長いスリープ コマンドを実行します。 2 行目は wget コマンドを呼び出し、Pod example-pod を通じて HTTP GET リクエストを実行します。ネットワーク ポリシーを作成したため、要求はブロックされます。 3 行目は、Kubernetes API の DNS 名である kubernetes.default.svc.cluster.local にアクセスするために wget コマンドを呼び出します。ポリシーで Kubernetes コンポーネント Pod からのトラフィックを選択したので、リクエストには期待どおりの結果が表示されます。 Kubernetes ネットワークのセキュリティ保護1. Kubernetesネットワークプラグインを構成するKubernetes ネットワーク プラグインは、K8s クラスターに必要なコンポーネントの 1 つです。その主な目的は、コンテナへの IP アドレスの割り当て、コンテナ間の通信の有効化、ネットワークの分離の提供など、コンテナのネットワーク機能を実装することです。ネットワーク プラグインごとに実装メカニズムが異なり、クラウド プラットフォームや展開環境ごとにネットワーク要件も異なります。そのため、実際の状況に応じて使用するネットワーク プラグインを選択する必要があります。 一般的に使用される Kubernetes ネットワーク プラグインは次のとおりです。
ネットワーク プラグインを選択する際には、考慮すべき点がいくつかあります。
2. Kubernetes Ingress Controllerを構成するKubernetes では、Ingress コントローラーは、K8s クラスターに入る外部トラフィックの管理を担当するコンポーネントです。さまざまな負荷分散アルゴリズムを使用して、外部トラフィックをさまざまなバックエンド サービスにルーティングできます。イングレス コントローラは、Web アプリケーションなどのシナリオで負荷分散とトラフィック制御を実装するためによく使用されます。 Ingress コントローラーを使用する場合は、クラスターを悪意のある攻撃から保護するために、いくつかのセキュリティ ルールを設定する必要があります。例えば: 写真
3. Kubernetes サービスを安全に使用するKubernetes サービスは、コンテナが相互に通信できるようにする抽象的なメカニズムです。コンテナの安定した IP アドレスを動的に生成し、負荷分散などの重要な機能を提供できます。 Kubernetes サービスを使用する場合は、次の点に注意する必要があります。
4. Kubernetesワークロードを安全に実行する1. Kubernetes Podをより安全にする方法Kubernetes では、「Pod」は最小の環境単位であり、1 つ以上のコンテナの集合です。安全なポッドを作成するには、次の点を考慮する必要があります。 (1)資源の制限Kubernetes では、PodLevel で LimitRange と resourceQuotas を使用してリソース制限を実装し、Pod が使用可能なリソースを超えないようにすることができます。リソース制限を設定することで、コンテナーが必要以上のリソースを取得しないようにすることができます。 (2)セキュリティコンテキストの使用セキュリティ コンテキストを使用すると、特定のコンテナーのユーザー ID (UID) とグループ ID (GID) を設定できます。これにより、攻撃者がシステムレベルのファイルやプロセスにアクセスするのを防ぎ、コンテナの機能を制限します。 Kubernetes では、コンテナ内のセキュリティ制限を無効にする特権コンテキスト メカニズムを構成することもできますが、これは注意して使用し、可能であれば避ける必要があります。 (3)Kubernetesポッドセキュリティポリシーを有効にするKubernetes Pod セキュリティ ポリシー (PodSecurityPolicy) は、管理者が Pod 下のコンテナ アプリケーションにセキュリティ対策を適用するのに役立ちます。 PodSecurityPolicy を使用すると、コンテナがコンテナ内からホストを攻撃するのを防ぐことができ、コンテナ間の攻撃も防ぐことができます。 (4)ネットワーク分離を使用するKubernetes ネットワーク プラグインやその他のリンク層分離テクノロジを使用すると、Pod のネットワーク分離とセキュリティを強化できます。トラフィックの分離により、コンテナが他のコンテナやストレージ ボリュームなどの機密リソースにアクセスすることを制限し、ネットワーク攻撃の発生を減らすことができます。 2. Kubernetesコンテナセキュリティのベストプラクティスコンテナのセキュリティ保護は、Kubernetes クラスターを保護するための鍵となります。コンテナのセキュリティ向上に役立つ Kubernetes コンテナのセキュリティ プラクティスをいくつか紹介します。 (1)適切なコンテナベースイメージを選択するDocker コンテナ イメージを適切に選択します。標準イメージについては、公式イメージ リポジトリを使用することをお勧めします。 Docker のセキュリティ コンポーネントを使用して、コンテナ ベース イメージを検証することもできます。 (2)コンテナイメージコードがウイルススキャンおよび脆弱性スキャンされていることを確認するコンテナ イメージ スキャナーを使用して、コンテナ コードにウイルスや脆弱性がないことを確認します。スキャン後、表示されたコードや脆弱性が修復され、安全なイメージを使用できるようになります。 (3)コンテナセキュリティポリシーの設定Kubernetes の PodSecurityPolicy を通じてコンテナのセキュリティ ポリシーを構成します。 Pod 内の特権コンテナの使用と安全でないコンテナのアクセス権を制限するには、runtimeClass ポリシーを使用することをお勧めします。 (4)コンテナログを使用するコンテナ ログを使用すると、管理者はコンテナ アクティビティの診断と調整が容易になります。標準出力を使用してコンテナ ログを最適化し、セキュリティ センターまたは外部ストレージに収集します。 (5)アプリケーションの複数インスタンスの実行コンテナ ランタイムはアプリケーションの可用性を保証し、コンテナに障害が発生してもアプリケーションの残りの部分に影響が及ばないように回復力を提供します。複数のインスタンスを実行する場合は、セキュリティ保護を強化するために、非常に安全なチャネルを介してトラフィックをルーティングするロード バランサーを必ず使用してください。 (6)ネットワークセキュリティを構成するKubernetes クラスターはネットワーク セキュリティ保護を使用して構成する必要があり、各コンテナーには独自の IP とポートがあり、コンテナー間のトラフィックを制限するようにネットワーク ポリシーを構成できます。 3. Kubernetes OSのセキュリティパッチを使用するコンテナのセキュリティに加えて、Kubernetes ワーカーノード自体も保護する必要があります。特に、オペレーティング システムのセキュリティ パッチ、Kubernetes コンポーネントなどを定期的に更新します。さらに、Kubernetes ワーカー ノードは、不要なアクセスを制限し、不正アクセスや攻撃からクラスターを保護するために、安全なアクセスで構成する必要があります。さまざまな Kubernetes セキュリティ コンポーネントを使用して、セキュリティ イベントを監視および警告したり、Kubernetes クラスターの信頼性とセキュリティを確保するために必要なアクションと修正を実行したりできます。 5. 監視とログ管理1. Kubernetesセキュリティスキャナを使用するKubernetes セキュリティ スキャナーを使用して、Kubernetes クラスター内のコンテナー イメージとリソース構成を自動的にスキャンし、潜在的なセキュリティの脆弱性とリスクを検出します。一般的なセキュリティ スキャナーをいくつか紹介します。
2. Kubernetesでログを有効にするセキュリティとトラブルシューティング機能を強化するには、Kubernetes でログ記録を有効にすることが重要です。一般的なログ記録ソリューションを次に示します。
3. Kubernetesで監視を追加するKubernetes クラスターとアプリケーションの状態を監視すると、問題をタイムリーに検出して解決し、信頼性と可用性を向上させることができます。一般的な監視ソリューションは次のとおりです。
6. Kubernetes クラスターの更新とバックアップ1. Kubernetesのローリングアップグレードを使用するKubernetes は、クラスターをアップグレードするためのローリング アップグレード アプローチを提供します。ローリング アップグレードでは、クラスター内の各ノードを段階的にアップグレードし、アップグレードの進行中もクラスターが引き続き使用可能であることを保証します。ローリング アップグレードを使用すると、アップグレードの速度と範囲を制御して、各ノードが正常にアップグレードされ、クラスターの安定性が維持されるようにすることができます。 Kubernetes ローリング アップグレードを実行するには、次の手順に従います。
2. 自動バックアップと復元を実行するKubernetes のバックアップと復元 (Velero) プラグインを使用すると、自動化されたバックアップと復元の操作を実行して、アプリケーションとデータを保護できます。 Velero は、Kubernetes アプリケーションの状態とその依存関係 (ストレージ、構成、シークレットなど) をバックアップし、必要に応じて以前の状態に復元できます。 Velero を使用して Kubernetes のバックアップと復元を実行するには、次の手順に従います。
7. 安全なKubernetesのベストプラクティス1. 継続的な脆弱性管理と修復継続的な脆弱性管理と修復は、Kubernetes を安全に保つための鍵となります。以下に実用的な提案をいくつか示します。
2. Kubernetes APIオブジェクトの安全な使用Kubernetes API オブジェクトは Kubernetes の中核要素であるため、安全に使用することが重要です。 Kubernetes API オブジェクトを安全に使用するベスト プラクティスをいくつか紹介します。
3.Kubernetesセキュリティ監査戦略Kubernetes セキュリティ監査ポリシーは、Kubernetes クラスター内のアクティビティを追跡および監視し、セキュリティの脆弱性や攻撃をタイムリーに検出して対応するのに役立ちます。以下にベストプラクティスをいくつか示します。
|
<<: DockerコンテナにおけるUIDとGIDの仕組みを理解する
>>: 人工知能とクラウド:仮想世界における完璧な組み合わせ!
最近、私は「SKYCCはWeiboマーケティングのおかげで売れ行きが好調を維持している」というニュー...
早速本題に入りましょう。ウェブサイトのタイトルとキーワードをどのように設定するかです。タイトルとは、...
VMware が Horizon VDI 製品の最初のバージョンをリリースして以来、この製品は ...
著者: ユン・チャオ【51CTO.comオリジナル記事】導入昨年はクラウド ネイティブが爆発的に増加...
中小規模の企業ウェブサイトの場合、最短時間で成果を出したい場合、最も効果的な方法は百度プロモーション...
AAA Xiaomi のハングリー戦略の下では、他のすべてのプロモーション マーケティング手法は影を...
2年前の建国記念日の頃に、ラックナード ロサンゼルス AMD VPS を入手しました。それから約 2...
以前、私はウェブサイトデザインの観点から Taobao と Paipai を考察した記事を書きました...
SEO 最適化?Baidu ランキング?インターネットで働くことは、とてもうらやましい仕事、とてもう...
2009 年に設立されたインド企業である hivalidity は、ドメイン名、仮想ホスティング、V...
Baidu はオンライン マーケティングの主要な戦場です。ホームページに商品キーワードを表示して競合...
I3D は 2004 年に設立されたオランダのホスティング サービス プロバイダーです。現在、8,0...
11月16日、中国オープンソースクラウドアライアンスWG6コンテナワーキンググループとShu Ren...
最近、SEO は中国における中庸の教義に少し似ていると感じています。ウェブサイトが良いランキングを獲...
共同購入ウェブサイトが登場してから2年が経ち、人々は共通の「キャッチフレーズ」に慣れ始めている。 「...