Kubernetes ネットワーク ポリシーの基礎

Kubernetes ネットワーク ポリシーの基礎

[[436076]]

Kubernetes を通じてアプリケーションをデプロイする前に、Kubernetes ネットワーク ポリシーを理解することが基本的な要件です。

Kubernetes を介して本番環境にデプロイされるクラウドネイティブ アプリケーションがますます増えるにつれて、セキュリティは早い段階で考慮する必要がある重要なチェックリストになります。クラウドネイティブ アプリケーションを設計するときは、事前にセキュリティ ポリシーを埋め込むことが重要です。これを怠ると、後で安全上の問題が発生し、プロジェクトの遅延を引き起こし、最終的には不必要なストレスと費用が発生する可能性があります。

長年にわたり、セキュリティはデプロイメントが本番環境にリリースされる直前まで先延ばしにされてきました。この慣行は、すべての組織が遵守すべきセキュリティ標準があり、それが無視されたり遵守されなかったりして、成果物を達成するために多くのリスクを負うことになるため、プロジェクトの納品の遅延につながります。

Kubernetesの実装を学び始めたばかりの方、Kubernetesの理解ネットワークポリシーネットワークポリシーそれは気が遠くなるかもしれません。ただし、これは、アプリケーションを Kubernetes クラスターにデプロイする前に理解しておく必要がある基本的な要件の 1 つです。 Kubernetes とクラウドネイティブ アプリケーションについて学習する際には、「セキュリティを置き去りにしないでください」ということを忘れないでください。あなたのマントラ。

ネットワークポリシーの概念

ネットワークポリシーネットワークポリシーデータセンター環境でよく使用されるファイアウォールデバイスを置き換えます。ポッドポッドコンピューティングインスタンス、ルーターとスイッチへのネットワークプラグイン、およびストレージエリアネットワーク (SAN) へのボリューム。

デフォルトでは、Kubernetesネットワークポリシーはポッドポッドどこからでもトラフィックを受信します。ポッドのセキュリティを気にしないのであれば、これで問題ないかもしれません。ただし、重要なワークロードを実行している場合は、ポッドを保護する必要があります。クラスター内のトラフィック (入力トラフィックと出力トラフィックを含む) の制御は、ネットワーク ポリシーを通じて実現できます。

ネットワーク ポリシーを有効にするには、ネットワーク ポリシーをサポートするネットワーク プラグインが必要です。そうしないと、適用したルールが役に立たなくなります。

Kubernetes.io にはさまざまなネットワーク プラグインがリストされています。

  • CNIプラグイン: フォローコンテナネットワークインターフェースコンテナネットワークインターフェース相互運用性の実現を目的とした CNI 仕様。
    • Kubernetes は CNI 仕様のバージョン v0.4.0 に準拠しています。
  • Kubernetes プラグイン: ブリッジとホストネイティブの CNI プラグインを使用して基本的なcbr0を実装します。

ネットワークポリシーの適用

ネットワーク ポリシーを適用するには、ネットワーク ポリシーをサポートするネットワーク プラグインを備えた稼働中の Kubernetes クラスターが必要です。

ただし、まず、Kubernetes 環境でネットワーク ポリシーを使用する方法を理解する必要があります。 Kubernetes ネットワーク ポリシーにより、ポッドはどこからでもトラフィックを受信できるようになります。これは理想的な状況ではありません。ポッドのセキュリティを確保するには、ポッドが Kubernetes アーキテクチャ内で通信できるエンドポイントであることを理解する必要があります。

1. ポッド間の通信にはpodSelectorを使用します。

  1. - namespaceSelector :
  2. matchLabels :
  3. project : myproject

2. 名前空間間の通信および名前空間とポッド間の通信には、 namespaceSelectorおよび/またはpodSelectornamespaceSelectorの組み合わせを使用します。 :

  1. - namespaceSelector :
  2. matchLabels :
  3. project : myproject
  4. - podSelector :
  5. matchLabels :
  6. role : frontend

