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