Athena를 IAM Identity Center에 연결 - Amazon Athena

Athena를 IAM Identity Center에 연결

다음 섹션에서는 Athena를 IAM Identity Center에 연결하는 프로세스를 나열합니다.

신뢰할 수 있는 토큰 발급자 설정

신뢰할 수 있는 토큰 발급자를 설정하려면 신뢰할 수 있는 토큰 발급자 설정 가이드를 따릅니다. 그러면 AWS IAM Identity Center이 생성됩니다.

참고

제공업체 유형에서 OpenID 연결을 선택합니다. 제공업체 URL에 ID 제공업체의 발급자 URL을 입력합니다. 대상에서 앱의 ID 제공업체가 발급한 클라이언트 ID를 지정합니다.

AWS IAM ID 제공업체의 애플리케이션 리소스 이름(ARN)을 복사합니다. 자세한 내용은 Identity providers and federation(자격 증명 공급자 및 페더레이션)을 참조하세요.

IAM 역할 설정

IAM 애플리케이션 역할 설정

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 역할을 선택한 다음, 역할 생성을 선택합니다.

  3. 신뢰할 수 있는 엔터티 유형에서 다음과 같이 사용자 지정 신뢰 정책을 선택합니다.

    1. 페더레이션 위탁자의 경우, 신뢰할 수 있는 토큰 발급자 설정 중에 복사한 AWS IAM ID 제공업체의 ARN을 추가합니다.

    2. 정책 조건의 경우 외부 페더레이션 ID 제공업체의 대상을 추가합니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRoleWithWebIdentity" ], "Condition": { "StringEquals": { "issuer:aud": "identity-provider-audience" } } } ] }
  4. CreateTokenWithIAM, ListTagsForResourceAssumeRoleWithWebIdentity에 대한 액세스 권한을 사용자에게 부여하려면 다음 인라인 정책을 추가합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListTags*", "sso:ListTags*" ], "Resource": "*" } ] }
    참고

    CreateTokenWithIam 권한은 고객 관리형 IAM Identity Center 애플리케이션에서 부여됩니다.

  5. 애플리케이션 역할의 ARN을 복사합니다.

IAM 액세스 역할 설정

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 역할을 선택한 다음, 역할 생성을 선택합니다.

  3. 신뢰할 수 있는 엔터티 유형에서 다음과 같이 사용자 지정 신뢰 정책을 선택합니다.

    1. 페더레이션 위탁자의 경우 신뢰할 수 있는 토큰 발급자 설정 중에 복사된 AWS IAM Identity Center의 ARN을 추가합니다.

    2. AWS 위탁자의 경우 IAM 애플리케이션 역할 설정 중에 복사된 AWS IAM 애플리케이션 역할에 대한 ARN을 추가합니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/application-role-arn" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] }, { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRole" ] } ] }
  4. 다음 인라인 정책을 추가하여 드라이버 워크플로에 대한 액세스 권한을 부여합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:ListWorkGroups", "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:DeleteTableVersion", "glue:BatchDeleteTableVersion", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
  5. 액세스 역할의 ARN을 복사합니다.

AWS IAM Identity Center 고객 애플리케이션 구성

고객 애플리케이션을 구성하려면 Set up customer managed OAuth 2.0 applications for trusted identity propagation의 단계를 따릅니다. Athena에 대해서는 다음 고려 사항을 따르세요.

  • 태그에 다음 키-값 페어를 추가합니다.

    • - AthenaDriverOidcAppArn

    • - IAM 액세스 역할 설정 중에 복사된 AccessRoleARN입니다.

  • 애플리케이션 자격 증명을 지정할 때 IAM 애플리케이션 역할 설정 중에 복사한 AWS IAM 애플리케이션 역할에 대한 ARN을 추가합니다.

  • 요청을 수신할 수 있는 애플리케이션의 경우 AWS-Lake-Formation-AWS-Glue-Data-Catalog-<account-id>를 선택합니다.

  • 적용할 액세스 범위에서 lakeformation:query를 선택합니다.

작업 그룹 연결 구성

  1. Athena 콘솔 탐색 창에서 작업 그룹(Workgroups)을 선택합니다.

  2. 목록에서 작업 그룹을 선택하고 태그 탭을 엽니다.

  3. 태그 관리를 선택하고 다음을 입력합니다.

    1. -AthenaDriverOidcAppArn

    2. - AWS IAM Identity Center 애플리케이션의 ARN입니다.

  4. 저장을 선택합니다.

관리자가 일회성 설정을 완료하면 사용자에게 필수 연결 세부 정보를 배포할 수 있습니다. 사용자가 SQL 워크로드를 실행하려면 다음 다섯 가지 파라미터가 필요합니다.

  1. ApplicationRoleARN - 애플리케이션 역할의 ARN

  2. JwtWebIdentityToken – ID 확인을 위한 JWT 토큰

  3. WorkgroupARN - Athena 작업 그룹의 ARN

  4. JwtRoleSessionName - JWT 역할의 세션 이름

  5. CredentialsProvider - 자격 증명 제공업체 구성

참고

전략적 태그 지정을 통해 연결 문자열 구성을 간소화했습니다. Athena 작업 그룹과 AWS IAM Identity Center 고객 관리형 애플리케이션 모두에 태그를 올바르게 지정하면 사용자가 AccessRoleArnCustomerIdcApplicationArn을 제공하지 않아도 됩니다. 플러그인은 애플리케이션 역할을 사용하여 필요한 태그를 찾고 워크플로에 해당하는 ARN 값을 검색하여 이를 자동으로 처리합니다.

