# コンテナ内で Qlik Data Gateway - 直接アクセス を設定する

このトピックでは、コンテナ化された Direct Access gateway の設定方法について説明します。前提条件とインストール手順を提供し、コンテナ化された Direct Access gateway を使用する際に注意が必要な制限事項と考慮事項について説明します。

情報メモDirect Access gateway 1.8.0 以降でサポートされています。

## コンテナ化された Direct Access gateway とは何ですか?

Direct Access gateway を Docker コンテナに展開できます。このタイプの展開は、コンテナ化された Direct Access gateway と呼ばれます。コンテナ化された Direct Access gateway の展開は、Linux、macOS、Windows でサポートされています。

コンテナ化された Direct Access gateway は、Direct Access gateway 環境にポータビリティを提供します。

## Qlik Data Gateway - 直接アクセス を使用するときのベスト プラクティス

Qlik Data Gateway - 直接アクセス を適切に使用するには、次のベスト プラクティスに従うことを強くお勧めします。

* 開発、ユーザー受け入れテスト、実稼働に同じ Direct Access gateway を使用しないでください。使用可能なリソースが過負荷になり、システムの安定性に影響を与えるリスクが高まります。ビジネスの観点から見ると、リソース不足と安定性の低下が組み合わさり、実稼働アプリケーション データの更新が遅れる可能性があります。

* 最適なパフォーマンスを得るには、データ ソースにできるだけ近い環境に Direct Access gateway をインストールしてください。

## システム前提条件

このセクションでは、コンテナ化された Direct Access gateway を使用するための要件について説明します。

### ソフトウェア要件

* Docker Engine バージョン 20.9 以降および Docker Compose プラグイン (docker compose、v2 構文) がホストにインストールされていること。

### 必要なポートとプロトコル

