

# 자습서: Lake Formation 및 JDBC를 사용하여 Athena에 대한 Okta 사용자의 페더레이션 액세스 구성
<a name="security-athena-lake-formation-jdbc-okta-tutorial"></a>

이 자습서에서는 Athena의 SAML 기반 연합 사용을 활성화하기 위해 Okta, AWS Lake Formation, AWS Identity and Access Management 권한 및 Athena JDBC 드라이버를 구성하는 방법을 보여줍니다 Lake Formation은 SAML 기반 사용자에게 Athena에서 사용 가능한 데이터에 대해 세분화된 액세스 제어를 제공합니다. 이 구성을 설정하기 위해 자습서에서는 Okta 개발자 콘솔, AWS IAM 및 Lake Formation 콘솔, SQL Workbench/J tool을 사용합니다.
<a name="security-athena-lake-formation-jdbc-okta-tutorial-prerequisites"></a>
**사전 조건**  
이 자습서는 다음을 이미 완료했다고 가정합니다.
+ Amazon Web Services 계정을 생성했습니다. 계정을 만들려면 [Amazon Web Services 홈페이지](https://aws.amazon.com/)를 방문하세요.
+ Amazon S3에서 Athena에 대한 [쿼리 결과 위치를 설정](query-results-specify-location.md)했습니다.
+ Lake Formation에 [Amazon S3 데이터 버킷 위치를 등록](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html)했습니다.
+ Amazon S3의 데이터를 가리키는 [AWS Glue 데이터 카탈로그](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)의 [데이터베이스](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) 및 [테이블](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html)을 정의했습니다.
  + 테이블을 아직 정의하지 않았다면 [AWS Glue 크롤러를 실행](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)하거나 Athena를 사용해 액세스하려는 데이터에 대해 [하나의 데이터베이스와 하나 이상의 테이블을 정의](work-with-data.md)합니다.
  + 이 자습서는 [뉴욕시 택시 이동 데이터 집합](https://registry.opendata.aws/nyc-tlc-trip-records-pds/)에 기반한 테이블을 사용합니다. 이 테이블은 [Registry of Open Data on AWS](https://registry.opendata.aws/)에 제공되어 있습니다. 이 자습서에서는 데이터베이스 이름 `tripdb`와 테이블 이름 `nyctaxi`를 사용합니다.

**Topics**
+ [1단계: Okta 계정 생성](#security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account)
+ [2단계: Okta에 사용자 및 그룹 추가](#security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication)
+ [3단계: SAML 인증을 위한 Okta 애플리케이션 설정](#security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication)
+ [4단계: AWS SAML 자격 증명 공급자 및 Lake Formation 액세스 IAM 역할 생성](#security-athena-lake-formation-jdbc-okta-tutorial-step-4-create-an-aws-saml-identity-provider-and-lake-formation-access-IAM-role)
+ [5단계: Okta 애플리케이션에 IAM 역할 및 SAML 자격 증명 공급자 추가](#security-athena-lake-formation-jdbc-okta-tutorial-step-5-update-the-okta-application-with-the-aws-role-and-saml-identity-provider)
+ [6단계: AWS Lake Formation을(를) 통해 사용자 및 그룹 권한 부여](#security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation)
+ [7단계: Athena JDBC 클라이언트를 통해 액세스 권한 확인](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client)
+ [결론](#security-athena-lake-formation-jdbc-okta-tutorial-conclusion)
+ [관련 리소스](#security-athena-lake-formation-jdbc-okta-tutorial-related-resources)

## 1단계: Okta 계정 생성
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account"></a>

이 자습서는 Okta를 SAML 기반 자격 증명 공급자로 사용합니다. 아직 Okta 계정이 없다면 무료로 계정을 생성할 수 있습니다. SAML 인증을 위한 Okta 애플리케이션을 만들려면 Okta 계정이 필요합니다.

**Okta 계정을 생성하려면**

1. Okta를 사용하려면 [Okta 개발자 가입 페이지](https://developer.okta.com/signup/)를 탐색해 무료 Okta 평가판 계정을 만듭니다. 개발자 에디션 서비스는 Okta가 [developer.okta.com/pricing](https://developer.okta.com/pricing)에 지정한 한도까지 무료입니다.

1. 활성화 이메일을 받으면 계정을 활성화하세요.

   Okta 도메인 이름이 할당됩니다. 참조용으로 도메인 이름을 저장합니다. 나중에 Athena에 연결하는 JDBC 문자열에 이 도메인 이름(*<okta-idp-domain>*)을 사용합니다.

## 2단계: Okta에 사용자 및 그룹 추가
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication"></a>

이 단계에서는 Okta 콘솔을 사용하여 다음 작업을 수행합니다.
+ 2개의 Okta 사용자를 만듭니다.
+ 2개의 Okta 그룹을 만듭니다.
+ 각 Okta 그룹에 1개의 Okta 사용자를 추가합니다.

**Okta에 사용자를 추가하려면**

1. Okta 계정을 활성화한 후 할당된 Okta 도메인에 관리 사용자로 로그인합니다.

1. 왼쪽 탐색 창에서 **디렉터리(Directory)**와 **사람(People)**을 차례로 선택합니다.

1. **사람 추가(Add Person)**를 선택해 JDBC 드라이버를 통해 Athena에 액세스할 새 사용자를 추가합니다.  
![\[사람 추가(Add Person)를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-3.png)

1. **사람 추가(Add Person)** 대화 상자에 필수 정보를 입력합니다.
   + **이름(First name)**과 **성(Last name)**에 값을 입력합니다. 이 자습서에서는 *athena-okta-user*를 사용합니다.
   + **사용자 이름(Username)**과 **기본 이메일(Primary email)**을 입력합니다. 이 자습서에서는 *athena-okta-user@anycompany.com*을 사용합니다.
   + **암호(Password)**에서 **관리자별 설정(Set by admin)**을 선택한 다음 암호를 제공합니다. 이 자습서에서는 **사용자가 첫 로그인할 때 암호를 변경해야 함(User must change password on first login)** 옵션을 선택 취소했습니다. 각자의 보안 요구 사항은 다를 수 있습니다.  
![\[Okta 애플리케이션에 사용자 추가\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4.png)

1. **다른 사용자 저장 및 추가(Save and Add Another)**를 선택합니다.

1. 다른 사용자에 대한 정보를 입력합니다. 이 예제에서는 비즈니스 분석가 사용자 *athena-ba-user@anycompany.com*를 추가합니다.  
![\[Okta 애플리케이션에 사용자 추가\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4a.png)

1. **저장(Save)**을 선택합니다.

다음 절차에서는 “비즈니스 분석가” 그룹과 “개발자” 그룹을 추가하여 Athena JDBC 드라이버를 통해 두 Okta 그룹에 대한 액세스를 제공합니다.

**Okta 그룹을 추가하려면**

1. Okta 탐색 창에서 **디렉터리(Directory)**와 **그룹(Groups)**을 차례로 선택합니다.

1. **그룹(Groups)** 페이지에서 **그룹 추가(Add Group)**를 선택합니다.  
![\[Add Group(그룹 추가)을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4c.png)

1. **그룹 추가(Add Group)** 대화 상자에 필수 정보를 입력합니다.
   + **이름(Name)**에 *lf-business-analyst*를 입력합니다.
   + **그룹 설명(Group Description)**에 *비즈니스 분석가*를 입력합니다.  
![\[Okta 그룹 추가\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4d.png)

1. **Add Group(그룹 추가)**을 선택합니다.

1. **그룹(Groups)** 페이지에서 **그룹 추가(Add Group)**를 다시 선택합니다. 이번에는 개발자 그룹에 대한 정보를 입력합니다.

1. 필요한 정보를 입력합니다.
   + **이름(Name)**에 *lf-developer*를 입력합니다.
   + **그룹 설명(Group Description)**에 *개발자*를 입력합니다.

1. **Add Group(그룹 추가)**을 선택합니다.

이제 두 사용자와 두 그룹이 있으므로 각 그룹에 사용자를 추가할 준비가 되었습니다.

**그룹에 사용자를 추가하려면**

1. **그룹(Groups)** 페이지에서 방금 생성한 **lf-developer** 그룹을 선택합니다. 개발자로 생성한 Okta 사용자 중 하나를 이 그룹에 추가합니다.  
![\[lf-developer를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4f.png)

1. **사람 관리(Manage People)**를 선택합니다.  
![\[사람 관리(Manage People)를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4g.png)

1. **구성원 아님(Not Members)** 목록에서 **athena-okta-user**를 선택합니다.  
![\[구성원 목록에 추가할 사용자를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4h.png)

   사용자에 대한 항목이 왼쪽에 있는 **구성원 아님(Not Members)** 목록에서 오른쪽의 **구성원(Members)** 목록으로 이동합니다.  
![\[Okta 사용자가 Okta 그룹에 추가되었습니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4i.png)

1. **저장**을 선택합니다.

1. **그룹으로 돌아가기(Back to Group)**를 선택하거나 **디렉터리(Directory)**를 선택한 다음 **그룹(Groups)**을 선택합니다.

1. **lf-business-analyst** 그룹을 선택합니다.

1. **사람 관리(Manage People)**를 선택합니다.

1. **athena-ba-user**를 **lf-business-analyst** 그룹의 **구성원** 목록에 추가한 다음 **저장(Save)**을 선택합니다.

1. **그룹으로 돌아가기(Back to Group)**를 선택하거나 **디렉터리(Directory)**, **그룹(Groups)**을 선택합니다.

   이제 **그룹(Groups)** 페이지에서 각 그룹에 한 명의 Okta 사용자가 있는 것을 볼 수 있습니다.  
![\[Okta 콘솔의 각 Okta 그룹에 한 명의 사용자가 추가되었습니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4j.png)

## 3단계: SAML 인증을 위한 Okta 애플리케이션 설정
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication"></a>

이 단계에서는 Okta 개발자 콘솔을 사용하여 다음 작업을 수행합니다.
+ AWS에 사용할 SAML 애플리케이션을 추가합니다.
+ Okta 사용자에게 애플리케이션을 할당합니다.
+ Okta 그룹에게 애플리케이션을 할당합니다.
+ 나중에 AWS에 사용할 수 있도록 최종적인 자격 증명 공급자 메타데이터를 다운로드합니다.

**SAML 인증을 위한 애플리케이션을 추가하려면**

1. Okta 탐색 창에서 **애플리케이션(Applications)**, **애플리케이션(Applications)**을 선택하여 Athena에 대한 SAML 인증용 Okta 애플리케이션을 구성할 수 있습니다.

1. **앱 카탈로그 찾아보기(Browse App Catalog)**를 클릭합니다.

1. 검색 상자에 **Redshift**을(를) 입력합니다.

1. **Amazon Web Services Redshift**를 선택합니다. 이 자습서의 Okta 애플리케이션은 Amazon Redshift를 위한 기존의 SAML 통합을 사용합니다.  
![\[Amazon Web Services Redshift를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-7.png)

1. **Amazon Web Services Redshift** 페이지에서 **추가(Add)**를 선택해 Amazon Redshift용 SAML 기반 애플리케이션을 생성합니다.  
![\[추가(Add)를 선택해 SAML 기반 애플리케이션을 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-8.png)

1. **애플리케이션 레이블(Application label)**에 `Athena-LakeFormation-Okta`를 입력하고 **완료(Done)**를 선택합니다.  
![\[Okta 애플리케이션의 이름을 입력합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-9.png)

이제 Okta 애플리케이션을 생성되었고, 생성한 사용자 및 그룹에 이 애플리케이션을 할당할 수 있습니다.

**애플리케이션을 사용자 및 그룹에 할당하려면**

1. **애플리케이션(Applications)** 페이지에서 **Athena-LakeFormation-Okta** 애플리케이션을 선택합니다.

1. **할당(Assignments)** 탭에서 **할당(Assign)**, **사람에게 할당(Assign to People)**을 차례로 선택합니다.  
![\[할당(Assign), 사람에게 할당(Assign to People)을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-10.png)

1. **Athena-LakeFormation-Okta를 사람에게 할당(Assign Athena-LakeFormation-Okta to People)** 대화 상자에서 이전에 생성했던 **athena-okta-user** 사용자를 찾습니다.

1. **할당(Assign)**을 선택해 사용자를 애플리케이션에 할당합니다.  
![\[할당을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-11.png)

1. **저장하고 돌아가기(Save and Go Back)**를 선택합니다.

1. **완료**를 선택합니다.

1. **Athena-LakeFormation-Okta** 애플리케이션에 대한 **할당(Assignments)** 탭에서 **할당(Assign)**, **그룹에게 할당(Assign to Groups)**을 차례로 선택합니다.

1. **lf-business-analyst**에서 **할당(Assign)**을 선택해 **Athena-LakeFormation-Okta** 애플리케이션을 **lf-business-analyst** 그룹에 할당한 다음 **완료(Done)**를 선택합니다.  
![\[Okta 사용자 그룹에 Okta 애플리케이션 할당\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12b.png)

   해당 그룹이 애플리케이션의 그룹 목록에 나타납니다.  
![\[Okta 애플리케이션이 Okta 그룹에 할당됩니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12c.png)

이제 AWS에 사용할 자격 증명 공급자 애플리케이션 메타데이터를 다운로드할 준비가 되었습니다..

**애플리케이션 메타데이터를 다운로드하려면**

1. Okta 애플리케이션 **로그인(Sign On)** 탭을 선택한 다음 **자격 증명 공급자 메타데이터(Identity Provider metadata)**를 마우스 오른쪽 버튼으로 클릭합니다.  
![\[자격 증명 공급자 메타데이터(Identity Provider metadata)를 마우스 오른쪽 버튼으로 클릭합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-13.png)

1. **다른 이름으로 링크 저장(Save Link As)**을 선택해 XML 형식의 자격 증명 공급자 메타데이터를 파일에 저장합니다. 알아볼 수 있는 이름을 지정합니다(예:`Athena-LakeFormation-idp-metadata.xml`).  
![\[자격 증명 공급자 메타데이터 저장\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-14.png)

## 4단계: AWS SAML 자격 증명 공급자 및 Lake Formation 액세스 IAM 역할 생성
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-4-create-an-aws-saml-identity-provider-and-lake-formation-access-IAM-role"></a>

이 단계에서는 AWS Identity and Access Management(IAM) 콘솔을 사용하여 다음 작업을 수행합니다.
+ AWS에 대한 자격 증명 공급자를 생성합니다.
+ Lake Formation 액세스를 위한 IAM 역할을 생성합니다.
+ AmazonAthenaFullAccess 관리형 정책을 역할에 추가합니다.
+ Lake Formation 및 AWS Glue에 대한 정책을 역할에 축가합니다.
+ Athena 쿼리 결과에 대한 정책을 역할에 추가합니다.

**AWS SAML 자격 증명 공급자를 생성하려면**

1. **Amazon Web Services 계정** **콘솔**에 **Amazon Web Services 계정 관리자**로 로그인하고 **IAM** 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 탐색합니다.

1. 탐색 창에서 **자격 증명 공급자(Identity providers)**를 선택한 다음 **공급자 추가(Add provider)**를 클릭합니다.

1. **공급자 구성(Configure provider)** 화면에 다음 정보를 입력합니다.
   + **공급자 유형(Provider type)**에 **SAML**을 선택합니다.
   + **공급자 이름(Provider name)**에 `AthenaLakeFormationOkta`를 입력합니다.
   + **메타데이터 문서(Metadata document)**에서 **파일 선택(Choose file)** 옵션을 사용하여 다운로드한 자격 증명 공급자(IdP) 메타데이터 XML 파일을 업로드합니다.

1. **공급자 추가(Add Provider)**를 선택합니다.

다음으로 AWS Lake Formation 액세스를 위한 IAM 역할을 생성합니다. 역할에 두 개의 인라인 정책을 추가합니다. 한 정책은 Lake Formation 및 AWS Glue API에 액세스할 수 있는 권한을 제공합니다. 다른 정책은 Athena와 Amazon S3의 Athena 쿼리 결과 위치에 대한 액세스 권한을 제공합니다.

**AWS Lake Formation 액세스를 위한 IAM 역할을 생성하려면**

1. IAM 콘솔의 탐색 창에서 **역할(Roles)**을 선택하고 **역할 생성(Create role)**을 선택합니다.

1. **역할 생성(Create role)** 페이지에서 다음 단계를 수행합니다.  
![\[SAML 2.0을 사용하기 위한 IAM 역할을 구성합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-20.png)

   1. **신뢰할 수 있는 엔터티 유형 선택(Select type of trusted entity)**에서 **SAML 2.0 연합(SAML 2.0 Federation)**을 선택합니다.

   1. **SAML 공급자(SAML provider)**에서 **AthenaLakeFormationOkta**를 선택합니다.

   1. **SAML 공급자**에서 **프로그래밍 방식 및 AWS Management Console 액세스 허용** 옵션을 선택합니다.

   1. **다음: 권한**을 선택합니다.

1. **권한 정책 연결(Attach Permissions policies)** 페이지에서 **필터 정책(Filter policies)**에 **Athena**를 입력합니다.

1. **AmazonAthenaFullAccess** 관리형 정책을 선택하고 **다음: 태그(Next: Tags)**를 선택합니다.  
![\[AmazonAthenaFullAccess 관리형 정책을 IAM 역할에 연결\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-21.png)

1. **Add tags(태그 추가)** 페이지에서 **Next: Review(다음: 검토)**를 선택합니다.

1. **검토(Review)** 페이지에서 **역할 이름(Role name)**에 역할의 이름(예: *Athena-LakeFormation-OktaRole*)을 입력한 다음 **역할 생성(Create role)**을 선택합니다.  
![\[IAM 역할의 이름을 입력합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-22.png)

그런 다음 Lake Formation에 대한 액세스를 허용하는 인라인 정책, AWS Glue API, Amazon S3의 Athena 쿼리 결과를 추가합니다.

IAM 정책을 사용할 때마다 IAM 모범 사례를 따라야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

**Lake Formation 및 AWS Glue에 대한 역할에 인라인 정책을 추가하려면**

1. IAM 콘솔의 역할 목록에서 새로 생성된 `Athena-LakeFormation-OktaRole`을 선택합니다.

1. 역할에 대한 **요약(Summary)** 페이지의 **권한(Permissions)** 탭에서 **인라인 정책 추가(Add inline policy)**를 선택합니다.

1. **정책 생성** 페이지에서 **JSON**을 선택합니다.

1. Lake Formation 및 AWS Glue API에 대한 액세스 권한을 제공하는 다음과 같은 인라인 정책을 추가합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "lakeformation:GetDataAccess",
               "glue:GetTable",
               "glue:GetTables",
               "glue:GetDatabase",
               "glue:GetDatabases",
               "glue:CreateDatabase",
               "glue:GetUserDefinedFunction",
               "glue:GetUserDefinedFunctions"
           ],
           "Resource": "*"
       }
   }
   ```

------

1. **정책 검토**를 선택합니다.

1. **이름(Name)**에 정책의 이름을 입력합니다(예: **LakeFormationGlueInlinePolicy**).

1. **정책 생성(Create policy)**을 선택합니다.

**Athena 쿼리 결과 위치에 대한 역할에 인라인 정책을 추가하려면**

1. `Athena-LakeFormation-OktaRole` 역할에 대한 **요약(Summary)** 페이지의 **권한(Permissions)** 탭에서 **인라인 정책 추가(Add inline policy)**를 선택합니다.

1. **정책 생성** 페이지에서 **JSON**을 선택합니다.

1. Athena 쿼리 결과 위치에 대한 역할 액세스를 허용하는 다음과 같은 인라인 정책을 추가합니다. 예제의 *<athena-query-results-bucket>* 자리 표시자를 해당 Amazon S3 버킷의 이름으로 바꿉니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AthenaQueryResultsPermissionsForS3",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::<athena-query-results-bucket>",
                   "arn:aws:s3:::<athena-query-results-bucket>/*"
               ]
           }
       ]
   }
   ```

------

1. **정책 검토**를 선택합니다.

1. **이름(Name)**에 정책의 이름을 입력합니다(예: **AthenaQueryResultsInlinePolicy**).

1. **정책 생성(Create policy)**을 선택합니다.

그런 다음 Lake Formation 액세스 역할의 ARN과 생성한 SAML 공급자의 ARN을 복사합니다. 이 정보는 자습서의 다음 단원에서 Okta SAML 애플리케이션을 구성할 때 필요합니다.

**역할 ARN 및 SAML 자격 증명 공급자 ARN을 복사하려면**

1. IAM 콘솔의 **요약(Summary)** 페이지에서 `Athena-LakeFormation-OktaRole` 역할에 대해 **역할 ARN(Role ARN)** 옆에 있는 **클립보드로 복사(Copy to clipboard)**를 선택합니다. ARN의 형식은 다음과 같습니다.

   ```
   arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
   ```

1. 나중에 참조할 수 있도록 전체 ARN을 안전하게 저장합니다.

1. IAM 콘솔 탐색 창에서 **자격 증명 공급자(Identity providers)**를 선택합니다.

1. **AthenaLakeFormationOkta** 공급자를 선택합니다.

1. **요약(Summary)** 페이지에서 **공급자 ARN(Provider ARN)** 옆의 **클립보드로 복사(Copy to clipboard)** 아이콘을 선택합니다. ARN은 다음과 같은 양식이어야 합니다.

   ```
   arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta
   ```

1. 나중에 참조할 수 있도록 전체 ARN을 안전하게 저장합니다.

## 5단계: Okta 애플리케이션에 IAM 역할 및 SAML 자격 증명 공급자 추가
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-5-update-the-okta-application-with-the-aws-role-and-saml-identity-provider"></a>

이 단계에서는 Okta 개발자 콘솔로 돌아가서 다음 작업을 수행합니다.
+ Okta 애플리케이션에 사용자 및 그룹 Lake Formation URL 속성을 추가합니다.
+ 자격 증명 공급자의 ARN과 IAM 역할의 ARN을 Okta 애플리케이션에 추가합니다.
+ Okta 애플리케이션 ID를 복사합니다. Okta 애플리케이션 ID는 Athena에 연결하는 JDBC 프로파일에 필요합니다.

**Okta 애플리케이션에 사용자 및 그룹 Lake Formation URL 속성을 추가하려면**

1. Okta 개발자 콘솔에 로그인합니다.

1. **애플리케이션(Applications)** 탭을 선택한 다음 `Athena-LakeFormation-Okta` 애플리케이션을 선택합니다.

1. 애플리케이션에 대한 **로그인(Sign On)** 탭을 선택한 다음 **편집(Edit)**을 선택합니다.  
![\[Okta 애플리케이션을 편집합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-24.png)

1. **속성(선택 사항)(Attributes (optional))**을 클릭하여 확장합니다.  
![\[Okta 애플리케이션에 사용자 Lake Formation URL 속성을 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25.png)

1. **속성 문(선택 사항)(Attribute Statements (optional))**에 다음 속성을 추가합니다.
   + **이름**에 **https://lakeformation.amazon.com/SAML/Attributes/Username**를 입력합니다.
   + [**값(Value)**]에 **user.login**을 입력합니다.

1. **그룹 속성 문(선택 사항)(Group Attribute Statements (optional))**에 다음 속성을 추가합니다.
   + **이름**에 **https://lakeformation.amazon.com/SAML/Attributes/Groups**를 입력합니다.
   + **이름 형식(Name format)**에 **Basic**을 입력합니다.
   + **필터(Filter)**에서 **정규식 일치(Matches regex)**를 선택한 다음 필터 상자에 **.\$1**을 입력합니다.  
![\[Okta 애플리케이션에 그룹 Lake Formation URL 속성을 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25a.png)

1. **고급 로그인 설정(Advanced Sign-On Settings)** 섹션까지 아래로 스크롤하고, 여기서 자격 증명 공급자 및 IAM 역할 ARN을 Okta 애플리케이션에 추가합니다.

**자격 증명 공급자 및 IAM 역할의 ARN을 Okta 애플리케이션에 추가하려면**

1. **Idp ARN 및 역할 ARN(Idp ARN and Role ARN)**에 AWS 자격 증명 공급자 ARN과 역할 ARN을 *<saml-arn>*,*<role-arn>* 형식의 쉼표로 구분된 값으로 입력합니다. 결합된 문자열은 다음과 같아야 합니다.

   ```
   arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta,arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
   ```  
![\[Okta 애플리케이션에서 자격 증명 공급자 ARN 및 IAM 역할 ARN을 입력합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-26.png)

1. **저장**을 선택합니다.

다음으로 Okta 애플리케이션 ID를 복사합니다. 나중에 Athena에 연결하는 JDBC 문자열에 이 정보가 필요합니다.

**Okta 애플리케이션 ID를 찾고 복사하려면**

1. Okta 애플리케이션의 **일반(General)** 탭을 선택합니다.  
![\[Okta 애플리케이션의 일반(General) 탭을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-27.png)

1. 아래로 스크롤하여 **앱 포함 링크(App Embed Link)** 섹션으로 이동합니다.

1. **포함 링크(Embed Link)**에서 URL의 Okta 애플리케이션 ID 부분을 복사하고 안전하게 저장합니다. Okta 애플리케이션 ID는 URL에서 `amazon_aws_redshift/` 뒤부터 다음 슬래시 앞까지의 부분입니다. 예를 들어, URL에 `amazon_aws_redshift/aaa/bbb`가 포함된 경우 애플리케이션 ID는 `aaa`입니다.  
![\[Okta 애플리케이션의 ID를 복사합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-28.png)

**참고**  
포함 링크(Embed link)를 사용하여 Athena 콘솔에 직접 로그인하여 데이터베이스를 볼 수 없습니다. SAML 사용자 및 그룹에 대한 Lake Formation 권한은 JDBC 또는 ODBC 드라이버를 사용하여 Athena 쿼리를 제출할 때만 인식됩니다. JDBC 드라이버를 사용하여 Athena에 연결하는 SQL Workbench/J 도구를 사용하여 데이터베이스를 볼 수 있습니다. SQL Workbench/J 도구는 [7단계: Athena JDBC 클라이언트를 통해 액세스 권한 확인](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client)에서 다룹니다.

## 6단계: AWS Lake Formation을(를) 통해 사용자 및 그룹 권한 부여
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation"></a>

이 단계에서는 Lake Fomation 콘솔을 사용하여 SAML 사용자 및 그룹에게 테이블에 대한 권한을 부여합니다. 다음 작업을 수행할 수 있습니다.
+ Okta SAML 사용자의 ARN 및 테이블에 대한 연결된 사용자 권한을 지정합니다.
+ Okta SAML 사용자의 ARN 및 테이블에 대한 연결된 사용자 권한을 지정합니다.
+ 부여한 권한을 확인합니다.

**Lake Formation에서 Okta 사용자에 대해 권한을 부여하려면**

1. 데이터 레이크 관리자로 AWS Management Console에 로그인합니다.

1. Lake Formation 콘솔([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/))을 엽니다.

1. 탐색 창에서 **테이블(Tables)**을 선택한 다음 권한을 부여할 테이블을 선택합니다. 이 자습서에서는 `tripdb` 데이터베이스의 `nyctaxi` 테이블을 사용합니다.  
![\[권한을 부여할 테이블을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-29.png)

1. **작업(Actions)**에서 **권한 부여(Grant)**를 선택합니다.  
![\[권한 부여(Grant)를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-30.png)

1. **권한 부여(Grant permissions)** 대화 상자에 다음 정보를 입력합니다.

   1. **SAML 및 Amazon Quick 사용자 및 그룹**에 다음 형식으로 Okta SAML 사용자 ARN을 입력합니다.

      ```
      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:user/<athena-okta-user>@<anycompany.com>       
      ```

   1. **열(Columns)**에서 **필터 유형을 선택**하고, **열 포함(Include columns)** 또는 **열 제외(Exclude columns)** 옵션을 선택합니다.

   1. 필터 아래의 **하나 이상의 열 선택(Choose one or more columns)** 드롭다운을 사용하여 사용자에 대해 포함하거나 제외할 열을 지정합니다.

   1. **테이블 권한(Table permissions)**에서 **선택(Select)**을 선택합니다. 이 자습서에서는 `SELECT` 권한만 부여하며, 각자의 요구 사항은 다를 수 있습니다.  
![\[Okta 사용자에게 테이블 및 열 수준 권한을 부여합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31.png)

1. **권한 부여(Grant)**를 선택합니다.

이제 Okta 그룹에 대해 비슷한 단계를 수행합니다.

**Lake Formation에서 Okta 사용자에 대해 권한을 부여하려면**

1. Lake Formation 콘솔의 **테이블(Tables)** 페이지에서 **nyctaxi** 테이블이 계속 선택되어 있는지 확인합니다. 

1. **작업(Actions)**에서 **권한 부여(Grant)**를 선택합니다.

1. **권한 부여(Grant permissions)** 대화 상자에 다음 정보를 입력합니다.

   1. **SAML 및 Amazon Quick 사용자 및 그룹**에 다음 형식으로 Okta SAML 그룹 ARN을 입력합니다.

      ```
      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:group/lf-business-analyst
      ```

   1. **열(Columns)**에서 **필터 유형을 선택**하고, **열 포함(Include columns)**을 선택합니다.

   1. **하나 이상의 열 선택(Choose one or more columns)**에서 테이블의 첫 3개 열을 선택합니다.

   1. **테이블 권한(Table permissions)**에서 부여할 특정 액세스 권한을 선택합니다. 이 자습서에서는 `SELECT` 권한만 부여하며, 각자의 요구 사항은 다를 수 있습니다.  
![\[Okta 그룹에 테이블 권한 부여\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31b.png)

1. **권한 부여(Grant)**를 선택합니다.

1. 부여한 권한을 확인하려면 **작업(Actions)**, **권한 보기(View permissions)**를 선택합니다.  
![\[부여한 권한을 확인하려면 [권한 보기(View permissions)]를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-32.png)

   `nyctaxi` 테이블에 대한 **데이터 권한** 페이지에 **athena-okta-user** 및 **lf-business-analyst** 그룹에 대한 권한이 표시됩니다.  
![\[Okta 사용자 및 그룹에 부여된 권한 보기\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-33.png)

## 7단계: Athena JDBC 클라이언트를 통해 액세스 권한 확인
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client"></a>

이제 Okta SAML 사용자로서 Athena 테스트 연결을 수행하기 위해 JDBC 클라이언트를 사용할 준비가 되었습니다.

이 단원에서는 다음 작업을 수행합니다.
+ 테스트 클라이언트 준비 - Athena JDBC 드라이버를 다운로드하고 SQL 워크벤치를 설치한 다음 드라이버를 워크벤치에 추가합니다. 이 자습서에서는 SQL 워크벤치를 사용하여 Okta 인증을 통해 Athena 액세스하고 Lake Formation 권한을 확인합니다.
+ SQL Workbench에서:
  + Athena Okta 사용자에 대한 연결을 만듭니다.
  + Athena Okta 사용자로 테스트 쿼리를 실행합니다.
  + 비즈니스 분석가 사용자에 대한 연결을 만들고 테스트합니다.
+ Okta 콘솔에서 비즈니스 분석가 사용자를 개발자 그룹에 추가합니다.
+ Lake Formation 콘솔에서 개발자 그룹에 대한 테이블 권한을 구성합니다.
+ SQL 워크벤치에서 비즈니스 분석가 사용자로 테스트 쿼리를 실행하고 권한 변경이 결과에 어떤 영향을 미치는지 확인합니다.

**테스트 클라이언트를 준비하려면**

1. Lake Formation 호환 Athena JDBC 드라이버(버전 2.0.14 이상)를 다운로드하고 [JDBC로 Amazon Athena에 연결](connect-with-jdbc.md)에서 추출합니다.

1. 수정된 Apache 2.0 라이선스에 따라 제공되는 무료 [SQL Workbench/J](https://www.sql-workbench.eu/index.html) SQL 쿼리 도구를 다운로드하고 설치합니다.

1. SQL Workbench에서 **파일(File)**을 선택한 후 **드라이버 관리(Manage Drivers)**를 선택합니다.  
![\[Manage Drivers를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-1.png)

1. **드라이버 관리(Manage Drivers)** 대화 상자에서 다음 단계를 수행합니다.

   1. 새 드라이버 아이콘을 선택합니다.

   1. **이름**에 **Athena**를 입력합니다.

   1. **라이브러리(Library)**에서 방금 다운로드한 Simba Athena JDBC `.jar` 파일을 찾아서 선택합니다.

   1. **확인**을 선택합니다.  
![\[Athena JDBC 드라이버를 SQL Workbench에 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-2.png)

이제 Athena Okta 사용자에 대한 연결을 생성하고 테스트할 준비가 되었습니다.

**Okta 사용자에 대한 연결을 만들려면**

1. **파일(File)**, **연결 창(Connect window)**을 선택합니다.  
![\[연결 창(Connect window)을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-3.png)

1. **연결 프로파일(Connection profile)** 대화 상자에서 다음 정보를 입력하여 연결을 생성합니다.
   + 이름 상자에 **Athena\$1Okta\$1User\$1Connection**을 입력합니다.
   + **드라이버(Driver)**에서 Simba Athena JDBC 드라이버를 선택합니다.
   + **VPC**에 대해 다음 중 하나를 수행합니다.
     + 연결 URL을 사용하려면 단일 행의 연결 문자열을 입력합니다. 다음 예제에서는 가독성을 위해 줄 바꿈이 추가되었습니다.

       ```
       jdbc:awsathena://AwsRegion=region-id;
       S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
       AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider;
       user=athena-okta-user@anycompany.com;
       password=password;
       idp_host=okta-idp-domain;
       App_ID=okta-app-id;
       SSL_Insecure=true;
       LakeFormationEnabled=true;
       ```
     + AWS 프로파일 기반 URL을 사용하려면 다음 단계를 수행합니다.

       1. 다음 예제처럼 AWS 자격 증명 파일이 있는 [AWS 프로파일](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)을 구성합니다.

          ```
          [athena_lf_dev]
          plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider
          idp_host=okta-idp-domain
          app_id=okta-app-id
          uid=athena-okta-user@anycompany.com
          pwd=password
          ```

       1. 다음 예제와 같이 **URL**에 단일 행의 연결 문자열을 입력합니다. 예제에는 가독성을 위해 줄 바꿈이 추가되었습니다.

          ```
          jdbc:awsathena://AwsRegion=region-id;
          S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
          profile=athena_lf_dev;
          SSL_Insecure=true;
          LakeFormationEnabled=true;
          ```

     이 예제는 Athena 연결하는 데 필요한 URL의 기본 표현입니다. URL에서 지원되는 파라미터의 전체 목록은 [JDBC 설명서](connect-with-jdbc.md)를 참조하세요.

   다음 이미지는 연결 URL을 사용하는 SQL 워크벤치 연결 프로파일을 보여 줍니다.  
![\[SQL 워크벤치의 연결 프로파일.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-4.png)

이제 Okta 사용자에 대한 연결을 설정했으므로 일부 데이터를 검색하여 테스트할 수 있습니다.

**Okta 사용자에 대한 연결을 테스트하려면**

1. **테스트(Test)**를 선택한 다음 연결이 성공하는지 확인합니다.

1. SQL 워크벤치의 **문(Statement)** 창에서 다음 SQL `DESCRIBE` 명령을 실행합니다. 모든 열이 표시되는지 확인합니다.

   ```
   DESCRIBE "tripdb"."nyctaxi"
   ```  
![\[모든 열이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-5.png)

1. SQL 워크벤치의 **문(Statement)** 창에서 다음 SQL `SELECT` 명령을 실행합니다. 모든 열이 표시되는지 확인합니다.

   ```
   SELECT * FROM tripdb.nyctaxi LIMIT 5
   ```  
![\[모든 열이 표시되는지 확인합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-6.png)

다음으로 **lf-business-analyst** 그룹의 구성원인 **athena-ba-user**가 앞서 Lake Formation에서 지정한 테이블의 첫 3개 열에 대해서만 액세스 권한을 갖는지 확인합니다.

****athena-ba-user**의 액세스 권한을 확인하려면**

1. SQL 워크벤치의 **연결 프로파일(Connection profile)** 대화 상자에서 다른 연결 프로파일을 만듭니다.
   + 연결 프로파일 이름에 ** Athena\$1Okta\$1Group\$1Connection**을 입력합니다.
   + **드라이버(Driver)**에서 Simba Athena JDBC 드라이버를 선택합니다.
   + **VPC**에 대해 다음 중 하나를 수행합니다.
     + 연결 URL을 사용하려면 단일 행의 연결 문자열을 입력합니다. 다음 예제에서는 가독성을 위해 줄 바꿈이 추가되었습니다.

       ```
       jdbc:awsathena://AwsRegion=region-id;
       S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
       AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider;
       user=athena-ba-user@anycompany.com;
       password=password;
       idp_host=okta-idp-domain;
       App_ID=okta-application-id;
       SSL_Insecure=true;
       LakeFormationEnabled=true;
       ```
     + AWS 프로파일 기반 URL을 사용하려면 다음 단계를 수행합니다.

       1. 다음 예제처럼 자격 증명 파일이 있는 AWS 프로파일을 구성합니다.

          ```
          [athena_lf_ba]
          plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider
          idp_host=okta-idp-domain
          app_id=okta-application-id
          uid=athena-ba-user@anycompany.com
          pwd=password
          ```

       1. 다음과 같이 **URL**에 단일 행의 연결 문자열을 입력합니다. 예제에는 가독성을 위해 줄 바꿈이 추가되었습니다.

          ```
          jdbc:awsathena://AwsRegion=region-id;
          S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
          profile=athena_lf_ba;
          SSL_Insecure=true;
          LakeFormationEnabled=true;
          ```

1. **테스트(Test)**를 선택해 연결이 성공적인지 확인합니다.

1. **SQL 문(SQL Statement)** 창에서 전에 수행했던 것과 동일한 `DESCRIBE` 및 `SELECT` SQL 명령을 실행하고 결과를 조사합니다.

   **athena-ba-user**는 **lf-business-analyst** 그룹의 구성원이기 때문에 Lake Formation 콘솔에서 지정한 첫 3개의 열만 반환됩니다.  
![\[첫 3개의 열만 반환됩니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-7.png)  
![\[첫 3개 열의 데이터.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-8.png)

다음으로 Okta 콘솔로 돌아가 `athena-ba-user`를 `lf-developer` Okta 그룹에 추가합니다.

**lf-developer 그룹에 athena-ba-user를 추가하려면**

1. 할당된 Okta 도메인의 관리 사용자로 Okta 콘솔에 로그인합니다.

1. **디렉터리(Directory)**를 선택한 후 **그룹(Groups)**을 선택합니다.

1. 그룹(Groups) 페이지에서 **lf-developer** 그룹을 선택합니다.  
![\[lf-developer 그룹을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-9.png)

1. **사람 관리(Manage People)**를 선택합니다.

1. **구성원 아님(Not Members)** 목록에서 **athena-ba-user**를 선택해 **lf-developer group**에 추가합니다.

1. **저장**을 선택합니다.

이제 Lake Formation 콘솔로 돌아가 **lf-developer** 그룹에 대한 테이블 권한을 구성합니다.

**lf-developer-group에 대한 테이블 권한을 구성하려면**

1. Lake Formation 콘솔에 데이터 레이크 관리자로 로그인합니다.

1. 탐색 창에서 **테이블**을 선택합니다.

1. **nyctaxi** 테이블을 선택합니다.

1. **작업(Actions)**, **권한 부여(Grant)**를 선택합니다.

1. **권한 부여(Grant Permissions)** 대화 상자에 다음 정보를 입력합니다.
   + **SAML 및 Amazon Quick의 사용자 및 그룹**에 다음 형식으로 Okta SAML lf-developer 그룹 ARN을 입력합니다.
   + **열(Columns)**에서 **필터 유형을 선택**하고, **열 포함(Include columns)**을 선택합니다.
   + **trip\$1type** 열을 선택합니다.
   + **테이블 권한(Table permissions)**에 **SELECT**를 선택합니다.

1. **권한 부여(Grant)**를 선택합니다.

이제 SQL 워크벤치를 사용하여 **lf-developer** 그룹에 대한 권한 변경을 확인할 수 있습니다. **athena-ba-user**는 이제 **lf-developer** 그룹의 구성원이므로 사용 가능한 데이터에 변경이 반영되어야 합니다.

**athena-ba-user에 대한 권한 변경을 확인하려면**

1. SQL 워크벤치 프로그램을 닫은 다음 다시 엽니다.

1. **athena-ba-user**의 프로파일에 연결합니다.

1. **문(Statement)** 창에서 이전에 실행한 것과 동일한 SQL 문을 실행합니다.

   이번에는 **trip\$1type** 열이 표시됩니다.  
![\[네 번째 열을 쿼리에 사용할 수 있습니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-10.png)

   **athena-ba-user**가 이제 **lf-developer** 및 **lf-business-analyst** 그룹 모두의 구성원이므로 이 그룹들에 대한 Lake Formation 권한 조합이 반환되는 열을 결정합니다.  
![\[데이터 결과의 네 번째 열.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-11.png)

## 결론
<a name="security-athena-lake-formation-jdbc-okta-tutorial-conclusion"></a>

이 자습서에서는 Okta를 SAML 공급자로 사용해 Athena와 AWS Lake Formation의 통합을 구성했습니다. 데이터 레이크 AWS Glue 데이터 카탈로그에서 SAML 사용자가 사용 가능한 리소스를 제어하는 데에는 Lake Formation 및 IAM이 사용되었습니다. 

## 관련 리소스
<a name="security-athena-lake-formation-jdbc-okta-tutorial-related-resources"></a>

관련 내용은 다음 리소스를 참조하세요.
+ [JDBC로 Amazon Athena에 연결](connect-with-jdbc.md)
+ [Athena API에 대한 페더레이션 액세스 활성화](access-federation-saml.md)
+ [AWS Lake Formation 개발자 안내서](https://docs.aws.amazon.com/lake-formation/latest/dg/)
+ *AWS Lake Formation 개발자 안내서*의 [데이터 카탈로그 권한 부여 및 취소](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html).
+ *IAM 사용 설명서*의 [자격 증명 공급자 및 연동](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html).
+ *IAM 사용 설명서*의 [IAM SAML 자격 증명 공급자 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html).
+ *AWS 보안 블로그*의 [Enabling Federation to AWS Using Windows Active Directory, ADFS, and SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/).