Open Policy Agent (OPA) プラグインは、アプリケーションに OPA サイドカープロキシを注入することでアクセス制御ポリシーを定義します。特定の名前空間内のアプリケーションに対してきめ細かな権限付与とアクセス制御が必要な場合は、注入範囲の制御を有効化できます。この機能を有効化すると、opa-istio-injection=enabled ラベルが付与された名前空間内のポッドにのみ OPA サイドカープロキシが注入され、より詳細なアクセス制御が可能になります。
前提条件
ASM インスタンスにクラスターを追加済みで、そのインスタンスのバージョンが 1.12.4.19 以降である必要があります。詳細については、「ASM インスタンスへのクラスターの追加」をご参照ください。
default名前空間およびdevelop名前空間を作成済みである必要があります。詳細については、「名前空間とクォータの管理」をご参照ください。default名前空間に Nginx アプリケーションを、develop名前空間に sleep アプリケーションをデプロイ済みである必要があります。詳細については、「ステートレス Deployment の作成」をご参照ください。
ステップ 1:OPA および範囲制御の有効化
本トピックでは、OPA プラグインおよび注入範囲制御を有効化した後、default 名前空間に opa-istio-injection=enabled ラベルを追加し、develop 名前空間には opa-istio-injection=enabled ラベルを追加しません。その後、Nginx および Sleep アプリケーションに OPA サイドカープロキシが注入されているかどうかを確認し、OPA サイドカープロキシの注入範囲を正常に制御できていることを検証できます。
-
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh 管理 ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
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 を使用してクラスターに接続する」をご参照ください。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、名前空間とクォータ をクリックします。
Namespaces ページで、default 名前空間の 操作 列にある 編集 をクリックします。
名前空間の編集 ダイアログボックスで、ラベル名を opa-istio-injection、値を enabled に設定し、追加 をクリックしてから、OK をクリックします。
ステップ 3:アプリケーションの再起動
ポッドを削除してアプリケーションを再起動し、OPA サイドカープロキシの自動注入をトリガーします。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
ポッド ページで、名前空間 を default に設定します。Nginx アプリケーションのポッドの 操作 列で、 をクリックします。ヒント ダイアログボックスで、OK をクリックします。
アプリケーションに複数のポッドがある場合は、すべて削除して再起動してください。ポッドのステータスが Running になったら、再起動は成功です。
上記の手順を繰り返して、
develop名前空間内の sleep アプリケーションのポッドを再起動します。
ステップ 4:範囲制御の検証
ACK コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
ポッド ページで、Nginx および sleep アプリケーションに OPA サイドカープロキシが注入されているかどうかを確認します。
名前空間 を default に設定し、Nginx アプリケーションの名前をクリックします。コンテナー タブに opa-istio が表示されていれば、Nginx アプリケーションに OPA サイドカープロキシが注入されていることを示します。

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

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