3. ポッドの IP ブロック通信の場合、 ipBlockを使用して、送信元と宛先を決定する IP CIDR ブロックを定義します。

  1. - ipBlock :
  2. cidr : 172.17 . 0.0 / 16
  3.         except :
  4.         - 172.17 . 1.0 / 24

ポッド、名前空間、IP ベースのポリシーの違いに注意してください。ポッドベースおよび名前空間ベースのネットワーク ポリシーでは、セレクターを使用してトラフィックを制御しますが、IP ベースのネットワーク ポリシーでは、IP ブロック (CIDR 範囲) を使用して制御を定義します。

すべてをまとめると、ネットワーク ポリシーは次のようになります。

  1. apiVersion : networking . k8s . io / v1
  2. kind : NetworkPolicy
  3. metadata :
  4. name : test - network - policy
  5.   namespace : default
  6. spec :
  7. podSelector :
  8. matchLabels :
  9. app : backend
  10. policyTypes :
  11.   - Ingress
  12.   - Egress
  13. ingress :
  14.   - from :
  15.     - ipBlock :
  16. cidr : 172.17 . 0.0 / 16
  17.         except :
  18.         - 192.168 . 1.0 / 24
  19.     - namespaceSelector :
  20. matchLabels :
  21. project : myproject
  22.     - podSelector :
  23. matchLabels :
  24. role : frontend
  25. ports :
  26.     - protocol : TCP
  27. port : 6379
  28. egress :
  29.   - to :
  30.     - ipBlock :
  31. cidr : 10.0 . 0.0 / 24
  32. ports :
  33.     - protocol : TCP
  34. port : 5978

上記のネットワークポリシーを参照し、 spec部分に注意してください。このセクションでは、ラベルapp=backendを持つpodSelectorネットワーク ポリシーのターゲットになります。つまり、ネットワーク ポリシーは、 backend呼ばれる特定の名前空間内のアプリケーションを保護します。

このセクションでは、 policyTypesも定義されています。このフィールドは、特定のポリシーが、選択したポッドへの入力トラフィック、選択したポッドへの出力トラフィック、またはその両方に適用されるかどうかを示します。

  1. spec :
  2. podSelector :
  3. matchLabels :
  4. app : backend
  5. policyTypes :
  6.   - Ingress
  7.   - Egress

次に、 IngressEgressセクションを見てみましょう。この定義は、ネットワーク ポリシーの制御を指定します。

まず、 ingress fromセクションを確認します。

この例では、ネットワーク ポリシーにより、次の場所からのポッド接続が許可されます。

  • ipBlock
    • 172.17.0.0/16 を許可する
    • 192.168.1.0/24を拒否
  • namespaceSelector
    • myproject : この名前空間から同じラベル project=myproject を持つすべてのポッドを許可します。
  • podSelector
    • frontend : ラベルrole=frontendに一致するポッドを許可します。
  1. ingress :
  2. - from :
  3.   - ipBlock :
  4. cidr : 172.17 . 0.0 / 16
  5.       except :
  6.       - 192.168 . 1.0 / 24
  7.   - namespaceSelector :
  8. matchLabels :
  9. project : myproject
  10.   - podSelector :
  11. matchLabels :
  12. role : frontend

次に、 egress toセクションを確認します。これにより、ポッドからの送信接続が決定されます。

  • ipBlock
    • 10.0.0.0/24: この CIDR への接続を許可する
    • ポート: TCP とポート 5978 を使用した接続を許可する
  1. egress :
  2. - to :
  3.   - ipBlock :
  4. cidr : 10.0 . 0.0 / 24
  5. ports :
  6.   - protocol : TCP
  7. port : 5978

ネットワークポリシーの制限

ネットワーク ポリシーだけでは Kubernetes クラスターを完全に保護することはできません。既知の制限を克服するには、オペレーティング システム コンポーネントまたはレイヤー 7 ネットワーク テクノロジを使用できます。ネットワーク ポリシーは、IP アドレスとポート レベル、つまり、オープン システム相互接続 (OSI) アーキテクチャのレイヤー 3 または 4 のセキュリティのみに対応することを覚えておく必要があります。

