5.3. Apicurio Registry の認証および承認の設定オプション
Apicurio Registry は、Red Hat Single Sign-On または HTTP 基本認証を使用した OpenID Connect の認証オプションを提供します。
Apicurio Registry には、ロールベースおよびコンテンツベースのアプローチの承認オプションが用意されています。
- デフォルトの管理者、書き込み、および読み取り専用のユーザーロールに対するロールベースの承認。
- アーティファクトまたはアーティファクトグループの所有者のみがアーティファクトを更新または削除できるスキーマまたは API アーティファクトのコンテンツベースの承認。
Apicurio Registry のすべての認証および承認オプションはデフォルトで無効になっています。これらのオプションのいずれかを有効にする前に、まず AUTH_ENABLED
オプションを true
に設定する必要があります。
この章では、次の設定オプションについて詳しく説明します。
OpenID Connect と Red Hat Single Sign-On を使用した Apicurio Registry 認証
以下の環境変数を設定して、Red Hat Single Sign-On を使用して Apicurio Registry Web コンソールおよび API の認証を設定できます。
環境変数 | 説明 | タイプ | デフォルト |
---|---|---|---|
|
Apicurio Registry の認証を有効にします。 | 文字列 |
|
|
Red Hat Single Sign-On 認証サーバーの URL。たとえば、 | String | - |
|
認証用の Red Hat Single Sign-On レルム。たとえば、 | String | - |
| Apicurio Registry REST API のクライアント ID。 | 文字列 |
|
| Apicurio Registry Web コンソールのクライアント ID。 | 文字列 |
|
HTTP Basic を使用した Apicurio Registry 認証
デフォルトでは、Apicurio Registry は OpenID Connect を使用した認証をサポートしています。ユーザーまたは API クライアントは、Apicurio Registry REST API への認証済み呼び出しを行うためにアクセストークンを取得する必要があります。ただし、一部のツールは OpenID Connect をサポートしていないため、次の設定オプションを true
に設定することで、HTTP Basic 認証をサポートするように Apicurio Registry を設定することもできます。
環境変数 | Java システムプロパティー | タイプ | デフォルト値 |
---|---|---|---|
|
| Boolean |
|
|
| Boolean |
|
Apicurio Registry HTTP Basic クライアント認証情報キャッシュの有効期限
HTTP Basic クライアント認証情報キャッシュの有効期限を設定することもできます。デフォルトでは、HTTP Basic 認証を使用する場合、Apicurio Registry は JWT トークンをキャッシュし、不要なときに新しいトークンを発行しません。JWT トークンのキャッシュ有効期限を設定できます。このトークンは、デフォルトで 10 分に設定されます。
Red Hat Single Sign-On を使用する場合は、この設定を Red Hat Single Sign-On JWT の有効期限から 1 分引いた値に設定することが推奨されます。たとえば、Red Hat Single Sign-On で有効期限を 5
分に設定する場合は、以下の設定オプションを 4
分に設定する必要があります。
環境変数 | Java システムプロパティー | タイプ | デフォルト値 |
---|---|---|---|
|
| 整数 |
|
Apicurio Registry のロールベースの承認
次のオプションを true
に設定して、Apicurio Registry でロールベースの承認を有効にすることができます。
環境変数 | Java システムプロパティー | タイプ | デフォルト値 |
---|---|---|---|
|
| Boolean |
|
|
| Boolean |
|
次に、ユーザーの認証トークンに含まれるロール (Red Hat Single Sign-On を使用した認証時に付与されるロールなど) を使用するか、Apicurio Registry によって内部的に管理されるロールマッピングを使用するように、ロールベースの承認を設定できます。
Red Hat Single Sign-On で割り当てられたロールを使用する
Red Hat Single Sign-On によって割り当てられたロールを使用できるようにするには、以下の環境変数を設定します。
環境変数 | 説明 | タイプ | デフォルト |
---|---|---|---|
|
| String |
|
| ユーザーが管理者であることを示すロールの名前。 | String |
|
| ユーザーが開発者であることを示すロールの名前。 | String |
|
| ユーザーが読み取り専用アクセス権を持っていることを示すロールの名前。 | String |
|
Apicurio Registry が Red Hat Single Sign-On のロールを使用するように設定されている場合は、Apicurio Registry ユーザーを Red Hat Single Sign-On の以下のユーザーロールの少なくとも 1 つに割り当てる必要があります。ただし、表5.10「Red Hat Single Sign-On を使用した Apicurio Registry ロールベース認証の設定」 の環境変数を使用して別のユーザーロール名を設定できます。
ロール名 | アーティファクトの読み取り | アーティファクトの書き込み | グローバルルール | 説明 |
---|---|---|---|---|
| ◯ | はい | ◯ | すべての作成、読み取り、更新、および削除操作へのフルアクセス。 |
| ◯ | はい | ✕ | グローバルルールの設定およびインポート/エクスポートを除く、操作の作成、読み取り、更新、および削除へのアクセス。このロールは、アーティファクト固有のルールのみを設定できます。 |
| ◯ | ✕ | ✕ | 読み取りおよび検索操作のみへのアクセス。このロールはルールを設定できません。 |
Apicurio Registry でロールを直接管理する
Apicurio Registry によって内部的に管理されるロールの使用を有効にするには、次の環境変数を設定します。
環境変数 | 説明 | タイプ | デフォルト |
---|---|---|---|
|
| 文字列 |
|
内部てkに管理されたロールマッピングを使用する場合は、Apicurio Registry REST API の /admin/roleMappings
エンドポイントを使用して、ユーザーにロールを割り当てることができます。詳細は、Apicurio Registry REST API のドキュメント を参照してください。
ユーザーに付与できるロールは、ADMIN
、DEVELOPER
、または READ_ONLY
のいずれかだけです。管理者権限を持つユーザーのみが、他のユーザーにアクセス権を付与できます。
Apicurio Registry の管理者オーバーライド設定
Apicurio Registry にはデフォルトの管理者ユーザーがいないため、通常、ユーザーが管理者として識別されるように別の方法を設定すると便利です。次の環境変数を使用して、この管理オーバーライド機能を設定できます。
環境変数 | 説明 | タイプ | デフォルト |
---|---|---|---|
| 管理オーバーライド機能を有効にします。 | String |
|
|
管理オーバーライド情報を探す場所。現在 | String |
|
|
ユーザーが管理者かどうかを判断するために使用される情報の種類。値は FROM 変数の値によって異なります。たとえば、FROM が | String |
|
| ユーザーが管理者であることを示すロールの名前。 | String |
|
| 管理オーバーライドを決定するために使用する JWT トークンクレームの名前。 | String |
|
| CLAIM 変数によって示される JWT トークンクレームの値は、ユーザーが管理オーバーライドを付与されるためのものでなければなりません。 | String |
|
たとえば、この管理オーバーライド機能を使用して、sr-admin
ロールを Red Hat Single Sign-On の 1 人のユーザーに割り当て、そのユーザーに admin ロールを付与できます。そのユーザーは、/admin/roleMappings
REST API (または関連する UI) を使用して、追加のユーザー (追加の管理者を含む) にロールを付与できます。
Apicurio Registry 所有者のみの許可
以下のオプションを true
に設定して、Apicurio Registry 内のアーティファクトまたはアーティファクトグループの更新に対して所有者のみの許可を有効にすることができます。
環境変数 | Java システムプロパティー | タイプ | デフォルト値 |
---|---|---|---|
|
| Boolean |
|
|
| Boolean |
|
|
| Boolean |
|
所有者のみの許可が有効になっている場合は、アーティファクトを作成したユーザーのみがそのアーティファクトを変更または削除できます。
所有者のみの許可とグループの所有者のみの許可の両方が有効になっている場合は、アーティファクトグループを作成したユーザーのみが、そのアーティファクトグループへの書き込みアクセス権 (そのグループのアーティファクトを追加または削除するなど) を持ちます。
Apicurio Registry の認証済み読み取りアクセス
認証済み読み取りアクセスオプションが有効になっている場合、Apicurio Registry は、ユーザーロールに関係なく、同じ組織内の認証済みユーザーからのリクエストに対して、少なくとも読み取り専用アクセスを許可します。
認証された読み取りアクセスを有効にするには、まずロールベースの承認を有効にしてから、次のオプションが true
に設定されていることを確認する必要があります。
環境変数 | Java システムプロパティー | タイプ | デフォルト値 |
---|---|---|---|
|
| Boolean |
|
|
| Boolean |
|
詳細は、「Apicurio Registry のロールベースの承認」 を参照してください。
Apicurio Registry の匿名の読み取り専用アクセス
2 つの主要な認証タイプ (ロールベースの認証と所有者ベースの認証) に加えて、Apicurio Registry は匿名の読み取り専用アクセスオプションをサポートしています。
認証認証情報のない REST API 呼び出しなどの匿名ユーザーが REST API への読み取り専用呼び出しを行うことを許可するには、次のオプションを true
に設定します。
環境変数 | Java システムプロパティー | タイプ | デフォルト値 |
---|---|---|---|
|
| Boolean |
|
|
| Boolean |
|