6.2. OpenShift 4 上の HawtIO のロールベースアクセス制御
HawtIO は、OpenShift によって提供されるユーザー承認に応じてアクセスを推測する、ロールベースアクセス制御 (RBAC) を提供します。HawtIO では、RBAC によって、ユーザーが Pod 上で MBean 操作を実行できるかどうかが決定されます。
OpenShift の承認に関する詳細は、OpenShift ドキュメントの RBAC の使用によるパーミッションの定義および適用 を参照してください。
Operator を使用して OpenShift に HawtIO をインストールすると、ロールベースのアクセスがデフォルトで有効になります。HawtIO RBAC は、OpenShift の Pod リソースでユーザーの verb アクセスを利用して、HawtIO での Pod の MBean 操作へのユーザーのアクセスを決定します。デフォルトでは、HawtIO には 2 つのユーザーロールがあります。
- admin: ユーザーが OpenShift で Pod を更新できる場合、ユーザーには HawtIO の admin ロールが付与されます。ユーザーは、HawtIO で Pod の書き込み MBean 操作を実行できます。
- viewer: ユーザーが OpenShift で Pod を取得できる場合、ユーザーには HawtIO の viewer ロールが付与されます。ユーザーは、HawtIO で Pod の読み取り専用 MBean 操作を実行できます。
6.2.1. OpenShift 4 上の HawtIO のアクセスロールの決定
HawtIO のロールベースアクセス制御は、Pod に対するユーザーの OpenShift パーミッションから推測されます。特定のユーザーに付与された HawtIO アクセスロールを確認するには、Pod に対してユーザーに付与される OpenShift パーミッションを取得します。
前提条件:
- ユーザーの名前
- Pod の名前
手順:
ユーザーが Pod に対して HawtIO の admin ロールを持っているかどうかを確認するには、以下のコマンドを実行してユーザーが OpenShift で Pod を更新できるかどうかを確認します。
oc auth can-i update pods/<pod> --as <user>
- 応答が yes の場合、ユーザーには Pod の admin ロールがあります。ユーザーは、HawtIO で Pod の書き込み操作を実行できます。
ユーザーが Pod に対して HawtIO の viewer ロールを持っているかどうかを確認するには、以下のコマンドを実行してユーザーが OpenShift で Pod を取得できるかどうかを確認します。
oc auth can-i get pods/<pod> --as <user>
- 応答が yes の場合、ユーザーには Pod の viewer ロールがあります。ユーザーは、HawtIO で Pod の読み取り専用操作を実行できます。コンテキストに応じて、HawtIO は、オプションを無効にするか、ユーザーが書き込み MBean 操作を試行したときに operation not allowed for this user メッセージを表示することによって、viewer ロールを持つユーザーが書き込み MBean 操作を実行できないようにします。
- 応答が no の場合、ユーザーはどの HawtIO ロールにもバインドされておらず、ユーザーは HawtIO で Pod を表示できません。
6.2.2. OpenShift 4 上の HawtIO へのロールベースアクセスのカスタマイズ
OperatorHub を使用して HawtIO をインストールする場合、ロールベースのアクセス制御 (RBAC) がデフォルトで有効になります。HawtIO の RBAC 動作をカスタマイズするには、HawtIO をデプロイメントする前に、(カスタム RBAC 動作を定義する) ConfigMap リソースを提供する必要があります。この ConfigMap の名前は、HawtIO カスタムリソース (CR) の rbac 設定セクションに入力する必要があります。
カスタム ConfigMap リソースは、HawtIO Operator がインストールされているのと同じ namespace に追加する必要があります。
前提条件:
- HawtIO Operator が OperatorHub からインストールされている。
手順:
HawtIO RBAC ロールをカスタマイズするには、以下を実行します。
RBAC ConfigMap を作成します。
現在の OpenShift プロジェクトが、HawtIO をインストールするプロジェクトであることを確認します。たとえば、hawtio-test プロジェクトに HawtIO をインストールするには、以下のコマンドを実行します。
oc project hawtio-test
テンプレートから HawtIO RBAC ConfigMap ファイルを作成し、以下のコマンドを実行します。
oc process -f https://raw.githubusercontent.com/hawtio/hawtio-online/2.x/docker/ACL.yaml -p APP_NAME=custom-hawtio | oc create -f -
以下のコマンドを使用して、新しいカスタム ConfigMap を編集します。
oc edit ConfigMap custom-hawtio-rbac
- 編集を保存すると、ConfigMap リソースが更新されます。
- 上記のように新しい HawtIO CR を作成し、configMap プロパティーの下に新しい ConfigMap の名前を追加して rbac セクションを編集します。
- Create をクリックします。Operator はカスタム ConfigMap を利用して、HawtIO の新しいバージョンをデプロイする必要があります。