

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

# 외부 메타스토어를 사용하는 데이터세트에 대한 권한 관리
<a name="data-sharing-hms"></a>

 AWS Glue Data Catalog 메타데이터 페더레이션(데이터 카탈로그 페더레이션)을 사용하면 Amazon S3 데이터에 대한 메타데이터를 저장하는 외부 메타스토어에 데이터 카탈로그를 연결하고를 사용하여 데이터 액세스 권한을 안전하게 관리할 수 있습니다 AWS Lake Formation. 외부 메타스토어의 메타데이터를 데이터 카탈로그로 마이그레이션할 필요는 없습니다.

데이터 카탈로그는 서로 다른 시스템에서 데이터를 더 쉽게 관리하고 검색할 수 있도록 중앙 집중식 메타데이터 리포지토리를 제공합니다. 조직에서 데이터 카탈로그의 데이터를 관리하는 경우 AWS Lake Formation 를 사용하여 Amazon S3의 데이터 세트에 대한 액세스를 제어할 수 있습니다.

**참고**  
현재는 Apache Hive(버전 3 이상) 메타스토어 페더레이션만 지원합니다.

Data Catalog 페더레이션을 설정하기 위해에서 [GlueDataCatalogFederation-HiveMetastore](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:766175011753:applications/GlueDataCatalogFederation-HiveMetastore)라는 AWS Serverless Application Model (AWS SAM) 애플리케이션을 제공합니다 AWS Serverless Application Repository.

