すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:HTTP リクエストに対する承認ポリシーの設定

最終更新日:Jan 14, 2025

サービス間の HTTP リクエストをきめ細かく制御するために、HTTP リクエストに対する承認ポリシーを設定して、サービスインタラクション権限を管理できます。これにより、承認されたリクエストのみが特定のサービスにアクセスできるようになり、サービスのセキュリティと信頼性が向上します。

前提条件

ステップ 1:空の承認ポリシーを設定する

次の例は、空の承認ポリシーに基づいてワークロードへのアクセス権限を取得するために承認ポリシーを設定する方法を示しています。空の承認ポリシーは、ワークロードへのアクセスを開始したすべてのリクエストを拒否する基本的な拒否ポリシーです。

  1. ASM コンソール にログインします。左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[メッシュセキュリティセンター] > [承認ポリシー] を選択します。表示されたページで、[YAML から作成] をクリックします。

  3. [作成] ページで、既定[名前空間] ドロップダウンリストから YAML作成 を選択し、テンプレートを選択し、次の内容を コードエディターにコピーして、 をクリックします。

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: allow-nothing
      namespace: default
    spec:
      {}

    その後、[承認ポリシー] ページで [allow-nothing] 承認ポリシーを表示できます。

  4. ブラウザーのアドレスバーに http://{IP address of your ASM gateway}/productpage と入力して、Bookinfo アプリケーションにアクセスします。

    RBAC: access denied メッセージが返されます。これは、アクセス権限がないことを示しています。ゲートウェイの IP アドレスを取得する方法の詳細については、「Istio リソースを使用してトラフィックをサービスの異なるバージョンにルーティングする」をご参照ください。

ステップ 2:productpage サービスの承認ポリシーを設定する

  1. ASM コンソール にログインします。左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[メッシュセキュリティセンター] > [承認ポリシー] を選択します。

  3. 次のいずれかの方法を使用して、Productpage サービスへのアクセスを許可する承認ポリシーを設定します。

    方法 1:YAML を使用して承認ポリシーを作成する

    1. [承認ポリシー] ページで、[YAML から作成] をクリックします。

    2. [作成] ページで、[名前空間] ドロップダウンリストから [default] を選択し、テンプレートを選択し、次の内容を [YAML] コードエディターにコピーして、[作成] をクリックします。

      apiVersion: security.istio.io/v1beta1
      kind: AuthorizationPolicy
      metadata:
        name: "productpage-viewer"
        namespace: default
      spec:
        selector:
          matchLabels:
            app: productpage
        action: ALLOW
        rules:
        - to:
          - operation:
              methods: ["GET"]

    方法 2:グラフィカルユーザーインターフェース (GUI) を使用して承認ポリシーを作成する

    1. [承認ポリシー] ページで、[作成] をクリックします。

    2. [作成] ページで、次のパラメーターを設定し、[作成] をクリックします。

      パラメーター

      説明

      名前

      承認ポリシーの名前。この例では、値は productpage-viewer に設定されています。

      ポリシータイプ

      承認アクション。この例では、値は [許可] に設定されています。

      名前空間

      承認ポリシーを作成する名前空間。この例では、[ワークロードスコープ] タブの [名前空間] パラメーターは [default] に設定されています。

      有効スコープ

      承認ポリシーの有効スコープ。この例では、値は [サービス] に設定されています。

      ワークロード

      承認ポリシーが有効になるワークロード。この例では、値は [productpage] に設定されています。

      リクエストマッチングルール

      HTTP リクエストを処理する方法。この例では、[リクエストターゲットの追加] セクションで [メソッド] がオンになっており、値は GET に設定されています。

    その後、[承認ポリシー] ページに [productpage-viewer] 承認ポリシーが表示されます。

  4. ブラウザーのアドレスバーに http://{IP address of your ASM gateway}/productpage と入力して、Bookinfo アプリケーションにアクセスします。

    次の図の結果は、productpage サービスにはアクセスできますが、details サービスまたは reviews サービスにはアクセスできないことを示しています。これは、productpage サービス用に設定した承認ポリシーが、HTTP GET リクエストによる productpage サービスへのアクセスを許可しているためです。访问Productpage页面

ステップ 3:details サービスの承認ポリシーを設定する

