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

Alibaba Cloud Service Mesh:OPA サイドカー注入範囲の制御

最終更新日:Apr 25, 2026

Open Policy Agent (OPA) プラグインは、アプリケーションに OPA サイドカープロキシを注入することでアクセス制御ポリシーを定義します。特定の名前空間内のアプリケーションに対してきめ細かな権限付与とアクセス制御が必要な場合は、注入範囲の制御を有効化できます。この機能を有効化すると、opa-istio-injection=enabled ラベルが付与された名前空間内のポッドにのみ OPA サイドカープロキシが注入され、より詳細なアクセス制御が可能になります。

前提条件

  • ASM インスタンスにクラスターを追加済みで、そのインスタンスのバージョンが 1.12.4.19 以降である必要があります。詳細については、「ASM インスタンスへのクラスターの追加」をご参照ください。

  • default 名前空間および develop 名前空間を作成済みである必要があります。詳細については、「名前空間とクォータの管理」をご参照ください。

  • default 名前空間に Nginx アプリケーションを、develop 名前空間に sleep アプリケーションをデプロイ済みである必要があります。詳細については、「ステートレス Deployment の作成」をご参照ください。

    Nginx および sleep の例

    1. 次の内容を使用して、nginx.yaml および sleep.yaml を作成します。

      nginx.yaml

      apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
              sidecarset-injected: "true"
          spec:
            containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
      spec:
        ports:
          - name: http
            port: 80
            protocol: TCP
            targetPort: 80
        selector:
          app: nginx
        type: ClusterIP

      sleep.yaml

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: sleep
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: sleep
        labels:
          app: sleep
          service: sleep
      spec:
        ports:
        - port: 80
          name: http
        selector:
          app: sleep
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sleep
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: sleep
        template:
          metadata:
            labels:
              app: sleep
          spec:
            terminationGracePeriodSeconds: 0
            serviceAccountName: sleep
            containers:
            - name: sleep
              image: curlimages/curl
              command: ["/bin/sleep", "infinity"]
              imagePullPolicy: IfNotPresent
              volumeMounts:
              - mountPath: /etc/sleep/tls
                name: secret-volume
            volumes:
            - name: secret-volume
              secret:
                secretName: sleep-secret
                optional: true
      ---
    2. 次のコマンドを実行して、default 名前空間に Nginx アプリケーションを、develop 名前空間に sleep アプリケーションをデプロイします。

      kubectl apply -f nginx.yaml -n default
      kubectl apply -f sleep.yaml -n develop

ステップ 1:OPA および範囲制御の有効化

本トピックでは、OPA プラグインおよび注入範囲制御を有効化した後、default 名前空間に opa-istio-injection=enabled ラベルを追加し、develop 名前空間には opa-istio-injection=enabled ラベルを追加しません。その後、Nginx および Sleep アプリケーションに OPA サイドカープロキシが注入されているかどうかを確認し、OPA サイドカープロキシの注入範囲を正常に制御できていることを検証できます。

  1. ASM コンソール にログインします。左側のナビゲーションウィンドウで、Service Mesh > Mesh 管理 を選択します。

  2. Mesh 管理 ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、Mesh Security Center > OPA ポリシー を選択します。

  3. OPA Policy ページで、Enable Open Policy Agent (OPA) Plugin および Enable OPA Injection Scope Control を選択します。次に、Enable OPA をクリックし、表示される Note ダイアログボックスで OK をクリックします。

ステップ 2:名前空間へのラベル付与

以下の手順では、ACK コンソールで default 名前空間に opa-istio-injection=enabled ラベルを追加する方法を説明します。または、kubectl を使用してクラスターに接続し、kubectl label namespace default opa-istio-injection=enabled --overwrite コマンドを実行してラベルを追加することもできます。クラスターへの接続方法の詳細については、「クラスターの KubeConfig を取得し、kubectl を使用してクラスターに接続する」をご参照ください。

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

  2. クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、名前空間とクォータ をクリックします。

  3. Namespaces ページで、default 名前空間の 操作 列にある 編集 をクリックします。

  4. 名前空間の編集 ダイアログボックスで、ラベル名を opa-istio-injection、値を enabled に設定し、追加 をクリックしてから、OK をクリックします。

ステップ 3:アプリケーションの再起動

ポッドを削除してアプリケーションを再起動し、OPA サイドカープロキシの自動注入をトリガーします。

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

  2. クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > ポッド をクリックします。

  3. ポッド ページで、名前空間default に設定します。Nginx アプリケーションのポッドの 操作 列で、その他 > 削除 をクリックします。ヒント ダイアログボックスで、OK をクリックします。

    アプリケーションに複数のポッドがある場合は、すべて削除して再起動してください。ポッドのステータスが Running になったら、再起動は成功です。

  4. 上記の手順を繰り返して、develop 名前空間内の sleep アプリケーションのポッドを再起動します。

ステップ 4:範囲制御の検証

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

  2. クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > ポッド をクリックします。

  3. ポッド ページで、Nginx および sleep アプリケーションに OPA サイドカープロキシが注入されているかどうかを確認します。

    • 名前空間default に設定し、Nginx アプリケーションの名前をクリックします。コンテナー タブに opa-istio が表示されていれば、Nginx アプリケーションに OPA サイドカープロキシが注入されていることを示します。注入OPA

    • 名前空間develop に設定し、sleep アプリケーションの名前をクリックします。コンテナー タブに opa-istio が表示されていなければ、sleep アプリケーションに OPA サイドカープロキシが注入されていないことを示します。sleep

    これらの結果から、注入範囲制御を有効化すると、opa-istio-injection=enabled ラベルが付与された名前空間内のアプリケーションには OPA サイドカープロキシが注入され、opa-istio-injection=enabled ラベルが付与されていない名前空間内のアプリケーションには注入されないことが確認できます。これにより、注入範囲制御が期待どおりに機能していることが証明されます。