4.11. 認可ポリシーの追加


Layer 7 (L7) 認可ポリシーを使用して、curl サービスが productpage サービスに GET 要求を送信することを明示的に許可し、他のすべての操作をブロックします。

手順

  1. 次の例のような認可ポリシーを作成します。

    設定例

    apiVersion: security.istio.io/v1
    kind: AuthorizationPolicy
    metadata:
      name: productpage-waypoint
      namespace: info
    spec:
      targetRefs:
      - kind: Service
        group: ""
        name: productpage
      action: ALLOW
      rules:
      - from:
        - source:
            principals:
            - cluster.local/ns/curl/sa/curl
        to:
        - operation:
            methods: ["GET"]
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、認可ポリシーを適用します。

    $ oc apply -f authorization-policy.yaml
    Copy to Clipboard Toggle word wrap
注記

targetRefs フィールドは、waypoint プロキシーの認可ポリシーの対象となるサービスを指定します。

検証

  1. 次のコマンドを実行して、curl クライアントの namespace を作成します。

    $ oc create namespace curl
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、curl クライアントをデプロイします。

    $ oc apply -n curl -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yaml
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、アンビエントモードのラベルを curl namespace に適用します。

    $ oc label namespace curl istio.io/dataplane-mode=ambient
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、default/curl Pod から productpage サービスへの GET リクエストが HTTP 200 応答で成功することを確認します。

    $ oc -n curl exec deploy/curl -- sh -c \
      'curl -s -o /dev/null -w "HTTP %{http_code}\n" http://productpage.info.svc.cluster.local:9080/productpage'
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、適用された認可ポリシーにより、同じサービスへの POST 要求が HTTP 403 応答で拒否されることを確認します。

    $ oc -n curl exec deploy/curl -- sh -c \
      'curl -s -o /dev/null -w "HTTP %{http_code}\n" -X POST http://productpage.info.svc.cluster.local:9080/productpage'
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、info namespace の ratings Pod などの別のサービスからの GET 要求も RBAC: access denied で拒否されていることを確認します。

    $ oc exec "$(oc get pod -l app=ratings -n info \
    -o jsonpath='{.items[0].metadata.name}')" \
    -c ratings -n info \
    -- curl -sS productpage:9080/productpage
    Copy to Clipboard Toggle word wrap
  7. 以下のコマンドを実行してリソースをクリーンアップします。

    1. 次のコマンドを実行して、curl アプリケーションを削除します。

      $ oc delete -n curl -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yaml
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、curl namespace を削除します。

      $ oc delete namespace curl
      Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat