12.7. EventPolicy の適用
このセクションでは、イベント配信をセキュリティーで保護するために EventPolicy を適用するためのエンドツーエンドの手順を説明します。次の参照例では、namespace-1 のブローカーは、別の namespace である namespace-2 で実行されている PingSource からのイベントのみを受け入れるように設定されています。
前提条件
- OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
-
authentication-oidc機能が有効になっている。
手順
2 つの namespace を作成し、
namespace-1にブローカーをデプロイし、次の例に示すように namespace ごとに 1 つのPingSourceを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、受信イベントを表示する event-display サービスを作成し、それをブローカーに接続するためのトリガーを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この段階では、OIDC が無効になっており、EventPolicy が適用されていないため、イベント表示サービスは両方の PingSource からのイベントを表示します。
次のサンプルコマンドを実行して、Knative Eventing で OIDC を有効にし、EventPolicy を作成します。
oc -n knative-eventing patch KnativeEventing knative-eventing \ --type merge \ -p '{"spec":{"config":{"features":{"authentication-oidc":"enabled"}}}}'$ oc -n knative-eventing patch KnativeEventing knative-eventing \ --type merge \ -p '{"spec":{"config":{"features":{"authentication-oidc":"enabled"}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow OIDC が有効になったら、次の例に示すように、
namespace-2からの PingSource のみを承認する EventPolicy を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、EventPolicy を検証し、ブローカーのステータスを確認します。
oc -n namespace-1 get broker broker -o yaml
$ oc -n namespace-1 get broker broker -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、event-display サービスからのログを表示し、
pingsource-2イベントのみが到着していることを確認します。oc -n namespace-1 logs -f -l app=event-display
$ oc -n namespace-1 logs -f -l app=event-displayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して EventPolicy を削除します。
oc -n namespace-1 delete eventpolicy event-policy
$ oc -n namespace-1 delete eventpolicy event-policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ブローカーのステータスをチェックし、デフォルトの
allow-same-namespaceモードに戻っていることを確認します。oc -n namespace-1 get broker broker -o yaml
$ oc -n namespace-1 get broker broker -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、event-display サービスログを表示し、同じ namespace からの
pingsource-1イベントのみが表示されることを確認します。oc -n namespace-1 logs -f -l app=event-display
$ oc -n namespace-1 logs -f -l app=event-displayCopy to Clipboard Copied! Toggle word wrap Toggle overflow