Trino 플러그인 - Amazon EMR

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

Trino 플러그인

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

지원되는 기능

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

서비스 구성 설치

Trino 서비스 정의를 설치하려면 Ranger Admin 서버를 설정해야 합니다. Ranger Admin 서버를 설정하려면 Ranger Admin 서버 설정 섹션을 참조하세요.

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

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

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

  2. 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'
  3. 서비스 정의와 Apache Ranger Admin 서버 플러그인을 다운로드합니다. 임시 디렉터리에서 서비스 정의를 다운로드합니다. 이 서비스 정의는 Ranger 2.x 버전에서 지원됩니다.

    wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-trino.json
  4. 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에서 서비스를 생성합니다.
  5. 다음 정보를 입력하여 TRINO 애플리케이션 인스턴스를 생성합니다.

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

    표시 이름: 이 인스턴스에 표시될 이름. 제안된 값은 amazonemrtrino입니다.

    Ranger Admin 표시 이름.

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

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

    인증서의 일반 이름: 클라이언트 플러그인에서 관리 서버로 연결하는 데 사용되는 인증서 내 CN 필드입니다. 이 값은 플러그인용으로 생성된 TLS 인증서의 CN 필드와 일치해야 합니다.

    Ranger Admin 일반 이름.

    이 플러그인의 TLS 인증서는 Ranger Admin 서버의 트러스트 스토어에 등록되어 있어야 합니다. 자세한 내용은 TLS 인증서를 참조하세요.

IAM 정책 생성

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

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

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

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

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

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

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

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

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

Ranger Admin은 정책 세부 정보를 생성합니다.

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

Ranger Admin 정책 세부 정보는 거부 조건을 허용합니다.

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

고려 사항

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

Hive 메타데이터 서버

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

인증

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

전송 중 암호화가 필요함

Trino 플러그인을 사용하려면 Amazon EMR 보안 구성에서 전송 중 암호화를 활성화해야 합니다. 암호화를 활성화하려면 전송 중 암호화 섹션을 참조하세요.

제한 사항

Trino 플러그인의 현재 제한 사항은 다음과 같습니다.

  • Ranger Admin 서버는 자동 완성 기능을 지원하지 않습니다.