details サービスの承認ポリシーを設定して、productpage サービスのサービスアカウントから送信されたリクエストが details サービスにアクセスできるようにすることができます。

  1. productpage サービスのサービスアカウントを取得します。

    1. ACK コンソール にログインします。左側のナビゲーションペインで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のペインで、[ワークロード] > [デプロイメント] を選択します。

    3. [デプロイメント] ページで、[productpage-v1] サービスを見つけて、その他 > YAML で表示[アクション] 列の サービスアカウント を選択します。[YAML の編集] ダイアログボックスで、 パラメーターの値を取得します。

      次の図に示すように、serviceAccount パラメーターの値は bookinfo-productpage です。获取Productpage的serviceAccount

  2. 承認ポリシーを作成します。

    1. ASM コンソール にログインします。左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[メッシュセキュリティセンター] > [承認ポリシー] を選択します。

    3. 次のいずれかの方法を使用して、承認ポリシーを作成します。

      方法 1:YAML を使用して承認ポリシーを作成する

      1. [承認ポリシー] ページで、[YAML から作成] をクリックします。

      2. [作成] ページで、[名前空間] ドロップダウンリストから [default] を選択し、テンプレートを選択し、次の内容を [YAML] コードエディターにコピーして、[作成] をクリックします。

        kind: AuthorizationPolicy
        apiVersion: security.istio.io/v1beta1
        metadata:
          name: details-viewer
          namespace: default
        spec:
          action: ALLOW
          rules:
            - to:
                - operation:
                    methods:
                      - GET
            - from:
                - source:
                    principals:
                      - cluster.local/ns/default/sa/bookinfo-productpage # bookinfo-productpage は serviceAccount パラメーターの値で、前のステップで取得したものです。
          selector:
            matchLabels:
              app: details

      方法 2:GUI を使用して承認ポリシーを作成する

      1. [承認ポリシー] ページで、[作成] をクリックします。

      2. [作成] ページで、次のパラメーターを設定し、[作成] をクリックします。

        パラメーター

        説明

        名前

        承認ポリシーの名前。この例では、値は details-viewer に設定されています。

        ポリシータイプ

        承認アクション。この例では、値は [許可] に設定されています。

        名前空間

        承認ポリシーを作成する名前空間。この例では、[ワークロードスコープ] タブの [名前空間] パラメーターは [default] に設定されています。

        有効スコープ

        承認ポリシーの有効スコープ。この例では、値は [サービス] に設定されています。

        ワークロード

        承認ポリシーが有効になるワークロード。この例では、値は [details] に設定されています。

        リクエストマッチングルール

        1. リクエストの送信元。この例では、[リクエスト送信元の追加] セクションで [プリンシパル] がオンになっており、値は cluster.local/ns/default/sa/bookinfo-productpage に設定されています。

          説明

          bookinfo-productpageserviceAccount パラメーターの値で、サブステップ 1 で取得したものです。

        2. HTTP リクエストを処理する方法。この例では、[リクエストターゲットの追加] セクションで [メソッド] がオンになっており、値は GET に設定されています。

      その後、[承認ポリシー] ページに [details-viewer] 承認ポリシーが表示されます。

  3. ブラウザーのアドレスバーに http://{IP address of your ASM gateway}/productpage と入力して、Bookinfo アプリケーションにアクセスします。

    次の図の結果は、左側の details サービスにはアクセスできますが、右側の reviews サービスにはアクセスできないことを示しています。Details服务

ステップ 4:reviews サービスの承認ポリシーを設定する

  1. ASM コンソール にログインします。左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[メッシュセキュリティセンター] > [承認ポリシー] を選択します。

  3. 次のいずれかの方法を使用して、承認ポリシーを作成します。

    方法 1:YAML を使用して承認ポリシーを作成する

    1. [承認ポリシー] ページで、[YAML から作成] をクリックします。

    2. [作成] ページで、[名前空間] ドロップダウンリストから [default] を選択し、テンプレートを選択し、次の内容を [YAML] コードエディターにコピーして、[作成] をクリックします。

      kind: AuthorizationPolicy
      apiVersion: security.istio.io/v1beta1
      metadata:
        name: reviews-viewer
        namespace: default
      spec:
        action: ALLOW
        rules:
          - to:
              - operation:
                  methods:
                    - GET
          - from:
              - source:
                  principals:
                    - cluster.local/ns/default/sa/bookinfo-productpage
        selector:
          matchLabels:
            app: reviews

    方法 2:GUI を使用して承認ポリシーを作成する

    1. [承認ポリシー] ページで、[作成] をクリックします。

    2. [作成] ページで、次のパラメーターを設定し、[作成] をクリックします。

      パラメーター

      説明

      名前

      承認ポリシーの名前。この例では、値は reviews-viewer に設定されています。

      ポリシータイプ

      承認アクション。この例では、値は [許可] に設定されています。

      名前空間

      承認ポリシーを作成する名前空間。この例では、[ワークロードスコープ] タブの [名前空間] パラメーターは [default] に設定されています。

      有効スコープ

      承認ポリシーの有効スコープ。この例では、値は [サービス] に設定されています。

      ワークロード

      承認ポリシーが有効になるワークロード。この例では、値は [reviews] に設定されています。

      リクエストマッチングルール

      1. リクエストの送信元。この例では、[リクエスト送信元の追加] セクションで [プリンシパル] がオンになっており、値は cluster.local/ns/default/sa/bookinfo-productpage に設定されています。

        説明

        bookinfo-productpageserviceAccount パラメーターの値で、サブステップ 1 で取得したものです。

      2. HTTP リクエストを処理する方法。この例では、[リクエストターゲットの追加] セクションで [メソッド] がオンになっており、値は GET に設定されています。

    その後、[承認ポリシー] ページに [reviews-viewer] 承認ポリシーが表示されます。

  4. ブラウザーのアドレスバーに http://{IP address of your ASM gateway}/productpage と入力して、Bookinfo アプリケーションにアクセスします。

    次の図の結果は、左側の details サービスと右側の reviews サービスの両方にアクセスできることを示しています。Reviews服务

参考資料