12.7. EventPolicy の適用


このセクションでは、イベント配信をセキュリティーで保護するために EventPolicy を適用するためのエンドツーエンドの手順を説明します。次の参照例では、namespace-1 のブローカーは、別の namespace である namespace-2 で実行されている PingSource からのイベントのみを受け入れるように設定されています。

前提条件

  • OpenShift Serverless Operator および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
  • authentication-oidc 機能が有効になっている。

手順

  1. 2 つの namespace を作成し、namespace-1 にブローカーをデプロイし、次の例に示すように namespace ごとに 1 つの PingSource を設定します。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: namespace-1
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: namespace-2
    ---
    apiVersion: eventing.knative.dev/v1
    kind: Broker
    metadata:
      name: broker
      namespace: namespace-1
    ---
    # PingSource in namespace-1
    apiVersion: sources.knative.dev/v1
    kind: PingSource
    metadata:
      name: pingsource-1
      namespace: namespace-1
    spec:
      data: '{"message": "Hi from pingsource-1 from namespace-1"}'
      schedule: '*/1 * * * *'
      sink:
        ref:
          apiVersion: eventing.knative.dev/v1
          kind: Broker
          name: broker
          namespace: namespace-1
    ---
    # PingSource in namespace-2
    apiVersion: sources.knative.dev/v1
    kind: PingSource
    metadata:
      name: pingsource-2
      namespace: namespace-2
    spec:
      data: '{"message": "Hi from pingsource-2 from namespace-2"}'
      schedule: '*/1 * * * *'
      sink:
        ref:
          apiVersion: eventing.knative.dev/v1
          kind: Broker
          name: broker
          namespace: namespace-1
    Copy to Clipboard Toggle word wrap
  2. 次の例に示すように、受信イベントを表示する event-display サービスを作成し、それをブローカーに接続するためのトリガーを追加します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: event-display
      namespace: namespace-1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: event-display
      template:
        metadata:
          labels:
            app: event-display
        spec:
          containers:
            - name: event-display
              image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display
              ports:
              - containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: event-display
      namespace: namespace-1
    spec:
      selector:
        app: event-display
      ports:
        - name: http
          port: 80
          targetPort: 8080
    ---
    apiVersion: eventing.knative.dev/v1
    kind: Trigger
    metadata:
      name: trigger
      namespace: namespace-1
    spec:
      broker: broker
      subscriber:
        ref:
          apiVersion: v1
          kind: Service
          name: event-display
    Copy to Clipboard Toggle word wrap

    この段階では、OIDC が無効になっており、EventPolicy が適用されていないため、イベント表示サービスは両方の PingSource からのイベントを表示します。

  3. 次のサンプルコマンドを実行して、Knative Eventing で OIDC を有効にし、EventPolicy を作成します。

    $ oc -n knative-eventing patch KnativeEventing knative-eventing \
      --type merge \
      -p '{"spec":{"config":{"features":{"authentication-oidc":"enabled"}}}}'
    Copy to Clipboard Toggle word wrap
  4. OIDC が有効になったら、次の例に示すように、namespace-2 からの PingSource のみを承認する EventPolicy を作成します。

    apiVersion: eventing.knative.dev/v1alpha1
    kind: EventPolicy
    metadata:
      name: event-policy
      namespace: namespace-1
    spec:
      to:
        - ref:
            apiVersion: eventing.knative.dev/v1
            kind: Broker
            name: broker
      from:
        - ref:
            apiVersion: sources.knative.dev/v1
            kind: PingSource
            name: pingsource-2
            namespace: namespace-2
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、EventPolicy を検証し、ブローカーのステータスを確認します。

    $ oc -n namespace-1 get broker broker -o yaml
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、event-display サービスからのログを表示し、pingsource-2 イベントのみが到着していることを確認します。

    $ oc -n namespace-1 logs -f -l app=event-display
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して EventPolicy を削除します。

    $ oc -n namespace-1 delete eventpolicy event-policy
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、ブローカーのステータスをチェックし、デフォルトの allow-same-namespace モードに戻っていることを確認します。

    $ oc -n namespace-1 get broker broker -o yaml
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、event-display サービスログを表示し、同じ namespace からの pingsource-1 イベントのみが表示されることを確認します。

    $ oc -n namespace-1 logs -f -l app=event-display
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat