2.3. OpenShift 4.x 上の Fuse Console のロールベースアクセス制御
Fuse Console は、OpenShift によって提供されるユーザー承認に応じてアクセスを推測する、ロールベースアクセス制御 (RBAC) を提供します。Fuse Console では、RBAC はユーザーが Pod で MBean 操作を実行できるかどうかを判断します。
OpenShift の承認に関する詳細は、OpenShift ドキュメントの RBAC の使用によるパーミッションの定義および適用 を参照してください。
Operator を使用して OpenShift に Fuse Console をインストールした場合、ロールベースのアクセスはデフォルトで有効になります。
テンプレートを使用したインストールによって Fuse Console のロールベースアクセスを実装する場合は、RBAC で設定可能なテンプレートの 1 つ (fuse-console-cluster-rbac.yml
または fuse-console-namespace-rbac.yml
) を使用して、コマンドラインを使用した OpenShift 4.x での Fuse Console のインストールおよびデプロイ の説明どおりに、Fuse Console をインストールする必要があります。
Fuse Console RBAC は、OpenShift の Pod リソースでユーザーの verb (動詞) アクセスを利用して、Fuse Console の Pod の MBean 操作にユーザーがアクセスできるかどうかを判断します。デフォルトでは、Fuse Console には 2 つのユーザーロールがあります。
admin
ユーザーが OpenShift で Pod を 更新 できる場合、ユーザーには Fuse Console の admin ロールが付与されます。ユーザーは、Fuse Console で、その Pod に対して 書き込み の MBean 操作を実行できます。
viewer
ユーザーが OpenShift で Pod を 取得 できる場合、ユーザーには Fuse Console の viewer ロールが付与されます。ユーザーは、Fuse Console で、その Pod に対して 読み取り専用 の MBean 操作を実行できます。
RBAC 以外のテンプレートを使用して Fuse Console をインストールした場合、Pod リソースで update verb (動詞) が付与された OpenShift ユーザーのみが Fuse Console の MBeans 操作の実行が許可されます。Pod リソースで get verb (動詞) を付与されたユーザーは、Pod を 表示 できますが、Fuse Console の操作は実行できません。
関連情報
2.3.1. OpenShift 4.x での Fuse Console のアクセスロールの判断
Fuse Console のロールベースアクセス制御は、Pod に対するユーザーの OpenShift パーミッションから推測されます。特定のユーザーに付与された Fuse Console のアクセスロールを判断するには、Pod に対してユーザーに付与された OpenShift パーミッションを取得します。
前提条件
- ユーザーの名前を知っている必要があります。
- Pod の名前を知っている必要があります。
手順
ユーザーが Pod に対して Fuse Console の admin ロールを持っているかどうかを確認するには、以下のコマンドを実行してユーザーが OpenShift で Pod を更新できるかどうかを確認します。
oc auth can-i update pods/<pod> --as <user>
応答が
yes
の場合、ユーザーはその Pod に対して Fuse Console の admin ロールを持っています。ユーザーは、Fuse Console で、その Pod に対して 書き込み の MBean 操作を実行できます。ユーザーが Pod に対して Fuse Console の viewer ロールを持っているかどうかを確認するには、以下のコマンドを実行してユーザーが OpenShift で Pod を取得できるかどうかを確認します。
oc auth can-i get pods/<pod> --as <user>
応答が
yes
の場合、ユーザーはその Pod に対して Fuse Console の viewer ロールを持っています。ユーザーは、Fuse Console で、その Pod に対して 読み取り専用 の MBean 操作を実行できます。コンテキストによっては、Fuse Console でオプションを無効にしたり、ユーザーによる 書き込み MBean 操作の試行時に "operation not allowed for this user" メッセージを表示したりして、viewer ロールを持つユーザーによる 書き込み MBean 操作が実行されないようにします。応答が
no
の場合、ユーザーは Fuse Console のロールにバインドされず、ユーザーは Fuse Console で Pod を確認できません。
2.3.2. OpenShift 4.x での Fuse Console へのロールベースアクセスのカスタマイズ
OperatorHub を使用して Fuse Console をインストールした場合、OpenShift 4.x 上の Fuse Console のロールベースアクセス制御 で説明されているように、ロールベースアクセス制御 (RBAC) はデフォルトで有効になります。Fuse Console の RBAC 動作をカスタマイズする場合、Fuse Console をデプロイする前に ConfigMap ファイル (カスタムの RBAC 動作を定義する) を指定する必要があります。カスタム ConfigMap ファイルは、Fuse Console Operator をインストールした namespace に配置する必要があります。
コマンドラインテンプレートを使用して Fuse Console をインストールする場合、deployment-cluster-rbac.yml
および deployment-namespace-rbac.yml
テンプレートによって、設定ファイル (ACL.yml
) が含まれる ConfigMap が作成されます。設定ファイルでは、MBean 操作に許可されるロールが定義されます。
前提条件
-
OperatorHub または Fuse Console の RBAC テンプレート (
deployment-cluster-rbac.yml
またはdeployment-namespace-rbac.yml
) の 1 つを使用して、Fuse Console がインストール済みである必要があります。
手順
Fuse Console の RBAC ロールをカスタマイズする場合は、以下を行います。
コマンドラインを使用して Fuse Console をインストールした場合、インストールテンプレートにはデフォルトの ConfigMap ファイルが含まれるため、次のステップを省略できます。
OperatorHub を使用して Fuse Console をインストールした場合、Fuse Console をデプロイする前に RBAC ConfigMap を作成します。
現在の OpenShift プロジェクトが Fuse Console をインストールするプロジェクトであることを確認します。たとえば、Fuse Console を fusetest プロジェクトにインストールするには、以下のコマンドを実行します。
oc project fusetest
テンプレートから Fuse Console RBAC ConfigMap ファイルを作成するには、以下のコマンドを実行します。
oc process -f {sb2-templates-base-url}/fuse-console-operator-rbac.yml -p APP_NAME=fuse-console | oc create -f -
以下のコマンドを実行してエディターで ConfigMap を開きます。
oc edit cm $APP_NAME-rbac
以下に例を示します。
oc edit cm fuse-console-rbac
- ファイルを編集します。
- ファイルを保存して変更を適用します。Fuse Console の Pod は OpenShift によって自動的に再起動されます。
2.3.3. OpenShift 4.x での Fuse Console のロールベースアクセス制御の無効化
コマンドラインを使用して Fuse Console をインストールし、Fuse Console の RBAC テンプレートのいずれかを指定した場合、Fuse Console の HAWTIO_ONLINE_RBAC_ACL
環境変数は、ロールベースアクセス制御 (RBAC) の ConfigMap 設定ファイルのパスを OpenShift サーバーに渡します。HAWTIO_ONLINE_RBAC_ACL
環境変数が指定されていない場合、RBAC のサポートは無効になり、Pod リソース (OpenShift の) で update verb (動詞) が付与されたユーザーのみが Fuse Console の Pod で MBean 操作を呼び出すことが承認されます。
OperatorHub を使用して Fuse Console をインストールする場合は、ロールベースのアクセスはデフォルトで有効になり、HAWTIO_ONLINE_RBAC_ACL
環境変数は適用されません。
前提条件
コマンドラインを使用して Fuse Console がインストール済みで、Fuse Console の RBAC テンプレート (deployment-cluster-rbac.yml
または deployment-namespace-rbac.yml
) のいずれかを指定している。
手順
Fuse Console のロールベースのアクセスを無効にするには、以下を実行します。
- OpenShift で、Fuse Console の Deployment Config リソースを編集します。
HAWTIO_ONLINE_RBAC_ACL
環境変数の定義をすべて削除します。(値を消去するだけでは不十分です)。
- ファイルを保存して変更を適用します。Fuse Console の Pod は OpenShift によって自動的に再起動されます。