第1章 ポリシーを使用したサービスネットワークの保護
デフォルトでは、Application Interconnect には、サイト間のすべてのサービスネットワーク通信に相互 TLS を使用するなど、多くのセキュリティー機能が含まれています。デフォルトでは、ポリシーシステムをクラスターに適用すると、そのクラスターとの間のすべてのサービスネットワーク通信が防止されます。きめ細かいポリシーを指定して、必要なサービスネットワーク通信のみを許可します。
ポリシーシステムは Skupper CLI の使用 で説明されているように、Application Interconnect サービスへのアクセスを現在の名前空間に制限する network-policy オプションとは異なります。
サービスネットワーク内の各サイトには、Skupper ルーターを実行し、プライベートな専用認証局 (CA) があります。サイト間の通信は相互 TLS で保護されているため、サービスネットワークは外部アクセスから分離され、横方向の攻撃、マルウェアの侵入、データの漏えいなどのセキュリティーリスクを防ぎます。ポリシーシステムは、クラスター管理者がサービスネットワークへのアクセスを制御できるように、クラスターレベルで別のレイヤーを追加します。
このガイドは、次のアプリケーション相互接続の概念を理解していることを前提としています。
- site
- Application Interconnect がインストールされている namespace。
- token
- 2 つのサイト間のリンクを確立するには、トークンが必要です。
- サービスネットワーク
- Application Interconnect を使用してサービスを公開した後、サービスネットワークを作成しました。
1.1. ポリシーシステムについて リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者がカスタムリソース定義 (CRD) を使用してポリシーシステムをインストールした後、クラスター管理者は、開発者がサービスネットワーク上でサービスを作成および使用できるように 1 つ以上のポリシーを設定する必要があります。
このガイドでは、開発者とは、namespace にアクセスできるが管理者権限を持たないクラスターのユーザーを指します。
クラスター管理者は、カスタムリソース (CR) を使用して、次の 1 つ以上の項目を設定して通信を有効にします。
- 入力リンクを許可する
-
allowIncomingLinksを使用して、開発者がトークンを作成し、入力リンクを設定できるようにします。 - 特定のホストへの出力リンクを許可する
-
allowedOutgoingLinksHostnamesを使用して、開発者がリンクを作成できるホストを指定します。 - サービスを許可する
-
allowedServicesを使用して、開発者がサービスネットワーク上で作成または使用できるサービスを指定します。 - リソースの公開を許可する
-
allowedExposedResourcesを使用して、開発者がサービスネットワーク上で公開できるリソースを指定します。
クラスター管理者は、各ポリシー CR 設定を 1 つ以上の namespace に適用できます。
たとえば、次のポリシー CR は、以下を除くすべての namespace ですべてのアプリケーション相互接続機能を完全に許可します。
-
.example.comで終わるドメインへの出力リンクのみを許可します。 - deployment/nginx リソースのみをサービスネットワークに公開できます。
多くのポリシー CR を適用でき、許可された項目に競合がある場合は、最も許容度の高いポリシーが適用されます。たとえば、allowedOutgoingLinksHostnames: [] という行を含む追加のポリシー CR を適用する場合は、ホスト名をリストしない場合でも、元の CR で許可されているため、*.example.com への出力リンクは許可されます。
namespace- このポリシーが適用される namespace を指定するための 1 つ以上のパターン。ラベルセレクター を使用して namespace を一致させることができることに注意してください。
allowIncomingLinks-
他のサイトが指定された namespace へのリンクを作成できるようにするには、
trueを指定します。 allowedOutgoingLinksHostnames- 1 つ以上のパターンを指定して、指定したネームスペースからリンクを作成できるホストを決定します。
allowedServices- 1 つ以上のパターンを指定して、指定された名前空間からサービスネットワークで許可されるサービスの許可される名前を決定します。
allowedExposedResources- 指定された namespace から、サービストワークで許可されているリソースの 1 つ以上の許可された名前を指定します。パターンはサポートされていないことに注意してください。
正規表現を使用して、パターンの一致を作成します。次に例を示します。
-
.*\\.com$は、.comで終わる任意の文字列に一致します。YAML の問題を回避するには、二重の円記号が必要です。 -
^abc$は文字列abcと一致します。
特定の namespace の出力リンクを許可する別の CR を作成する場合、ユーザーはその名前空間からリンクを作成してサービスネットワークに参加できます。つまり、複数のポリシー CR のロジックは OR です。単一のポリシー CR で操作が許可されている場合、操作は許可されます。