必要なポートとプロトコルについては、[必要なポートとプロトコル](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#Ports) を参照してください。

### 推奨ハードウェア

* ホスト: 8 コア、32 GB メモリ、Docker で利用可能な 5 GB のストレージ

* オプション: ゲートウェイがホスト上の他のコンテナやプロセスと競合することなく専用のキャパシティを確保できるように、compose ファイル内のコンテナに対応する制限を設定します:

  ```
  direct-access-agent:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "6"
            memory: 24G
  ...
  dcaas:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "2"
  ```

#### 最小ハードウェア

最小ハードウェアは、小規模な専用展開 (開発、テスト、または運用) を使用し、継続的にデータ量が少なく、同時リロードの数が制限されている特定のシナリオにのみ適しています。

* ホスト: 4 コア、8 GB のメモリ、Docker で利用可能な 5 GB のストレージ

* オプション: ゲートウェイがホスト上の他のコンテナやプロセスと競合することなく専用のキャパシティを確保できるように、compose ファイル内のコンテナに対応する制限を設定します:

  ```
  direct-access-agent:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "2"
            memory: 4G
  ...
  dcaas:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "2"
  ```

## Qlik Data Gateway - 直接アクセス のインストール

Direct Access gateway のセットアップには、管理 アクティビティ センターおよび Direct Access gateway サーバーの両方で実行が必要な手順が含まれます。

情報メモ管理 アクティビティ センターで実行が必要なデータ ゲートウェイ手順には、テナント管理者の権限が必要です。

### ステージ 1: Qlik Data Gateway - 直接アクセス をダウンロードする

1. 管理 アクティビティ センターで、データ ゲートウェイ を選択します。

   既存のデータ ゲートウェイがある場合、[各ゲートウェイに関する基本情報を表示するテーブル](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-managing-console.htm#gateprop)にリストされます。

2. [展開] ツール バー ボタンをクリックします。

   [データ ゲートウェイの展開] ダイアログが開きます。

3. データ ゲートウェイ - 直接アクセス - コンテナ化された Direct Access Gatewayを選択し、Qlik 顧客契約に同意して、 [ダウンロード] をクリックします。Direct Access gateway 設定ファイル (docker-compose.qlik-data-gateway-direct-access.yml) がマシンにダウンロードされます。

### ステージ 2: Docker Compose ファイルを実行して展開を開始する

Direct Access gateway の展開を開始するには、次のコマンドを実行します。

docker compose -f docker-compose.qlik-data-gateway-direct-access.yml up

### ステージ 3: Direct Access gateway を設定する

詳細な設定手順については、「[ステージ 3: Direct Access gateway のセットアップ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#Stage3)」を参照してください。

### ステージ 4: データ ゲートウェイを登録する

次のステップでは、データ ゲートウェイを登録します。 これは、管理 アクティビティ センターから、またはコマンド ラインで実行できます。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)

#### オプション 1: 管理 アクティビティ センター経由

管理 アクティビティ センターを使用して、ゲートウェイを登録できます。「[オプション 1: 管理 アクティビティセンター経由](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#StageConsole)」を参照してください。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)

#### オプション 2: コマンド ラインを使用した自動登録

管理 アクティビティ センターを使用せずに、コマンド ラインから Direct Access gateway を自動的に登録することもできます。このメソッドは、OAuth クライアントから生成された有効期間の短いセッション トークンを使用します。

情報メモ自動登録はコマンド ラインからのみサポートされています。ゲートウェイの自動登録用の REST API は、現在利用できません。

前提条件

OAuth クライアントを作成および管理するためのテナント管理者権限を持つ API キー。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)自動登録によるゲートウェイの登録

1. まず、direct-access-agent コンテナ内で OAuth クライアント ID およびアサーションキー (有効期間の短いトークン) を生成するために、Python 環境を設定する必要があります。次のコマンドをこの順序で個別に実行します。

   1. docker exec -it --user root direct-access-agent-1 bash

   2. apt-get update && apt-get install -y python3 python3-pip

   3. apt install python3.11-venv

   4. python3 -m venv .venv

   5. source .venv/bin/activate

   6. pip install cryptography pyjwt

   7. [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)python3 generate\_gateway\_assertion.py --tenant-url &lt;tenant-url&gt;

2. [上記のリストの最後のコマンド](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#python3)については、対話型プロンプトに従い、表示された client\_id (OAuth クライアント ID) と assertion をコピーします。これらの詳細は、プロセスの後の手順で必要になるため、現時点では紙に書き留めるか、一時的なテキスト ファイルに保存しておいてください。

3. client\_id と assertion を書き留めたら、次のコマンドで Python 環境をクリーンアップします。

   deactivate

4. OAuth クライアントの同意方法を信頼済みに設定します。

   curl "https://&lt;tenant-url&gt;/api/v1/oauth-clients/&lt;client-id&gt;/connection-configs/me" -X PATCH -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;api-key&gt;' -d '[{"op":"replace","path":"/consentMethod","value":"trusted"}]'

5. アクセス トークンをリクエストします。これにより、ゲートウェイで使用されるボット ユーザー アカウントの自動作成もトリガーされます。

   curl "https://&lt;tenant-url&gt;/oauth/token" -X POST -H 'content-type: application/x-www-form-urlencoded' -d "grant\_type=client\_credentials" -d "client\_id=&lt;client-id&gt;" -d "client\_assertion\_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" -d "client\_assertion=&lt;assertion&gt;" -d "scope=admin.direct-access-gateways:register\_gateway admin.direct-access-gateways:delete\_gateway"

   情報メモ

   アサーションの有効期限が切れている場合は、仮想環境からスクリプトを再実行してください。

6. 自動作成されたボット ユーザーを検索します。

   curl "https://&lt;tenant-url&gt;/api/v1/users" -H 'accept: application/json' -H 'authorization: Bearer &lt;API-key&gt;'

7. my-bot-client の ID をコピーします。

8. 「DAG Registration」 ロールを作成します。

   curl "https://&lt;tenant-url&gt;/api/v1/roles" -X POST -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d '{"name":"DAG Registration","description":"Role for registering a gateway","assignedScopes":["admin.direct-access-gateways:register\_gateway", "admin.direct-access-gateways:delete\_gateway"]}'

9. ボット ユーザーにテナントレベルのロールを割り当てます。

   curl "https://&lt;tenant-url&gt;/api/v1/users/&lt;bot-user-ID&gt;" -X PATCH -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d ' [ { "op": "replace", "path": "/assignedRoles", "value": [ { "name": "DAG Registration" } ] } ]'

10. Direct Access Gateway のスペースを取得します。

    curl "https://&lt;tenant-url&gt;/api/v1/spaces" -H 'authorization: Bearer &lt;API-key&gt;'

11. Direct Access Gateway のスペース ID をコピーします。

12. ボット ユーザーを [編集可能] 権限でスペースに追加します。

    curl "https://&lt;tenant-url&gt;/api/v1/spaces/&lt;DAG-space-ID&gt;/assignments" -X POST -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d '{"assigneeId": "&lt;bot-user-ID&gt;","roles": ["consumer","dataconsumer","producer"], "type": "user"}'

13. 既存のアサーションの有効期限が切れている場合は、新しいアサーションを生成してください。次のコマンドを実行します:

    python3 generate\_gateway\_assertion.py --tenant-url &lt;tenant-url&gt;

14. コマンド プロンプトで、必要なステップに従います。OAuth クライアントはすでに作成されているため、この API 呼び出しを使用して JWK を更新する必要があります。

    curl "https://&lt;tenant-url&gt;/api/v1/oauth-clients/&lt;client-ID&gt;" -X PATCH -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d '[{"op":"replace","path":"/publicKeys/0/y","value":"&lt;Y-value-from-JWK&gt;"},{"op":"replace","path":"/publicKeys/0/x","value":"&lt;X-value-from-JWK&gt;"},{"op":"remove","path":"/publicKeys/0/use"},{"op":"replace","path":"/publicKeys/0/kid","value":"&lt;kid-value-from-JWK&gt;"}]'

15. ゲートウェイを登録します。

    dotnet ConnectorAgent.dll qcs register\_gateway --tenant\_url &lt;tenant-url&gt; --gateway\_name &lt;DAG-name&gt; --gateway\_description &lt;DAG-description&gt; --space\_name &lt;space-name&gt; --client-id &lt;client-ID&gt; --assertion &lt;assertion&gt;

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)自動登録されたゲートウェイの削除

上記で説明したセッション トークンベースの自動方式を使用して登録されたゲートウェイの登録を解除するには、次のステップを実行します。これらのステップを実行すると、作成された OAuth クライアント、ボットユーザー、ロールも削除されます。

1. [上記のセクション](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#AutoRegister)で説明されているように、アサーションを生成します。

2. ゲートウェイを削除します:

   dotnet ConnectorAgent.dll qcs delete\_gateway --tenant\_url &lt;tenant-url&gt; --gateway\_name &lt;gateway-name&gt; --client-id &lt;client-ID&gt; --assertion &lt;assertion&gt;

3. ゲートウェイ用に作成されたボット ユーザー アカウントを検索します。

   curl "https://&lt;tenant-url&gt;/api/v1/users" -H 'accept: application/json' -H 'authorization: Bearer &lt;api-key&gt;'

4. ボット ID をコピーします。

5. このボット ユーザー アカウントを削除します。

   curl -X DELETE "https://&lt;tenant-url&gt;/api/v1/users/&lt;bot-user-ID&gt;" -H "Authorization: Bearer &lt;api-key&gt;"

6. ゲートウェイ用に作成された「DAG Registration」ロールを検索します。

   curl "https://&lt;tenant-url&gt;/api/v1/roles?limit=1&filter=(name%20eq%20%22DAG%20Registration%22)" -H "Authorization: Bearer &lt;api-key&gt;"

7. ロール ID をコピーします。

8. このロールを削除します。

   curl -X DELETE "https://&lt;tenant-url&gt;/api/v1/roles/&lt;role-ID&gt; -H "Authorization: Bearer &lt;api-key&gt;"

9. OAuth クライアントを削除します。

   curl -X DELETE https://&lt;tenant-url&gt;/api/v1/oauth-clients/&lt;OAuth-client-ID&gt; -H "qlik-confirm-delete: &lt;OAuth-client-ID&gt;" -H "Authorization: Bearer &lt;api-key&gt;

### ステージ 5: Direct Access gateway サーバーで Qlik Data Gateway - 直接アクセス サービスを起動する

Qlik Data Gateway - 直接アクセス サービスを起動するには、dcaas-dg および direct-access-agent コンテナを起動します。

### ステージ 6: データ ソースに接続を追加する

「[ステージ 6: データ ソースに接続を追加する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#Stage6)」を参照してください。

## 環境設定

このセクションでは、ゲートウェイ経由でデータ ソースを適切に接続するために設定が必要になる可能性がある、docker-compose.qlik-data-gateway-direct-access.yml ファイルの特定の環境変数を一覧表示します。

* ALLOW\_SOURCES: カンマ区切りのホスト名と IP の許可リスト。ゲートウェイ エージェントが、ユーザーのサーバー上、またはローカル ネットワークやプライベート ネットワーク内の別のホスト (例: localhost 上のデータベース、Docker サービス名、プライベート IP ホストなど) に接続する必要がある場合は、そのアドレスを ALLOW\_SOURCES に追加します。追加しない場合、接続試行は拒否されます。

## サポートされているデータ ソース

* コンテナ化されたインストールでは、次の ODBC コネクタがサポートされています。

  * PostgreSQL
  * SQL Server
  * Oracle

  ODBC コネクタの詳細については、「[ODBC データベース - Qlik Cloud](https://help.qlik.com/en-US/cloud-services/Subsystems/ODBC_Connector_help/Content/Connectors_ODBC/Introduction/ODBC-connector.htm) (英語のみ)」を参照してください。

* REST コネクタ (REST Direct Access gateway 経由)。REST データ ソースの詳細については、「[REST ソース ‒ Qlik Cloud](https://help.qlik.com/en-US/cloud-services/Subsystems/REST_Connector_help/Content/Connectors_REST/REST-connector.htm) (英語のみ)」を参照してください。

## 詳細を見る

* [Qlik Data Gateway - 直接アクセス の設定](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm)
* [Windows サーバーで Qlik Data Gateway - 直接アクセス を設定する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-win.htm)