12.7. EventPolicy の適用


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

前提条件

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

手順

  1. 2 つの namespace を作成し、Broker を 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 サービスを作成して受信イベントを表示し、これを Broker に接続するための Trigger を追加します。

    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 が適用されていないため、event-display サービスは両方の PingSources からのイベントを表示します。

  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 を確認し、以下のコマンドを実行して Broker のステータスを確認します。

    $ 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

© 2025 Red Hat