

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EMR과 Ranger의 통합을 위한 Trino 플러그인
<a name="emr-ranger-trino"></a>

Trino(이전의 PrestoSQL)는 HDFS, 오브젝트 스토리지, 관계형 데이터베이스 및 NoSQL 데이터베이스와 같은 데이터 소스에서 쿼리를 실행하는 데 사용할 수 있는 SQL 쿼리 엔진입니다. 따라서 데이터를 중앙 위치로 마이그레이션할 필요가 없으며 어디서나 데이터를 쿼리할 수 있습니다. Amazon EMR은 Trino에 대한 세분화된 액세스 제어를 제공할 수 있는 Apache Ranger 플러그인을 제공합니다. 플러그인은 오픈 소스 Apache Ranger Admin 서버 버전 2.0 이상과 호환됩니다.

**Topics**
+ [지원되는 기능](#emr-ranger-trino-features)
+ [서비스 구성 설치](#emr-ranger-trino-service-config)
+ [IAM 정책 생성](#emr-ranger-trino-create-policies)
+ [고려 사항](#emr-ranger-trino-considerations)
+ [제한 사항](#emr-ranger-trino-limitations)

## 지원되는 기능
<a name="emr-ranger-trino-features"></a>

Amazon EMR의 Trino용 Apache Ranger 플러그인은 세분화된 액세스 제어로 보호되는 Trino 쿼리 엔진의 모든 기능을 지원합니다. 여기에는 데이터베이스, 테이블, 열 수준 액세스 제어, 행 필터링 및 데이터 마스킹이 포함됩니다. Apache Ranger 정책에는 사용자 및 그룹에 대한 권한 부여 정책과 거부 정책이 포함될 수 있습니다. 감사 이벤트는 CloudWatch Logs로도 제출됩니다.

## 서비스 구성 설치
<a name="emr-ranger-trino-service-config"></a>

Trino 서비스 정의를 설치하려면 Ranger Admin 서버를 설정해야 합니다. Ranger Admin 서버를 설정하려면 [Amazon EMR과 통합하도록 Ranger Admin 서버 설정](emr-ranger-admin.md) 섹션을 참조하세요.

다음 단계에 따라 Trino 서비스 정의를 설치합니다.

1. Apache Ranger Admin 서버에 SSH로 연결합니다.

   ```
   ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal
   ```

   

1. Presto 서버 플러그인(있는 경우)을 제거합니다. 다음 명령을 실행합니다. '서비스를 찾을 수 없음' 오류와 함께 오류가 발생하면 Presto 서버 플러그인이 서버에 설치되지 않은 것입니다. 다음 단계를 진행합니다.

   ```
   curl -f -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X DELETE -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/presto'
   ```

1. 서비스 정의와 Apache Ranger Admin 서버 플러그인을 다운로드합니다. 임시 디렉터리에서 서비스 정의를 다운로드합니다. 이 서비스 정의는 Ranger 2.x 버전에서 지원됩니다.

   ```
   wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-trino.json
   ```

1. Amazon EMR에 대한 Apache Trino 서비스 정의를 등록합니다.

   ```
   curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-trino.json \
   -H "Accept: application/json" \
   -H "Content-Type: application/json" \
   -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'
   ```

   이 명령이 성공적으로 실행되면 다음 이미지와 같이 Ranger Admin UI에 `TRINO`라는 새 서비스가 표시됩니다.  
![\[Ranger Admin에서 서비스를 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/ranger-create-service-trino.png)

1. 다음 정보를 입력하여 `TRINO` 애플리케이션 인스턴스를 생성합니다.

   **서비스 이름**: 사용할 서비스 이름. 제안된 값은 `amazonemrtrino`입니다. Amazon EMR 보안 구성을 생성할 때 필요하므로 이 서비스 이름을 기록해 둡니다.

   **표시 이름**: 이 인스턴스에 표시될 이름. 제안된 값은 `amazonemrtrino`입니다.  
![\[Ranger Admin 표시 이름.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/ranger-display-name-trino.png)

   **jdbc.driver.ClassName**: Trino 연결을 위한 JDBC 클래스의 클래스 이름. 기본값을 사용할 수 있습니다.

   **jdbc.url**: Trino 코디네이터에 연결할 때 사용할 JDBC 연결 문자열.

   **인증서의 일반 이름**: 클라이언트 플러그인에서 관리 서버로 연결하는 데 사용되는 인증서 내 CN 필드입니다. 이 값은 플러그인용으로 생성된 TLS 인증서의 CN 필드와 일치해야 합니다.  
![\[Ranger Admin 일반 이름.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/ranger-common-name-trino.png)

   이 플러그인의 TLS 인증서는 Ranger Admin 서버의 트러스트 스토어에 등록되어 있어야 합니다. 자세한 내용은 [TLS 인증서](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger-admin-tls.html)를 참조하세요.

## IAM 정책 생성
<a name="emr-ranger-trino-create-policies"></a>

새 정책을 생성할 때 다음 필드를 입력합니다.

**정책 이름**: 이 정책의 이름입니다.

**정책 레이블**: 이 정책에 적용할 수 있는 레이블입니다.

**카탈로그**: 이 정책이 적용되는 카탈로그. 와일드카드 '\$1'는 모든 카탈로그를 나타냅니다.

**스키마**: 이 정책이 적용되는 스키마. 와일드카드 '\$1'는 모든 스키마를 나타냅니다.

**테이블**: 이 정책이 적용되는 테이블입니다. 와일드카드 '\$1'는 모든 테이블을 나타냅니다.

**열**: 이 정책이 적용되는 열. 와일드카드 '\$1'는 모든 열을 나타냅니다.

**설명**: 이 정책에 대한 설명입니다.

**Trino 사용자**(사용자 위장 액세스용), **Trino 시스템 및 세션 속성**(엔진 시스템 또는 세션 속성 교체용), **함수 및 프로시저**(함수 또는 프로시저 직접 호출용), **URL**(데이터 위치에서 엔진에 대한 읽기 및 쓰기 액세스 권한 부여용)에 대해 다른 유형의 정책이 존재합니다.

![\[Ranger Admin은 정책 세부 정보를 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/ranger-create-policy-details-trino.png)


특정 사용자 및 그룹에 권한을 부여하려면 사용자 및 그룹을 입력합니다. **허용** 조건 및 **거부** 조건에 대한 제외 항목을 지정할 수도 있습니다.

![\[Ranger Admin 정책 세부 정보는 거부 조건을 허용합니다.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions-trino.png)


허용 및 거부 조건을 지정한 후 **저장**을 선택합니다.

## 고려 사항
<a name="emr-ranger-trino-considerations"></a>

Apache Ranger 내에서 Trino 정책을 생성할 때 알아두어야 할 몇 가지 사용 고려 사항이 있습니다.

**Hive 메타데이터 서버**

Hive 메타데이터 서버는 무단 액세스로부터 보호하기 위해 신뢰할 수 있는 엔진, 특히 Trino 엔진을 통해서만 액세스할 수 있습니다. 클러스터의 모든 노드는 Hive 메타데이터 서버에도 액세스할 수 있습니다. 필수 포트 9083은 기본 노드에 대한 액세스 권한을 모든 노드에 제공합니다.

**Authentication**

기본적으로 Trino는 Amazon EMR 보안 구성에 구성된 대로 Kerberos를 사용하여 인증하도록 구성됩니다.

**전송 중 암호화가 필요함**

Trino 플러그인을 사용하려면 Amazon EMR 보안 구성에서 전송 중 암호화를 활성화해야 합니다. 암호화를 활성화하려면 [전송 중 암호화](emr-data-encryption-options.md#emr-encryption-intransit) 섹션을 참조하세요.

## 제한 사항
<a name="emr-ranger-trino-limitations"></a>

Trino 플러그인의 현재 제한 사항은 다음과 같습니다.
+ Ranger Admin 서버는 자동 완성 기능을 지원하지 않습니다.