第4章 セキュリティーの管理
4.1. OpenAPI サービスの認証 リンクのコピーリンクがクリップボードにコピーされました!
OpenAPI サービス操作を保護するには、OpenAPI 仕様を使用して セキュリティースキーム
を定義します。これらのスキームは、OpenAPI 仕様ファイルの securitySchemes
セクションにあります。その Security Scheme
を参照する Security Requirement
を追加して操作を設定する必要があります。ワークフローがこのような操作を呼び出すと、その情報を使用して必要な認証設定が決定されます。
このセクションでは、サポートされている認証タイプの概要を示し、ワークフロー内の保護された OpenAPI サービス操作にアクセスするためにそれらを設定する方法を示します。
4.1.1. OpenAPI サービス認証の概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic では、OpenAPI 仕様ファイルで定義された Security Schemes
を使用して、OpenAPI サービス操作を保護できます。これらのスキームは、ワークフロー内で呼び出される操作の認証要件を定義するのに役立ちます。
Security Schemes
は、OpenAPI ドキュメントの securitySchemes
セクションで宣言されています。各スキームは、HTTP Basic、API キーなど、適用する認証の種類を指定します。
ワークフローは、保護された操作を呼び出すときに、これらの定義済みスキームを参照して、必要な認証設定を決定します。
セキュリティースキームの定義例
OpenAPI ファイルで Security Schemes
が定義されているが、操作の Security Requirements
が含まれていない場合、デフォルトでセキュリティー要件を作成するようにジェネレーターを設定できます。これらのデフォルトは、明示的に定義された要件のない操作に適用されます。
そのスキームを設定するには、quarkus.openapi-generator.codegen.default-security-scheme
プロパティーを使用する必要があります。default-security-scheme
プロパティーは実行時ではなく、コード生成時にのみ使用されます。値は、http-basic-example
または api-key-example
など、securitySchemes
セクションで使用可能なスキームのいずれかと一致する必要があります。
以下に例を示します。
quarkus.openapi-generator.codegen.default-security-scheme=http-basic-example
$ quarkus.openapi-generator.codegen.default-security-scheme=http-basic-example
4.1.2. OpenAPI サービスの認証情報の設定 リンクのコピーリンクがクリップボードにコピーされました!
認証スキームによって保護された OpenAPI サービス操作を呼び出すには、アプリケーションで対応する認証情報とパラメーターを設定する必要があります。OpenShift Serverless Logic はこれらの設定を使用して、ワークフローの実行中に外部サービスに対して認証を行います。
このセクションでは、OpenAPI 仕様ファイルで宣言されたセキュリティースキームに必要な設定プロパティーを定義および適用する方法を説明します。これらの認証情報を提供するには、application.properties
、ワークフローに関連付けられた ConfigMap
、または SonataFlow
CR の環境変数のいずれかを使用できます。
OpenAPI 仕様ファイルで定義されたセキュリティースキームは、同じファイルで使用可能なすべての操作に対してグローバルです。つまり、特定のセキュリティースキームに対して設定された設定は、他の保護された操作にも適用されます。
前提条件
- OpenShift Container Platform でアプリケーションやその他のワークロードを作成するための適切なロールと権限を持つ OpenShift Serverless Logic プロジェクトにアクセスできる。
- OpenAPI 仕様に 1 つ以上のセキュリティースキームが含まれている。
- OpenAPI 仕様ファイルにアクセスできる。
-
http-basic-example
またはapi-key-example
を設定するスキームを特定している。 -
application.properties
ファイル、ワークフローConfigMap
、またはSonataFlow
CR にアクセスできる。
手順
プロパティーキーを作成するには、次の形式を使用します。
quarkus.openapi-generator.[filename].auth.[security_scheme_name].[auth_property_name]
quarkus.openapi-generator.[filename].auth.[security_scheme_name].[auth_property_name]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
filename
は、security_example_json など、OpenAPI 仕様を含むファイルのサニタイズされた名前です。この名前をサニタイズするには、アルファベット以外の文字をすべて_
アンダースコアに置き換える必要があります。 -
security_scheme_name
は、OpenAPI 仕様ファイル内のセキュリティースキームオブジェクト定義のサニタイズされた名前です (例:http_basic_example
またはapi_key_example
)。この名前をサニタイズするには、アルファベット以外の文字をすべて_
アンダースコアに置き換える必要があります。 auth_property_name
は、ユーザー名など、設定するプロパティーの名前です。このプロパティーは、定義されたセキュリティースキームタイプによって異なります。注記環境変数を使用してプロパティーを設定する場合は、MicroProfile 環境変数のマッピングルールに従ってください。プロパティーキー内のアルファベット以外の文字をすべてアンダースコア
_
に置き換えて、キー全体を大文字に変換できます。
-
次の例は、application.properties
、ワークフローに関連付けられた ConfigMap
、または SonataFlow
CR で定義された環境変数を使用して、これらの設定プロパティーを提供する方法を示しています。
application.properties
ファイルを使用して認証情報を設定する例
quarkus.openapi-generator.security_example_json.auth.http_basic_example.username=myuser quarkus.openapi-generator.security_example_json.auth.http_basic_example.password=mypassword
quarkus.openapi-generator.security_example_json.auth.http_basic_example.username=myuser
quarkus.openapi-generator.security_example_json.auth.http_basic_example.password=mypassword
ワークフロー ConfigMap
を使用して認証情報を設定する例
ワークフローの名前が example-workflow
の場合、ユーザー定義プロパティーを持つ ConfigMap
の名前は example-workflow-props
にする必要があります。
SonataFlow
CR で環境変数を使用して認証情報を設定する例
4.1.3. HTTP Basic 認証の例 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、HTTP Basic 認証スキームを使用してワークフロー操作を保護する方法を示しています。security-example.json
ファイルは、http-basic-example
セキュリティースキームを使用する単一の操作 sayHelloBasic
を持つ OpenAPI サービスを定義します。アプリケーションプロパティー、ワークフロー ConfigMap
、または環境変数を使用して認証情報を設定できます。
HTTP Basic 認証を使用した OpenAPI 仕様の例
この例では、securitySchemes
セクションで定義された http-basic-example
スキームを使用して、sayHelloBasic
操作が保護されます。ワークフローでこの操作を呼び出す場合は、適切な認証情報を設定する必要があります。
4.1.3.1. HTTP Basic 認証でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
次の設定キーを使用して、http-basic-example
スキームの認証情報を提供できます。
説明 | プロパティーキー | 例 |
---|---|---|
ユーザー名の認証情報 |
|
|
パスワードの認証情報 |
|
|
[filename]
はサニタイズされた OpenAPI ファイル名 security_example_json
に置き換え、[security_scheme_name]
はサニタイズされたスキーム名 http_basic_example
に置き換えることができます。
4.1.4. ベアラートークン認証の例 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、HTTP ベアラー認証スキームを使用して OpenAPI 操作を保護する方法を示しています。security-example.json
ファイルは、認証に http-bearer-example
スキームを使用する sayHelloBearer
操作を含む OpenAPI サービスを定義します。ワークフローの実行中に保護された操作にアクセスするには、アプリケーションプロパティー、ワークフロー ConfigMap
、または環境変数を使用してベアラートークンを設定する必要があります。
ベアラートークン認証を使用した OpenAPI 仕様の例
この例では、sayHelloBearer
操作は http-bearer-example
スキームによって保護されています。この操作を正常に呼び出すには、設定で有効なベアラートークンを定義する必要があります。
4.1.4.1. ベアラートークン認証でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
ベアラートークンを提供するには、次の設定プロパティーキーを使用できます。
説明 | プロパティーキー | 例 |
---|---|---|
ベアラートークン |
|
|
[filename]
はサニタイズされた OpenAPI ファイル名 security_example_json
に置き換え、[security_scheme_name]
はサニタイズされたスキーム名 http_bearer_example
に置き換えることができます。
4.1.5. API キー認証の例 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、apiKey
認証スキームを使用して OpenAPI サービス操作を保護する方法を示しています。security-example.json
ファイルは、api-key-example
セキュリティースキームを使用する sayHelloApiKey
操作を定義します。アプリケーションプロパティー、ワークフロー ConfigMap
、または環境変数を使用して API キーを設定できます。
API キー認証を使用した OpenAPI 仕様の例
この例では、sayHelloApiKey
操作は、HTTP リクエストヘッダーで渡される API キーを使用する api-key-example
セキュリティースキームによって保護されています。
4.1.5.1. API キー認証でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
次の設定プロパティーを使用して API キーを設定できます。
説明 | プロパティーキー | 例 |
---|---|---|
API キー |
|
|
[filename]
はサニタイズされた OpenAPI ファイル名 security_example_json
に置き換え、[security_scheme_name]
はサニタイズされたスキーム名 api_key_example
に置き換えることができます。
apiKey
スキームタイプには、Open API サービスが呼び出されたときに使用するキー名を設定する追加の name
プロパティーが含まれています。また、キーを渡す形式は、in
プロパティーの値によって異なります。
-
値が
header
の場合、キーは HTTP リクエストパラメーターとして渡されます。 -
値が
cookie
の場合、キーは HTTP Cookie として渡されます。 -
値が
query
の場合、キーは HTTP クエリーパラメーターとして渡されます。
この例では、キーは api-key-name: MY_KEY
として HTTP ヘッダーに渡されます。
OpenShift Serverless Logic はこれを内部的に管理するため、プロパティー値を設定する以外に追加の設定は必要ありません。
4.1.6. clientCredentials OAuth 2.0 認証の例 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、OAuth 2.0 clientCredentials
フローを使用して OpenAPI 操作を保護する方法を示しています。OpenAPI 仕様では、oauth-example
セキュリティースキームを使用する sayHelloOauth2
操作が定義されています。HTTP Basic や API キーなどのより単純な認証方法とは異なり、OAuth 2.0 認証では、Quarkus OpenID Connect (OIDC) クライアントとの追加統合が必要です。
OAuth 2.0 を使用した OpenAPI 仕様の例
この例では、sayHelloOauth2
操作は、トークンベースの認証に clientCredentials
フローを使用する oauth-example
セキュリティースキームによって保護されています。
4.1.6.1. OIDC Client Filter エクステンションによる OAuth 2.0 サポート リンクのコピーリンクがクリップボードにコピーされました!
OAuth 2.0 トークン管理は、Quarkus OidcClient
によって処理されます。この統合を有効にするには、次の例に示すように、Quarkus OIDC Client Filter と Quarkus OpenApi Generator OIDC エクステンションをプロジェクトに追加する必要があります。
Maven を使用してエクステンションを追加する例
gitops
プロファイルを使用してエクステンションを追加する例
ワークフローイメージをビルドするときに、QUARKUS_EXTENSIONS ビルド引数を次の値で設定するようにしてください。
--build-arg=QUARKUS_EXTENSIONS=io.quarkus:quarkus-oidc-client-filter:3.15.4.redhat-00001,io.quarkiverse.openapi.generator:quarkus-openapi-generator-oidc:2.9.0-lts
$ --build-arg=QUARKUS_EXTENSIONS=io.quarkus:quarkus-oidc-client-filter:3.15.4.redhat-00001,io.quarkiverse.openapi.generator:quarkus-openapi-generator-oidc:2.9.0-lts
preview
プロファイルを使用してエクステンションを追加する例
SonataFlowPlatform
CR に追加されたエクステンションは、preview
プロファイルを使用してその namespace にデプロイするすべてのワークフローに含まれます。
4.1.6.2. OidcClient 設定 リンクのコピーリンクがクリップボードにコピーされました!
保護された操作にアクセスするには、application.properties
ファイルで OidcClient
設定を定義します。設定では、OpenAPI 仕様のサニタイズされたセキュリティースキーム名 (この場合は oauth_example
) を次のように使用します。
この設定では、次のようになります。
-
oauth_example
は、OpenAPI ファイル内のoauth-example
スキームのサニタイズされた名前と一致します。サニタイズされたスキーム名と対応するOidcClient
間のリンクは、この単純な命名規則を使用することで実現されます。 - OidcClient は、ワークフロー実行中にトークンの生成と更新を自動的に処理します。
4.1.7. 認可トークンの伝播の例 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic は、oauth2
または http
ベアラーセキュリティースキームタイプを使用する OpenAPI 操作のトークン伝播をサポートします。トークンの伝播により、ワークフローはワークフロー作成中に受信した認可トークンをダウンストリームのサービスに転送できるようになります。この機能は、ワークフローがリクエストを開始したクライアントに代わってサードパーティーのサービスと対話する必要がある場合に役立ちます。
各セキュリティースキームごとにトークンの伝播を個別に設定する必要があります。有効にすると、明示的にオーバーライドされない限り、同じスキームを使用して保護されたすべての OpenAPI 操作で伝播されたトークンが使用されます。
次の例では、security-example.json
ファイルで sayHelloOauth2
操作を定義します。この操作では、clientCredentials
フローで oauth-example
セキュリティースキームを使用します。
トークン伝播を含む OpenAPI 仕様の例
4.1.7.1. 認可トークンの伝播でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
次の設定キーを使用して、トークンの伝播を有効にし、カスタマイズできます。
ワークフローがアクティブな間、トークンはダウンストリームのサービスに自動的に渡されます。ワークフローがタイマーやイベントベースの一時停止などの待機状態になると、トークンの伝播は停止します。ワークフローが再開された後、トークンは自動的に再伝播されません。必要に応じて再認証を管理する必要があります。
プロパティーキー | 例 | 説明 |
---|---|---|
|
|
指定されたスキームで保護されたすべての操作のトークン伝播を有効にします。デフォルトは |
|
| (オプション) トークンを読み取るためのカスタムヘッダー名でデフォルトの認証ヘッダーをオーバーライドします。 |
[filename]
はサニタイズされた OpenAPI ファイル名 security_example_json
に置き換え、[security_scheme_name]
はサニタイズされたスキーム名 oauth_example
に置き換えることができます。