관리자는 필요에 따라 애플리케이션 역할 권한을 조정하여 사용자가 연결 문자열에서 AccessRoleArn 또는 CustomerIdcApplicationArn을 제공하도록 할 수 있습니다.

신뢰할 수 있는 ID 전파가 활성화된 Athena 드라이버를 사용하여 쿼리 실행

사용하려는 최신 버전의 드라이버를 다운로드합니다. JDBC 설치에 대한 자세한 내용은 JDBC 3.x 드라이버 시작하기 섹션을 참조하세요. 지원되는 플랫폼을 기반으로 ODBC 드라이버를 설치하도록 선택할 수 있습니다. 자세한 내용은 ODBC 2.x 드라이버 시작하기 섹션을 참조하세요. 사용하려는 드라이버에 따라 다음에 나열된 파라미터를 제공합니다.

참고

드라이버를 사용한 신뢰할 수 있는 ID 전파는 JDBC의 버전 3.6.0과 ODBC의 버전 2.0.5.0 이후에만 사용할 수 있습니다.

DBeaver에서 Athena 드라이버 및 신뢰할 수 있는 ID 전파 사용

  1. Athena에서 종속성이 있는 최신 JDBC jar를 다운로드합니다. 자세한 내용은 Athena JDBC 3.x 드라이버 섹션을 참조하세요.

  2. 컴퓨터에서 DBeaver 애플리케이션을 엽니다.

  3. 화면 상단에서 데이터베이스 메뉴로 이동한 다음 드라이버 관리자를 선택합니다.

  4. 새로 만들기를 선택한 다음 라이브러리를 선택합니다.

  5. 최신 드라이버를 추가하고 클래스 찾기를 선택합니다. 그러면 com.amazon.athena.jdbc.AthenaDriver와 같은 파일 경로가 제공됩니다.

  6. 설정 탭을 열고 다음 필드를 입력합니다.

    1. 드라이버 이름 - Athena JDBC 신뢰할 수 있는 ID 전파

    2. 클래스 이름 - com.amazon.athena.jdbc.AthenaDriver

    3. 인증 없음 옵션을 선택합니다.

  7. 데이터베이스에 연결을 선택하고 Athena JDBC 신뢰할 수 있는 ID 전파를 찾습니다. 그러면 JDBC URL로 이동합니다. 자세한 내용은 드라이버 구성 섹션을 참조하세요.

  8. 다음 세부 정보를 제공합니다.

    1. 작업 그룹 - 쿼리를 실행할 작업 그룹입니다. 작업 그룹에 대한 자세한 내용은 WorkGroup을 참조하세요.

    2. 리전 - 쿼리를 실행할 AWS 리전입니다. 리전 목록은 Amazon Athena 엔드포인트 및 할당량을 참조하세요.

    3. OutputLocation - 쿼리 결과를 저장할 Amazon S3의 위치입니다. 출력 위치에 대한 자세한 내용은 ResultConfiguration을 참조하세요.

    4. CredentialsProvider - JWT_TIP을 입력합니다.

    5. ApplicationRoleArn - AssumeRoleWithWebIdentity를 활성화할 역할의 ARN입니다. ARN 역할에 대한 자세한 내용은 AWS Security Token Service API 참조의 AssumeRole을 참조하세요.

    6. WorkgroupArn - 쿼리가 실행될 작업 그룹의 ARN입니다. 작업 그룹 필드에 입력한 것과 동일한 작업 그룹이어야 합니다. 작업 그룹에 대한 자세한 내용은 WorkGroup을 참조하세요.

    7. JwtRoleSessionName – 인증에 JWT 자격 증명을 사용할 때의 세션 이름입니다. 원하는 아무 이름이나 사용할 수 있습니다.

    8. JwtWebIdentityToken – 외부 페더레이션형 ID 제공업체로부터 얻은 JWT 토큰입니다. 이 토큰은 Athena로 인증하는 데 사용됩니다.

      jdbc:athena://Workgroup=<value>;Region=<region>;OutputLocation=<location>;CredentialsProvider=JWT_TIP;ApplicationRoleArn=<arn>;WorkgroupArn=<arn>;JwtRoleSessionName=JDBC_TIP_SESSION;JwtWebIdentityToken=<token>;
  9. OK를 선택하여 창을 닫습니다. 이 단계 후에 DBeaver는 메타데이터 로드를 시작하며 카탈로그, 데이터베이스 및 테이블이 채워지는 것을 볼 수 있습니다.

    참고

    토큰에 JTI 클레임이 존재하고 OK를 선택하기 전에 연결 테스트를 선택하면 동일한 JTI가 토큰 교환에 재사용되지 않습니다. 자세한 내용은 신뢰할 수 있는 토큰 발급자의 사전 조건 및 고려 사항을 참조하세요. 이를 처리하기 위해 JDBC는 기본 드라이버 인스턴스에 따라 수명 주기가 달라지는 인 메모리 캐시를 구현합니다. ODBC의 경우 임시 자격 증명을 캐시하고 재사용하여 세션 수명 주기 동안 사용되는 웹 ID 토큰 수를 줄일 수 있는 파일 캐시를 선택적으로 활용할 수 있습니다.

  10. SQL 쿼리 편집기를 열고 쿼리 실행을 시작합니다. 사용자의 전파된 ID를 확인하려면 Cloudtrail 로그를 참조하세요.