참조 구현은 [AWS Glue Data Catalog 페더레이션 - Hive 메타스토어](https://github.com/awslabs/aws-glue-data-catalog-federation)의 오픈 소스 프로젝트로 GitHub에서 제공됩니다.

 AWS SAM 애플리케이션은 데이터 카탈로그를 Hive 메타스토어에 연결하는 데 필요한 다음 리소스를 생성하고 배포합니다.
+ ** AWS Lambda 함수** - 데이터 카탈로그와 Hive 메타스토어 간에 통신하는 페더레이션 서비스의 구현을 호스팅합니다.는이 Lambda 함수를 AWS Glue 호출하여 Hive 메타스토어에서 메타데이터 객체를 검색합니다.
+ **Amazon API Gateway** - 모든 호출을 Lambda 함수로 라우팅하는 프록시 역할을 하는 Hive 메타스토어의 연결 엔드포인트입니다.
+ **IAM 역할** - 데이터 카탈로그와 Hive 메타스토어 간의 연결을 생성하는 데 필요한 권한이 있는 역할입니다.
+ **AWS Glue 연결** - Amazon API Gateway 엔드포인트와 이를 호출할 IAM 역할을 저장하는 AWS Glue 연결 Amazon API Gateway 유형입니다.

테이블을 쿼리할 때 AWS Glue 서비스는 Hive 메타스토어를 런타임 호출하고 메타데이터를 가져옵니다. Lambda 함수는 Hive 메타스토어와 데이터 카탈로그 간의 변환기 역할을 합니다.

연결을 설정한 후 Hive 메타스토어의 메타데이터를 데이터 카탈로그와 동기화하려면, Hive 메타스토어 연결 세부 정보를 사용하여 데이터 카탈로그에 페더레이션형 데이터베이스를 생성하고 이 데이터베이스를 Hive 데이터베이스에 매핑해야 합니다.** 데이터베이스가 데이터 카탈로그 외부의 항목을 가리키는 경우 이러한 데이터베이스를 페더레이션형 데이터베이스라고 합니다.

페더레이션 데이터베이스에서 태그 기반 액세스 제어 및 명명된 리소스 방법을 사용하여 Lake Formation 권한을 적용하고 AWS 계정여러, AWS Organizations및 조직 단위(OUs. 페더레이션형 데이터베이스를 다른 계정의 IAM 보안 주체와 직접 공유할 수도 있습니다.

 외부 Hive 테이블의 Lake Formation 데이터 필터를 사용하여 열 수준, 행 수준 및 셀 수준에서 세분화된 권한을 정의할 수 있습니다. Amazon Athena, Amazon Redshift 또는 Amazon EMR을 사용하여 Lake Formation 관리형 외부 Hive 테이블을 쿼리할 수 있습니다.

교차 계정 데이터 공유 및 데이터 필터링에 대한 자세한 내용은 다음을 참조하세요.
+ [Lake Formation에서의 교차 계정 데이터 공유](cross-account-permissions.md)
+ [Lake Formation의 데이터 필터링 및 셀 수준 보안](data-filtering.md)

**데이터 카탈로그 메타데이터 페더레이션 상위 단계**

1.  AWS SAM 애플리케이션을 배포하고 페더레이션형 데이터베이스를 생성할 수 있는 적절한 권한이 있는 IAM 사용자 및 역할을 생성합니다.

1. 외부 Hive 메타스토어를 사용하는 데이터세트에 대한 `Enable Data Catalog federation` 옵션을 선택하여 Lake Formation에 Amazon S3 데이터 위치를 등록합니다.

1.  AWS SAM 애플리케이션 설정(AWS Glue 연결 이름, Hive 메타스토어에 대한 URL 및 Lambda 함수 파라미터)을 구성하고 AWS SAM 애플리케이션을 배포합니다.

1.  AWS SAM 애플리케이션은 외부 Hive 메타스토어를 데이터 카탈로그와 연결하는 데 필요한 리소스를 배포합니다.

1. Hive 데이터베이스 및 테이블에 Lake Formation 권한을 적용하려면 Hive 메타스토어 연결 세부 정보를 사용하여 데이터 카탈로그에서 데이터베이스를 생성하고 이 데이터베이스를 Hive 데이터베이스에 매핑합니다.

1. 사용자 계정 또는 다른 계정의 보안 주체에 페더레이션형 데이터베이스에 대한 권한을 부여합니다.

**참고**  
Lake Formation 권한을 적용하지 않고도 데이터 카탈로그를 외부 Hive 메스타스토어에 연결하고, 페더레이션형 데이터베이스를 생성하고, Hive 데이터베이스 및 테이블에서 쿼리 및 ETL 스크립트를 실행할 수 있습니다. Lake Formation에 등록되지 않은 Amazon S3의 소스 데이터의 경우 액세스는 Amazon S3 및 AWS Glue 작업에 대한 IAM 권한 정책에 따라 결정됩니다.

제한 사항은 [Hive 메타데이터 스토어 데이터 공유 고려 사항 및 제한 사항](notes-hms.md) 섹션을 참조하세요.

**Topics**
+ [워크플로](#hms-workflow)
+ [데이터 카탈로그를 Hive 메타스토어에 연결하기 위한 사전 요구 사항](hms-prerequisites.md)
+ [데이터 카탈로그를 외부 Hive 메타스토어에 연결](hms-setup.md)
+ [추가 리소스](additional-resources-hms.md)

## 워크플로
<a name="hms-workflow"></a>

다음 다이어그램은를 외부 Hive 메타스토어 AWS Glue Data Catalog 에 연결하는 워크플로를 보여줍니다.

![\[Workflow diagram showing Hive metastore connection to AWS Glue Data Catalog with numbered steps.\]](http://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/images/hms-workflow.png)


1. 보안 주체는 Athena 또는 Redshift Spectrum과 같은 통합 서비스를 사용하여 쿼리를 제출합니다.

1. 통합 서비스는 메타데이터에 대해 데이터 카탈로그를 호출하고, 그러면 뒤에 사용할 수 있는 Hive 메타스토어 엔드포인트를 호출 Amazon API Gateway하고 메타데이터 요청에 대한 응답을 수신합니다.

1. 통합 서비스는 Lake Formation에 요청을 전송하여 테이블에 액세스하기 위한 테이블 정보와 자격 증명을 확인합니다.

1.  Lake Formation은 요청을 승인하고 통합 애플리케이션에 임시 자격 증명을 벤딩하여 데이터 액세스를 허용합니다.

1. 통합 서비스는 Lake Formation에서 받은 임시 자격 증명을 사용하여 Amazon S3에서 데이터를 읽고 결과를 보안 주체와 공유합니다.

# 데이터 카탈로그를 Hive 메타스토어에 연결하기 위한 사전 요구 사항
<a name="hms-prerequisites"></a>

를 외부 Apache Hive 메타스토어 AWS Glue Data Catalog 에 연결하고 데이터 액세스 권한을 설정하려면 다음 요구 사항을 완료해야 합니다.
**참고**  
Lake Formation 관리자가 AWS SAM 애플리케이션을 배포하고 권한이 있는 사용자만 Hive 메타스토어 연결을 사용하여 해당 페더레이션 데이터베이스를 생성하는 것이 좋습니다.

1. 

**IAM 역할을 생성합니다.**

**AWS SAM 애플리케이션을 배포하려면**
   + Hive 메타스토어에 대한 연결을 생성하는 데 필요한 리소스(Lambda 함수, , Amazon API Gateway IAM 역할 및 AWS Glue 연결)를 배포하는 데 필요한 권한이 있는 역할을 생성합니다.

**페더레이션형 데이터베이스를 만들려면**

   리소스에 대한 다음과 같은 권한이 필요합니다.
   + `glue:CreateDatabase on resource arn:aws:glue:region:account-id:database/gluedatabasename`
   + `glue:PassConnection on resource arn:aws:glue:region:account-id:connection/hms_connection`

1. 

**Lake Formation에 Amazon S3 위치를 등록합니다.**

   Lake Formation을 사용하여 데이터 레이크의 데이터를 관리하고 보호하려면 Hive 메타스토어의 테이블 데이터가 있는 Amazon S3 위치를 Lake Formation에 등록해야 합니다. 이렇게 하면 Lake Formation에서 Athena, Redshift Spectrum, Amazon EMR과 같은 AWS 분석 서비스에 자격 증명을 제공할 수 있습니다.

   Amazon S3 위치 등록에 대한 자세한 내용은 [데이터 레이크에 Amazon S3 위치 추가](register-data-lake.md) 섹션을 참조하세요.

   Amazon S3 위치를 등록할 때 **데이터 카탈로그 페더레이션 활성화** 확인란을 선택하여 Lake Formation이 페더레이션형 데이터베이스의 테이블에 액세스하는 역할을 맡을 수 있도록 합니다.  
![\[Register location form for AWS Lake Formation with Amazon S3 path and IAM role options.\]](http://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/images/hms-register-s3.png)

   Lake Formation에 데이터 위치를 등록하는 방법에 대한 자세한 내용은 [데이터 레이크에 대한 Amazon S3 위치 구성](initial-lf-config.md#register-s3-location) 섹션을 참조하세요.

1. 

**올바른 Amazon EMR 버전을 사용합니다.**

   페더레이션형 Hive 메타스토어 데이터베이스와 함께 Amazon EMR을 사용하려면 Hive 버전 3.x 이상 및 Amazon EMR 버전 6.x 이상이 있어야 합니다.

# 데이터 카탈로그를 외부 Hive 메타스토어에 연결
<a name="hms-setup"></a>

를 Hive 메타스토어 AWS Glue Data Catalog 에 연결하려면 [GlueDataCatalogFederation-HiveMetastore](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:766175011753:applications/GlueDataCatalogFederation-HiveMetastore)라는 AWS SAM 애플리케이션을 배포해야 합니다. 이는 외부 Hive 메타스토어를 데이터 카탈로그와 연결하는 데 필요한 리소스를 배포합니다. 에서 AWS SAM 애플리케이션에 액세스할 수 있습니다 AWS Serverless Application Repository.

 AWS SAM 애플리케이션은 Lambda 함수를 사용하여 Amazon API Gateway 뒤에 Hive 메타스토어에 대한 연결을 생성합니다. AWS SAM 애플리케이션은 URI(Uniform Resource Identifier)를 사용자의 입력으로 사용하고 외부 Hive 메타스토어를 데이터 카탈로그에 연결합니다. 사용자가 Hive 테이블에서 쿼리를 실행할 경우 데이터 카탈로그는 API Gateway 엔드포인트를 직접적으로 호출합니다. 엔드포인트는 Lambda 함수를 호출하여 Hive 테이블의 메타데이터를 검색합니다.

**데이터 카탈로그를 Hive 메타스토어에 연결하고 권한을 설정하려면**

1. 

**AWS SAM 애플리케이션을 배포합니다.**

   1. 에 로그인 AWS Management Console 하고를 엽니다 AWS Serverless Application Repository.

   1. 탐색 창에서 **사용 가능한 애플리케이션**을 선택합니다.

   1. **퍼블릭 애플리케이션**을 선택합니다.

   1. **사용자 지정 IAM 역할 또는 리소스 정책을 만드는 앱 표시(Show apps that create custom IAM roles or resource policies)** 옵션을 선택합니다.

   1. 검색 상자에 **GlueDataCatalogFederation-HiveMetastore**라는 이름을 입력합니다.

   1. **GlueDataCatalogFederation-HiveMetastore** 애플리케이션을 선택합니다.

   1. **애플리케이션 설정**에서 Lambda 함수에 필요한 최소 설정을 다음과 같이 입력합니다.
      + **애플리케이션 이름** - AWS SAM 애플리케이션의 이름입니다.
      + **GlueConnectionName** - 연결의 이름입니다.
      + **HiveMetastoreURIs** - 하이브 메타스토어 호스트의 URI입니다.
      + **LambdaMemory** - Lambda 메모리의 양(MB)은 128\$110240입니다. 기본값은 1024입니다.
      + **LambdaTimeout** - 최대 Lambda 호출 런타임(초)입니다. 기본값은 30입니다.
      + **VPCSecurityGroupIds** 및 **VPCSubnetIds** - Hive 메타스토어가 존재하는 VPC에 대한 정보입니다.

   1. **이 앱이 사용자 지정 IAM 역할 및 리소스 정책을 생성하는 것을 확인(I acknowledge that this app creates custom IAM roles and resource policies)**을 선택합니다. 자세한 내용을 보려면 **정보** 링크를 선택하세요.

   1. **애플리케이션 설정(Application settings)** 섹션의 오른쪽 하단에서 **배포(Deploy)**를 선택합니다. 배포가 완료되면 Lambda 콘솔의 **리소스** 섹션에 Lambda 함수가 나타납니다.

    애플리케이션이 Lambda에 배포됩니다. 이름 앞에 **serverlessrepo-**가 추가되어 애플리케이션이 AWS Serverless Application Repository에서 배포되었음을 나타냅니다. 애플리케이션을 선택하면 배포된 애플리케이션의 각 리소스가 나열된 **리소스** 페이지로 이동합니다. 리소스에는 데이터 카탈로그와 Hive 메타스토어 간의 통신을 허용하는 Lambda 함수, AWS Glue 연결 및 데이터베이스 페더레이션에 필요한 기타 리소스가 포함됩니다.

1. 

**데이터 카탈로그에서 페더레이션형 데이터베이스를 만듭니다.**

   Hive 메타스토어에 대한 연결을 만든 후에는 외부 Hive 메타스토어 데이터베이스를 가리키는 데이터 카탈로그에서 페더레이션된 데이터베이스를 만들 수 있습니다. 데이터 카탈로그에 연결하려는 모든 Hive 메타스토어 데이터베이스의 데이터 카탈로그에 해당하는 데이터베이스를 만들어야 합니다.

------
#### [ Lake Formation console ]

   1. **데이터 공유** 페이지에서 **공유 데이터베이스** 탭을 선택한 다음 **데이터베이스 생성**을 선택합니다.

   1. **연결 이름**의 경우 드롭다운 메뉴에서 Hive 메타스토어 연결 이름을 선택합니다.

   1. 고유한 데이터베이스 이름과 데이터베이스의 페더레이션 소스 식별자를 입력합니다. 이 이름은 테이블을 쿼리할 때 SQL 문에 사용하는 이름입니다. 이름은 최대 255자까지 입력할 수 있으며 계정 내에서 고유해야 합니다.

   1. **데이터베이스 생성**을 선택합니다.

------
#### [ AWS CLI ]

   ```
   aws glue create-database \
   '{
    "CatalogId": "<111122223333>",
     "database-input": {
       "Name":"<fed_glue_db>",
       "FederatedDatabase":{
           "Identifier":"<hive_db_on_emr>",
           "ConnectionName":"<hms_connection>"
        }
      }
    }'
   ```

------

1. 

**페더레이션형 데이터베이스의 테이블을 봅니다.**

   페더레이션형 데이터베이스를 생성한 후에는 Lake Formation 콘솔 또는 AWS CLI를 사용하여 Hive 메타스토어의 테이블 목록을 볼 수 있습니다.

------
#### [ Lake Formation console ]

   1. **공유 데이터베이스** 탭에서 데이터베이스 이름을 선택합니다.

   1. **데이터베이스** 페이지에서 **테이블 보기**를 선택합니다.

------
#### [ AWS CLI ]

   다음 예는 연결 정의, 데이터베이스 이름, 데이터베이스의 일부 또는 모든 테이블을 검색하는 방법을 보여줍니다. 데이터 카탈로그의 ID를 데이터베이스를 생성하는 데 사용한 유효한 AWS 계정 ID로 바꿉니다. `hms_connection`을 연결 이름으로 바꿉니다.

   ```
   aws glue get-connection \
   --name <hms_connection>  \       
   --catalog-id 111122223333
   ```

   ```
   aws glue get-database \
   --name <fed_glu_db> \             
   --catalog-id 111122223333
   ```

   ```
   aws glue get-tables \
   --database-name <fed_glue_db> \
   --catalog-id 111122223333
   ```

   ```
   aws glue get-table \
   --database-name <fed_glue_db> \
   --name <hive_table_name> \
   --catalog-id 111122223333
   ```

------

1. 

**권한을 부여합니다.**

    데이터베이스를 생성한 후 계정의 다른 IAM 사용자 및 역할 또는 외부 AWS 계정 및 조직에 권한을 부여할 수 있습니다. 페더레이션형 데이터베이스에 대한 데이터 쓰기 권한(삽입, 삭제) 및 메타데이터 권한(변경, 삭제, 생성)은 부여할 수 없습니다. 권한 부여에 대한 자세한 내용은 [Lake Formation 권한 관리](managing-permissions.md) 섹션을 참조하세요.

1. 

**페더레이션형 데이터베이스 쿼리**

   권한 부여 후 사용자는 Athena 및 Amazon Redshift를 사용하여 로그인하고 페더레이션형 데이터베이스 쿼리를 시작할 수 있습니다. 이제 사용자는 로컬 데이터베이스 이름을 사용하여 SQL 쿼리에서 Hive 데이터베이스를 참조할 수 있습니다.

   ** Amazon Athena 쿼리 구문 예제**

   `fed_glue_db`를 이전에 생성한 로컬 데이터베이스 이름으로 바꿉니다.

    `Select * from fed_glue_db.customers limit 10;`

# 추가 리소스
<a name="additional-resources-hms"></a>

다음 블로그 게시물에는 Hive 메타스토어 데이터베이스 및 테이블에 Lake Formation 권한을 설정하고 Athena를 사용하여 이를 쿼리하는 방법에 대한 자세한 지침이 포함되어 있습니다. 또한 생산자 계정 A의 Lake Formation 보안 주체가 소비자 계정 B에 LF 태그를 사용하여 페더레이션형 Hive 데이터베이스와 테이블을 공유하는 교차 계정 공유 사용 사례를 보여줍니다.
+ [AWS Lake Formation 권한을 사용하여 Apache Hive 메타스토어 쿼리](https://aws.amazon.com/blogs/big-data/query-your-apache-hive-metastore-with-aws-lake-formation-permissions/)