ネットワーク ポリシーで処理できないセキュリティ要件に対処するには、他のセキュリティ ソリューションを使用する必要があります。ここでは、ネットワーク ポリシーを他のテクノロジーで拡張する必要がある、知っておく必要のあるユース ケースをいくつか示します。

要約する

Kubernetes ネットワーク ポリシーを理解することは重要です。これは、データ センター環境で通常使用するファイアウォール ロールを Kubernetes 用に適応させて実装する方法 (置き換えるのではなく) であるためです。これをコンテナ セキュリティの最初のレイヤーと考えてください。ネットワーク ポリシーだけに頼るのは完全なセキュリティ ソリューションにはなりません。

ネットワーク ポリシーは、セレクターとラベルを使用して、ポッドと名前空間にセキュリティを実装します。さらに、ネットワーク ポリシーでは IP 範囲ごとにセキュリティを強制できます。

ネットワーク ポリシーを適切に理解することは、Kubernetes 環境でコンテナ化を安全に導入するための重要なスキルです。

<<:  Kubernetes のマルチコンテナ Pod 設計パターン

>>:  AWS、GCP、Azure との交渉時に避けるべき 6 つのリスク

推薦する

クラウドからクラウドレットへ: データ処理への新しいアプローチ?

重要なポイント端末デバイスからのデータがクラウドで処理されることが増えていますが、これはリソースを大...

シナジー:2020年第2四半期、中国のクラウドサービスプロバイダーは世界市場の12%以上を占めた

最近、市場調査会社Synergy Research Groupの最新データによると、世界中の企業は2...

地域コミュニティユーザーのアクセス習慣の形成ルール

地域社会を育むには、「環境」「理性」「交流」「口コミ」「蓄積」という5つの言葉を常に覚えておく必要が...

百度の最近の降格とKステーションに対する救済策

百度は2009年4月に鳳凰巣システムを立ち上げて以来、このシステムは継続的に更新されており、ウェブマ...

病院でブランドサービスマーケティングを成功させる方法

現在、どの都市にもさまざまな規模の病院があり、ユーザーには多くの選択肢があります。この点だけから見て...

かわいいマーケティング手法

数日前、外で誰かを待っていて退屈していたとき、KFCのレストランに入り、誰かを待っている間にインター...

アマゾン、グーグル、マイクロソフトは、クラウドコンピューティング分野の将来の課題に積極的に対応するために新しいデータセンターを構築します

海外メディアの報道によると、アマゾン、グーグル、マイクロソフトは、競争で有利な立場を獲得するため、今...

Pinduoduoはどのようにして成功を収めたのでしょうか?どのように動作するのでしょうか?

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

中国の検索エンジンの歴史

最近、Toutiao 検索がひっそりと開始されたことを発見した人もいます。かつて情報流通と短編動画の...

Baiduに含まれる新しいウェブサイトの調査

過去 1 か月ほど、Baidu は新しいサイトの登録を減速させています。監査パラメータはより厳しくな...

batucloud: トルコの VPS、10Gbps 帯域幅、月額 9 ドル、4G メモリ/2 コア/50g NVMe/10T トラフィック

batucloudは2009年に設立された当初は、主にゲームサーバー事業に従事していました。その後、...

アマゾン、グーグル、マイクロソフトがエッジコンピューティングに大賭け

3 大クラウドは、場所、ネットワーク、インフラストラクチャなどの主要なエッジ属性を部分的にしか制御で...

急いで!ソフトウェアの更新だけでなく、httpプロトコルも更新する必要があります

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

ピンドゥオドゥオの失敗

Pinduoduoとテスラは対立している。ピンドゥオドゥオは8月16日午後、上海のピンドゥオドゥオ共...

シンプルな分析:ウェブサイト最適化の真の意味

ウェブサイト最適化の真の意味ウェブサイトの最適化とは、ウェブサイトの機能、ウェブサイトの構造、ウェブ...