起動パラメータ
SDK Portalの様々な設定を起動時に指定することができます
起動オプションはyaml形式のコンフィグファイルとしても記述可能で、デプロイ環境毎に作成・管理し、ファイル指定で起動時するような利用方法も可能です。
Qmonus-SDK Labをご利用の際は、起動オプションはいずれもGUIから指定することが可能です。
グローバル設定
オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | +disable_superuser | boolean | false | Qmonusメンテナンス用のアカウントによるログインを許容するか否か | |
2 | +disable_axislogin | boolean | false | Qmonusアカウントによるキー/パスワードによるログインを許容するか否か(trueの場合は、外部プロバイダ連携設定が必須となります)[注意] false でkey/passによるログインを許容する場合は、WAF等でアクセス制限することを推奨します | |
3 | +allow_ws_upgrades | boolean | true | ブラウザからWebsocketへのupgradeを許容するか。falseの場合は、ロングポーリングを実施 | |
4 | +enable_user_logon_notify | boolean | false | ユーザログイン時に通知を出す | |
5 | +admin_token | string | - | 管理用コンソールのログイントークン(Basic認証) 指定した場合は、8880ポートで管理コンソールに接続が可能になります。username:password をbase64でエンコードした文字列を指定します。 | |
6 | +authentication_provider | object | - | 外部認証連携設定を行います(外部認証連携の章を参照) | |
7 | +environments | array | - | * | 接続先SDK Coreサーバーの設定を行います。必須情報です。 |
Site設定
ログイン画面に表示されるタイトルやアイコン、ポータルのテーマなどのカスタマイズを行います
オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | +site.name | string | - | ログイン画面のタイトルを指定できます。 | |
2 | +site.icon | string(url) | - | ログイン画面に表示するアイコンを指定できます。外部サイトのイメージURLを指定してください。 | |
3 | +site.copyright | string | - | ログイン画面に表示するコピーライトを指定できます。 | |
4 | +site.theme | string | dark | デフォルトのポータル表示テーマを指定します light / dark | |
5 | +site.lang | string | en | デフォルトの言語設定を指定します(JA / EN) | |
6 | +site.color | string | - | ポータルのヘッダカラーを変更します。カラーコードでの指定が可能ですが、テーマとの親和性から [ yellow / red / blue / green / crimson ] のいずれかの仕様を推奨します |
開発環境毎を使い分ける場合には、site.color をカスタマイズすることを推奨します。
例えば商用環境では crimson を、商用維持環境では yellow を指定するなどルール化することで誤操作防止に役立ちます。
外部認証連携設定
authentication_provider に以下のように複数の外部認証プロバイダ設定を指定することができます。
ログイン画面でそれぞれのプロバイダに対応するアイコンが表示されるので、ユーザがログイン方法を選択することができます。
以下の [provider1] と指定しているキーワードは、任意に指定が可能です。ここで指定したキーワードで、認証連携時のコールバックAPIが生成されます。下記の場合には、https://XXXXX/auth/provider1/callback のようにURLでコールバックパスが指定されます
boot_params
authentication_provider : provider1: provider : google default_role : forced_role : allowed_account : "^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@ntt.com$" use_on : - 8881 properties : provider2: . . .
プロバイダ設定(共通)
オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | provider | string | - | * | 認証方式を指定します。利用できる認証方式は [ qmonus / google / github / gitlab / slack / auth0 / saml / openid ] のいずれかです。それぞれで指定するpropertiesの値が異なります |
2 | default_role | string | - | このプロバイダ経由でログインしたアカウントのロールが指定されていない場合に設定するロールを指定します。 | |
3 | forced_role | string | - | このプロバイダ経由でログインしたアカウントのロールを指定したロールに強制的に固定します | |
4 | allowed_account | string | – | 指定した正規表現ルールにマッチするアカウントのみログインを許可します | |
5 | use_on | array | – | このプロバイダ経由でログインしたアカウントが制御可能なポータルサービスを制限することができます | |
6 | properties | object | – | * | 認証・認可の方式のオプション設定です。認証方式によって指定する値が異なります。 |
SDKポータルのログインは、SDKのアカウント/ロールと連動しており、外部プロバイダで認証したアカウントIDが、SDKのアカウント情報に存在するかどうかでログイン可否を判断します。アカウントのロール特定が必要になるためです。
そのため、外部プロバイダで認証されたアカウントがSDKのアカウント情報に存在しない場合はログインができません。事前に対応するアカウント情報の作成が必要になります。
しかし実際のユースケースでは、アカウントを事前にプラグインとして作成しておくことが困難なケースもあります。
上記の[default_role / forced_role ]を指定してロール判定を固定する、もしくは外部認証プロバイダ側にSDKロールとのバインドルール(Google IAMなど)を設定することでロール判定が可能な場合は、アカウントが存在しない場合でも当該ロールのSDKアカウントをSDK Portalが自動で作成しログインを実施させることができます。(ただしこの場合においてもロール情報は事前に作成しておく必要があります。)
- 別のSDKポータル連携の場合の設定例
boot-params
authentication_provider : provider1: strategy : qmonus properties : base_url : https://XXXXX pass_code : ************************** pass_phrase : ************* enableSLO : true
SDKポータル連携オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | base_url | string | - | * | SDKポータルのエンドポイントを指定します |
2 | pass_code | string | - | * | SDKポータルの起動パラメータで指定している認証パスコードを指定します |
3 | pass_phrase | string | - | * | SDKポータルの起動パラメータで指定している認証パスフレーズを指定します |
4 | enableSLO | boolean | false | trueの場合、ApiFrontの/logout に連動してSDKポータルからログアウトします。 |
- Google連携の場合の設定例
boot-params
authentication_provider : provider1: strategy : google properties : project_id : ************************** client_id : ************************** client_secret : ************* callbackProto : https role_prefix : "hogefuga_"
Google連携オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | project_id | string | - | GCPプロジェクト名を指定します。指定した場合はGCPのIAM情報をもとにロールバインディングを行います | |
2 | client_id | string | - | * | OAuthクライアントIDを指定します |
3 | client_secret | string | - | * | OAuthクライアントのシークレットを指定します |
4 | callbackProto | string | https | ||
5 | role_prefix | string | axis_ | Googleの該当ProjectのカスタムロールのIDで、QmonusSDKのログインロールを指定することができます。そのバインドするための検索Prefixを指定します。たとえば、[‘projects/{project_id}/roles/hogefuga_admin’ ]のようなカスタムロールがログインアカウントに指定されている場合は、[admin] をQmonusロールと識別することができます。 |
- [v23.2 New] AzureAD連携の場合の設定例
シンプルなOIDC連携の例 (ログインロール固定の場合)
boot-params
authentication_provider : azuread: provider : azuread default_role : guest #SDKのプラグインで定義されたロール名 properties: identityMetadata : "https://login.microsoftonline.com/xxxxxx/.well-known/openid-configuration" client_id : "xxxx" client_secret : "xxxx" redirectUrl: "https://xxxxx/auth/azuread/callback" response_type: "id_token code" response_mode: "form_post"
Graph APIを用いてAzureAD側のロール設定と連動することも可能です。
boot-params(ロール連動)
authentication_provider : azuread: provider : azuread # providerロール と Qmonusロールとのマッピングルール # azureの場合はユーザには複数グループが設定されている前提。どのロールを適用するか決定するためrole_mapping_rulesの記載順に最初にヒットした1つがQmonusロールとして利用される。 role_mapping_rules : ROLE_E : owner ROLE_A : admin ROLE_B : member ROLE_ALL : member default_role : guest #default_roleと併用することで上記のルールにマッチしない場合のロール指定も可能 properties: identityMetadata : "https://login.microsoftonline.com/xxxxxx/.well-known/openid-configuration" client_id : "xxxx" client_secret : "xxxx" redirectUrl: "https://xxxxx/auth/azuread/callback" response_type: "id_token code" response_mode: "form_post" # Qmonus roleに紐付けるAzureのリソース(現時点ではgroupのみ対応) role_bind_resource : group
Azure連携オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | identityMetadata | string | - | * | https://login.microsoftonline.com/「テナントID」/.well-known/openid-configuration を指定します |
2 | client_id | string | - | * | OAuthクライアントIDを指定します |
3 | client_secret | string | - | OAuthクライアントのシークレットを指定します。response_typeが「id_token」以外の場合は指定する必要があります | |
4 | role_bind_resource | string | group | groupを指定した場合、Microsoft Graph API を用いて、ログインユーザのグループロールを参照し、SDKロールとバインドを行います。指定しない場合はロールバインドは行われません。default_role / forced_role によりログインロールを指定する必要があります | |
5 | response_type | string | id_token code | 応答タイプを指定します。。「code」を指定した場合は認可コードが返却されます。「id_token」を指定した場合はIDトークンが返却されます | |
6 | response_mode | string | form_post | 要求されたトークンをアプリにどのように返すかを指定します。「query」を指定した場合はリダイレクト URI のクエリー部に入ります。「fragment」を指定した場合はリダイレクト URI のフラグメント部に入ります。「form_post」を指定した場合はHTML FORMに入ります | |
7 | loggingNoPII | string | false | passport-azure-adを使用したAzure OIDC認証連携で詳細ログを出力しないかを指定します。デフォルトはTrueです |
認証プロキシー設定
ApiFrontや他のSDK Portalから、認証プロバイダとして動作させるための設定です。
利用側のコンフィグで指定する値と、ここで指定する pass_code/pass_phrase は一致させる必要があります。
セキュティを考慮し、ホワイトリストを設定して運用してください。
オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | +authentication_proxy.pass_code | string | - | * | 認証パスコード |
2 | +authentication_proxy.pass_phrase | string | - | * | 認証パスフレーズ |
3 | +authentication_proxy.allowed_uri | allowed_uri | [] | リダイレクトを許可するURIのホワイトリスト。いずれかのサイトに前方一致するURLのみにリダイレクトを許可します。正規表現の利用が可能です。 |
起動ファイルでは、以下のように指定できます
boot-params
authentication_proxy: pass_code: xxxx pass_phrase: xxxx allowed_uri: - "https://[\S]*.hogehoge.com"
ログ保存設定
APIモニターログは、Portalサーバのストレージにファイルとして保存されます。ファイルは自動的にローテートされます。
お使いのストレージの容量に合わせて保存設定を変更できます。デフォルトは 700m(100m*7世代)です。
オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | +logrotate.monitor.size | string | 100m | ログファイルの保存上限です。 | |
2 | +logrotate.monitor.count | number | 7 | ログファイルの保存世代です。 | |
3 | +logging.access | string | terminal | アクセスログをコンテナログに表示させるかを指定します。 | |
4 | +logging.monitor | number | ./var/log/monitor.log | ログファイルの保存先です。 |
起動ファイルでは、以下のように指定できます
boot-params
logrotate : monitor: size : '100m' count : 75
セッション管理
ユーザのログイン状態はセッションストアで管理され、セッション識別用のIDはCookieでブラウザに保存されます。
オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | +session.cookieMaxAge | number | 82,800,000 | クッキーの有効期限を指定します(ミリ秒)デフォルトは[82,800,000]ミリ秒 = 23時間です。 | |
2 | +session.cookieSecure | boolean | false | クッキーのSecure属性です。デフォルトは[false]です。 | |
3 | +session.store | string | “File” | セッションストアのタイプを指定します。File / Memory のいずれかを指定します |
SDK Core 環境設定
接続先 SDK Coreの環境設定です。SDK Portalから複数環境への接続も可能なため、配列で指定します。複数設定されている場合は、ログインページでログイン環境を選択するプルダウンが表示されます。
オプション | 型 | デフォルト | 必須 | 説明 | |
---|---|---|---|---|---|
1 | +environments.0.name | string | - | * | SDK Portalで表示される環境識別名です。 |
2 | +environments.0.default | boolean | false | 複数環境設定した場合に、デフォルト環境を宣言するフラグです。 | |
3 | +environments.0.description | string | - | 環境補足情報です | |
4 | +environments.0.apikey | string | - | * | SDK Coreサーバーとの認証に利用するキー情報です。SDK Coreの設定と一致させる必要があります。 |
5 | +environments.0.super_username | string | - | SDK Coreサーバーとの認証に利用するSUPERアカウント情報です。SDK Coreの起動パラメータ SDK > settings > options > apigw > super_username と一致させる必要があります。 |
|
6 | +environments.0.super_password | string | - | SDK Coreサーバーとの認証に利用するSUPERアカウント情報です。SDK Coreの起動パラメータ SDK > settings > options > apigw > super_password と一致させる必要があります。 |
|
7 | +environments.0.enable_push_heartbeat | boolean | false | SDK Coreサーバーからのheartbeat契機でアクセス先エンドポイントを追加するかどうか設定できます。詳細は以下のTipsを参考。 | |
8 | +environments.0.axis_nodes | array | - | 接続先のサーバのendpointを指定します。enable_push_heartbeat が false の場合は必須項目です | |
9 | +environments.0.metadata | object | - | 環境に設定するメタ情報です。認可のカスタマイズ機能で利用します。 | |
10 | +environments.0.port | number | 19090 | SDK Core環境へのプロキシーサーバの起動ポートを指定することができます。指定しない場合は、19090 で起動します。 複数環境指定した場合は、19090からインクリメントされていきます。 | |
11 | +environments.0.type | string | - | 用途に合わせて表示を切り替えることができます。“all-in-one” / “automation” / “labo” / “dev” / “prod” / “staging” のいずれかを指定すると… |
アクセス先 SDK Core サーバーの、エンドポイントディスカバリには、2つの方法があります。
- アクティブ:
起動パラメータのaxis_nodesで、明示的にエンドポイントを指定する方法です。SDK Portal起動直後から指定したエンドポイントへのアクセスを開始します。
boot_params
environments: - name : env1 enable_push_heartbeat : false apikey : XX axis_nodes : - https://apigw - https://scenario - https://transaction
- パッシブ :
enable_push_heartbeat が true の場合は、SDK Coreサーバーからのheartbeatを契機に、エンドポイントを学習します。SDK Coreの設定でPortalのエンドポイントの指定が必要です。
boot_params
environments: - name : env1 apikey : XX enable_push_heartbeat : true
いずれの方式でも、apikey / super_username /super_password はSDK Coreサーバーの設定と一致させる必要があります。
環境に設定するメタ情報を使って、以下のような認可のカスタマイズも可能です
boot_params
custom_authorizations: - code: 403 message: アクセス可能な環境ではありません script: ( profile , env )=> env.metadata.tenant !== profile.metadata.tenant
SDK Portal プラグイン設定
カスタムダッシュボードなどのPortalのプラグインを利用する際に設定する項目です。IDEとしてだけ利用する際は特に設定は不要です。
-
plugins
カスタムダッシュボードやカスタムサービスポータル、ウィジェットなど、ポータルのプラグインの設定を行います。
content_dir で読み込みディレクトリを設定することができます。
+plugins.content_dir=/var/plugins/xxxx -
config_dir [非推奨]
作成したポータルプラグインを編集不可能なビルトイン機能としてバンドルする際に利用します。この機能は非推奨のため、今後のメンテナンスは行われません。
+config_dir=/var/builtins/xxxx -
spa_dir
E2E試験を利用する際に指定するディレクトリです。
-
e2e_report_dir
E2E試験結果を保存するディレクトリを指定します。
-
e2e_endpoint
E2E試験に関するAPIのEndpointを指定します。SDK Labで自動設定するパラメーターのため編集は非推奨です。
-
fileshare
GUIアセット開発に利用する際に指定するディレクトリです。ApiFrontの開発をポータル上で行う際に指定します。SDK Labで自動設定するパラメーターのため編集は非推奨です。
SDK Portal 機能拡張設定(オプション機能)
その他の機能拡張用の設定です。いずれも任意設定です。
-
dashboard_provider
カスタムダッシュボードを別のアプリケーションとして起動する設定です。指定したポート番号でダッシュボード機能のみを起動させることができます。
+dashboard_provider.port=8889 -
links
ポータルのDashboard as a Serviceメニューに指定した画面リンクを追加することができます。
boot_params
links: [ { "id": "任意の文字列", "name": "link name", "description": "desc of link", "url": "http://xxxx" } ], -
publication [非推奨]
メール通知用API(/apis/publication)の設定を行います。この機能は非推奨のため、今後のメンテナンスは行われません。
-
httpproxy
-
wsproxy
-
apiproxy
SDK Portalサーバーにプロキシ設定を追加することができます。
boot_params
httpproxy:{ // port : url 9991 : "http://hoge" ## 別ポートでプロキシ起動 }, wsproxy:{ // port : url 9992 : "http://hoge" ## 別ポートでプロキシ起動 }, apiproxy : { // name : url "path_to_api": "https://xxxx" ## 起動ポートの /apis/path_to_api/proxy でアクセス可能 }