# 컨테이너에서 Qlik 데이터 게이트웨이 - 직접 액세스 설정하기

이 항목에서는 컨테이너화된 직접 액세스 게이트웨이을(를) 설정하는 방법을 설명합니다.사전 요구 사항 및 설치 지침을 제공하며, 컨테이너화된 직접 액세스 게이트웨이(으)로 작업할 때 알아두어야 할 제한 사항과 고려 사항을 설명합니다.

정보 메모직접 액세스 게이트웨이 1.8.0부터 지원됩니다.

## 컨테이너화된 직접 액세스 게이트웨이란 무엇인가요?

직접 액세스 게이트웨이을(를) Docker 컨테이너에 배포할 수 있습니다.이러한 유형의 배포는 컨테이너화된 직접 액세스 게이트웨이(이)라고 합니다.컨테이너화된 직접 액세스 게이트웨이 배포는 Linux, macOS 및 Windows에서 지원됩니다.

컨테이너화된 직접 액세스 게이트웨이은(는) 사용자의 직접 액세스 게이트웨이 환경에 이식성을 제공합니다.

## Qlik 데이터 게이트웨이 - 직접 액세스 사용 시 모범 사례

Qlik 데이터 게이트웨이 - 직접 액세스 사용 시 성공적인 환경을 위해서는 다음 모범 사례를 따르는 것이 좋습니다.

* 개발, 사용자 승인 테스트, 프로덕션에 동일한 직접 액세스 게이트웨이를 사용하지 마십시오. 사용할 수 있는 리소스에 과부하가 걸리고 시스템 안정성에 영향을 미칠 위험이 증가하기 때문입니다.비즈니스 관점에서 볼 때 리소스 부족과 안정성 저하로 인해 프로덕션 응용 프로그램 데이터 업데이트가 지연될 수 있습니다.

* 최적의 성능을 위해서는 데이터 소스에 최대한 가까운 환경에 직접 액세스 게이트웨이를 설치하십시오.

## 시스템 전제 조건

이 섹션에서는 컨테이너화된 직접 액세스 게이트웨이 사용을 위한 요구 사항에 대해 설명합니다.

### 소프트웨어 요구 사항

* 호스트에 설치된 Docker Engine 버전 20.9 이상 및 Docker Compose 플러그인(docker compose, v2 구문).

### 필수 포트 및 프로토콜

필수 포트 및 프로토콜에 대한 자세한 내용은 [필수 포트 및 프로토콜](https://help.qlik.com/ko-KR/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코어, 8GB 메모리, Docker에서 사용 가능한 5GB 스토리지

* 선택 사항: 게이트웨이가 호스트의 다른 컨테이너 또는 프로세스와 경쟁하지 않고 전용 용량을 확보할 수 있도록 compose 파일에서 컨테이너에 일치하는 제한을 설정합니다:

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

## 설치 Qlik 데이터 게이트웨이 - 직접 액세스

Direct Access gateway를 설정하려면 관리 활동 센터와 Direct Access gateway 서버 모두에서 수행해야 하는 절차가 포함됩니다.

정보 메모관리 활동 센터에서 수행해야 하는 데이터 게이트웨이 절차에는 테넌트 관리자 권한이 필요합니다.

### 1단계: 다운로드 Qlik 데이터 게이트웨이 - 직접 액세스

1. 관리 활동 센터에서 데이터 게이트웨이를 선택합니다.

   기존의 모든 데이터 게이트웨이는 [각 게이트웨이에 대한 기본 정보를 보여 주는 테이블](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-managing-console.htm#gateprop)에 나열됩니다.

2. 배포 도구 모음 버튼을 클릭합니다.

   데이터 게이트웨이 배포 대화 상자가 열립니다.

3. 데이터 게이트웨이 - 직접 액세스 - Containerized Direct Access Gateway를 선택하고 Qlik 고객 계약에 동의한 다음 다운로드를 클릭합니다.Direct Access gateway 설치 파일(docker-compose.qlik-data-gateway-direct-access.yml)이 사용자 컴퓨터로 다운로드됩니다.

### 2단계: Docker Compose 파일을 실행하여 배포 시작

직접 액세스 게이트웨이 배포를 시작하려면 다음 명령을 실행하세요:

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

### 3단계: 직접 액세스 게이트웨이 설정하기

자세한 설정 방법은 [3단계: 직접 액세스 게이트웨이 설정](https://help.qlik.com/ko-KR/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/ko-KR/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: 명령줄을 사용한 자동 등록

관리 활동 센터를 사용하지 않고 명령줄에서 직접 액세스 게이트웨이을(를) 자동으로 등록할 수도 있습니다.이 메서드는 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/ko-KR/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 클라이언트의 동의 방식을 trusted로 설정합니다.

   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. 직접 액세스 게이트웨이 공간을 가져옵니다.

    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/ko-KR/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 데이터 게이트웨이 - 직접 액세스 서비스 시작

Qlik 데이터 게이트웨이 - 직접 액세스 서비스를 시작하려면 dcaas-dg 및 direct-access-agent 컨테이너를 시작하십시오.

### 6단계: 데이터 소스에 연결 추가

[6단계: 데이터 소스에 연결 추가](https://help.qlik.com/ko-KR/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 데이터 게이트웨이 - 직접 액세스 설정](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm)
* [Windows 서버에서 Qlik 데이터 게이트웨이 - 직접 액세스 설정하기](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-win.htm)