Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。
この記事は、Red Hat Developerのブログ記事、How to log into Cryostat 2.1 on OpenShift: SSO for all | Red Hat Developer の翻訳記事です。
Kubernetes上でJDK Flight Recorderのデータを管理するツールであるCryostatは、Cryostat 2.1の技術プレビューリリースとして、Red Hat OpenShift上の組み込みOAuthサーバーに統合されました。OpenShift上のCryostatにログインすると、OpenShiftのログインページにリダイレクトされ、OpenShiftのユーザーアカウントに対応するユーザー名とパスワードを入力するよう促されます。成功すると、複数のセッションでログイン状態を維持できます(デフォルトで24時間)。
CryostatはOpenShiftの認証を何に使っているのですか?
Cryostatがコンテナ化されたJava仮想マシン(JVM)で動作するJavaアプリケーションを監視するために、CryostatはCryostatがデプロイされている同じ名前空間内でターゲットアプリケーションを検索します。これは、Cryostat が Pod やデプロイメントなどの Kubernetes オブジェクトを検出するために、OpenShift ユーザーアカウントからの権限が必要であることを意味します。ユーザがターゲットアプリケーション上で JDK フライトレコーディングを開始、停止、または保存するリクエストを行うたびに、Cryostat はユーザのリクエストが同じ名前空間から来ること、およびユーザが各ターゲットアプリケーション上の JDK フライトレコーディングを表示および管理するアクセス権を持っていることを確認します。
Cryostat 2.0からのCryostat認証の変更点
Cryostat 2.0では、ユーザーはOpenShiftコンソールからCryostatログインページに認証トークンを貼り付け、ブラウザセッションの更新時にトークンを再入力する必要がありました。
Cryostat 2.1では、OpenShiftのOAuthサーバとCryostatのRBAC権限を組み合わせ、OpenShiftのユーザアカウントごとに設定可能な権限をユーザに与えています。デフォルトでは、各Webブラウザセッションは24時間継続します。
Cryostat 2.1へのログイン方法
この記事は、OpenShift 4.6+のクラスタでCryostatのインスタンスが動作していることを想定しています。Cryostat のインストール方法については、Getting started with Cryostat 2.1 を参照してください。
Cryostatのインスタンスが稼働したら、OpenShiftのWebコンソールにログインし、Installed Operatorsに移動し、Cryostat Operatorを選択します。そこから、[Cryostat]タブで目的のCryostatインスタンスを選択します。[Application URL] リンクをクリックしてログイン画面にアクセスし、OpenShift ユーザアカウントのユーザ名とパスワードを入力します。
Cryostatのすべての機能にアクセスするには、OpenShiftのユーザアカウントにRBAC権限を要求する必要があるかもしれません。制限された権限を持つユーザーは、それらが許可されているCryostatの機能のみにアクセスできます。例えば、読み取り専用権限を持つユーザは、他のユーザが作成したJDKフライトレコーディングを見れますが、レコーディングを作成したり削除できません。この記事の執筆時点では、Cryostat の全機能にアクセスするためには以下の権限を持つユーザが必要です。
- apiGroups: - "" resources: - pods verbs: - create - get - apiGroups: - "" resources: - replicationcontrollers - endpoints verbs: - get - apiGroups: - operator.cryostat.io resources: - cryostats verbs: - create - delete - get - apiGroups: - operator.cryostat.io resources: - flightrecorders - recordings verbs: - create - delete - get - patch - apiGroups: - apps resources: - deployments verbs: - create - get - apiGroups: - apps resources: - daemonsets - replicasets - statefulsets verbs: - get
CryostatのRBAC権限の概要
複数のユーザーが一つの名前空間でCryostatを使用してJDKフライトレコーディングを管理しており、各ユーザにCryostatの機能に対する特定の権限を与えたい場合、希望のCryostat固有のRBAC権限を持つロールを作成し、そのロールを希望のユーザアカウントに紐付けます。
一般的に、Cryostatは前のセクションで列挙した apiGroups: ""
と apiGroups: apps
リソースに対して get
パーミッションを使用し、名前空間内の任意のターゲットアプリケーションを検出します。Cryostatのflightrecorders
とrecording
リソースに対するcreate
、delete
、get
、patch
パーミッションは、ユーザーがターゲットアプリケーションからJDKフライトレコーディングを作成、削除、取得、保存できるようにします。
まとめ
この記事では、OpenShift 上の Cryostat 2.1 にログインする方法を説明し、ユーザーアカウントに必要な RBAC 権限の概略を説明します。RBAC権限の定義の詳細については、OpenShift Container Platformのドキュメントをご覧ください。Cryostatの詳細については、cryostat.ioを参照してください。質問、コメント、フィードバックについては、Githubで私たちとつながるか、メーリングリストに参加することをお気軽にどうぞ。