

# IAM Identity Center 지원 Athena 작업 그룹 사용
<a name="workgroups-identity-center"></a>

[신뢰할 수 있는 ID 전파](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overview.html)는 연결된 AWS 서비스의 관리자가 서비스 데이터에 대한 액세스 권한을 부여하고 감사하는 데 사용할 수 있는 AWS IAM Identity Center 기능입니다. 이 데이터에 대한 액세스는 그룹 연결과 같은 사용자 속성을 기반으로 합니다. 신뢰할 수 있는 ID 전파를 설정하려면 연결된 AWS 서비스의 관리자와 IAM Identity Center 관리자 간의 협업이 필요합니다. 자세한 내용은 [사전 조건 및 고려 사항](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html)을 참조하세요.

[IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)를 사용하면 인력 ID(인력 사용자)의 로그인 보안을 관리할 수 있습니다. IAM Identity Center를 사용하면 인력 사용자를 생성하거나 연결하고 인력 사용자의 모든 AWS 계정 및 애플리케이션에 대한 액세스를 중앙에서 관리하는 기능을 한 곳에서 이용할 수 있습니다. 다중 계정 권한을 사용하여 이러한 사용자에게 AWS 계정 대한 액세스 권한을 할당할 수 있습니다. 애플리케이션 할당을 사용하여 IAM Identity Center 지원 애플리케이션, 클라우드 애플리케이션 및 고객 Security Assertion Markup Language(SAML 2.0) 애플리케이션에 대한 액세스 권한을 사용자에게 할당할 수 있습니다. 자세한 내용은 **AWS IAM Identity Center 사용 설명서의 [Trusted identity propagation across applications](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html)를 참조하십시오.

신뢰할 수 있는 ID 전파에 대한 Athena SQL 지원은 EMR Studio 및 SageMaker Unified Studio 모두에서 사용할 수 있습니다. 각 플랫폼은 Athena에서 TIP를 사용하기 위한 특정 인터페이스를 제공합니다.

EMR Studio에서 IAM Identity Center ID와 함께 Athena SQL을 사용하는 경우 두 가지 작업 그룹 옵션이 있습니다.
+ **일반 작업 그룹** - 사용자/그룹 할당이 필요하지 않습니다.
+ **IAM Identity Center 지원 작업 그룹** - IAM Identity Center 콘솔 또는 API를 통해 사용자/그룹을 할당해야 합니다.

옵션 모두 IAM Identity Center가 활성화된 EMR Studio에서 Athena SQL 인터페이스를 사용하여 쿼리를 실행할 수 있습니다.

## 고려 사항 및 제한 사항
<a name="workgroups-identity-center-considerations-and-limitations"></a>

Amazon Athena에서 신뢰할 수 있는 ID 전파를 사용하는 경우 다음 사항을 고려하세요.
+ 작업 그룹이 생성된 후에는 작업 그룹의 인증 방법을 변경할 수 없습니다.
  + IAM Identity Center 지원 작업 그룹을 지원하도록 기존 Athena SQL 작업 그룹을 수정할 수 없습니다. 기존 Athena SQL 작업 그룹은 ID를 다운스트림 서비스에 전파할 수 있습니다.
  + 리소스 수준 IAM 권한이나 ID 기반 IAM 정책을 지원하도록 IAM Identity Center 지원 작업 그룹을 수정할 수 없습니다.
+ 신뢰할 수 있는 ID 전파를 지원하는 작업 그룹에 액세스하려면 Athena [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) API 작업의 응답으로 반환되는 `IdentityCenterApplicationArn`에 IAM Identity Center 사용자를 할당해야 합니다.
+ 신뢰할 수 있는 ID 전파 ID를 사용하도록 Amazon S3 Access Grants를 구성해야 합니다. 자세한 내용은 **Amazon S3 사용 설명서의 [S3 Access Grants and corporate directory identities](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html)를 참조하십시오.
+ IAM Identity Center 지원 Athena 작업 그룹을 사용하려면 IAM Identity Center ID를 사용하도록 Lake Formation을 구성해야 합니다. 구성 정보는 **AWS Lake Formation 개발자 안내서의 [Integrating IAM Identity Center](https://docs.aws.amazon.com/lake-formation/latest/dg/identity-center-integration.html)를 참조하십시오.
+ 기본적으로 쿼리는 IAM Identity Center 지원 작업 그룹에서 30분 후에 시간 초과됩니다. 쿼리 제한 시간 증가를 요청할 수 있지만 신뢰할 수 있는 ID 전파 작업 그룹에서 쿼리를 실행할 수 있는 최대 시간은 1시간입니다.
+ 신뢰할 수 있는 ID 전파 작업 그룹의 사용자 또는 그룹 권한 변경 사항이 적용되는 데 최대 1시간이 걸릴 수 있습니다.
+ 신뢰할 수 있는 ID 전파를 사용하는 Athena 작업 그룹의 쿼리는 Athena 콘솔에서 직접 실행할 수 없습니다. 이러한 쿼리는 IAM Identity Center가 활성화된 EMR Studio의 Athena 인터페이스에서 실행해야 합니다. *EMR Studio에서 Athena를 사용하는 방법에 대한 자세한 내용은 *Amazon EMR 관리 안내서의 [Use the Amazon Athena SQL editor in EMR Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-athena.html)를 참조하십시오.
+ 신뢰할 수 있는 ID 전파는 다음 Athena 기능과 호환되지 않습니다.
  + IAM Identity Center 지원 작업 그룹용 `aws:CalledVia` 컨텍스트 키
  + Athena for Spark 작업 그룹
  + Athena API에 대한 연동 액세스
  + Lake Formation과 Athena JDBC 및 ODBC 드라이버를 사용하여 Athena에 대한 연동 액세스
+ 다음 AWS 리전에서만 Athena와 함께 신뢰할 수 있는 ID 전파를 사용할 수 있습니다.
  + `us-east-2` - 미국 동부(오하이오)
  + `us-east-1` - 미국 동부(버지니아 북부)
  + `us-west-1` - 미국 서부(캘리포니아 북부)
  + `us-west-2` - 미국 서부(오레곤)
  + `af-south-1` – 아프리카(케이프타운)
  + `ap-east-1` – 아시아 태평양(홍콩)
  + `ap-southeast-3` – 아시아 태평양(자카르타)
  + `ap-south-1` – 아시아 태평양(뭄바이)
  + `ap-northeast-3` – 아시아 태평양(오사카)
  + `ap-northeast-2` – 아시아 태평양(서울)
  + `ap-southeast-1` – 아시아 태평양(싱가포르)
  + `ap-southeast-2` – 아시아 태평양(시드니)
  + `ap-northeast-1` – 아시아 태평양(도쿄)
  + `ca-central-1` - 캐나다(중부)
  + `eu-central-1` – 유럽(프랑크푸르트)
  + `eu-central-2` - 유럽(취리히)
  + `eu-west-1` – 유럽(아일랜드)
  + `eu-west-2` – 유럽(런던)
  + `eu-south-1` – 유럽(밀라노)
  + `eu-west-3` – 유럽(파리)
  + `eu-north-1` – 유럽(스톡홀름)
  + `me-south-1` – 중동(바레인)
  + `sa-east-1` – 남아메리카(상파울루)

## 필수 권한
<a name="workgroups-identity-center-required-permissions"></a>

Athena 콘솔에서 IAM Identity Center 지원 작업 그룹을 생성하는 관리자의 IAM 사용자는 다음 정책을 연결해야 합니다.
+ `AmazonAthenaFullAccess` 관리형 정책. 자세한 내용은 [AWS 관리형 정책: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy)을 참조하세요.
+ 다음은 IAM 및 IAM Identity Center 작업을 허용하는 인라인 정책입니다.

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

****  

  ```
  { "Version":"2012-10-17",		 	 	  "Statement": [ { "Action": [ "iam:createRole",
      "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "identitystore:ListUsers",
      "identitystore:ListGroups", "identitystore:CreateUser", "identitystore:CreateGroup",
      "sso:ListInstances", "sso:CreateInstance", "sso:DeleteInstance", "sso:ListTrustedTokenIssuers",
      "sso:DescribeTrustedTokenIssuer", "sso:ListApplicationAssignments",
      "sso:DescribeRegisteredRegions", "sso:GetManagedApplicationInstance",
      "sso:GetSharedSsoConfiguration", "sso:PutApplicationAssignmentConfiguration",
      "sso:CreateApplication", "sso:DeleteApplication", "sso:PutApplicationGrant",
      "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationAccessScope",
      "sso:ListDirectoryAssociations", "sso:CreateApplicationAssignment",
      "sso:DeleteApplicationAssignment", "organizations:ListDelegatedAdministrators",
      "organizations:DescribeAccount", "organizations:DescribeOrganization",
      "organizations:CreateOrganization", "sso-directory:SearchUsers", "sso-directory:SearchGroups",
      "sso-directory:CreateUser" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [
      "iam:PassRole" ], "Effect": "Allow", "Resource": [
          "arn:aws:iam::{{111122223333}}:role/service-role/AWSAthenaSQLRole-*"
      ] } ] }
  ```

------

## IAM Identity Center 지원 Athena 작업 그룹 생성
<a name="workgroups-identity-center-creating-an-identity-center-enabled-athena-workgroup"></a>

다음 절차에서는 IAM Identity Center 지원 Athena 작업 그룹 생성과 관련된 단계 및 옵션을 보여줍니다. Athena 작업그룹에 사용할 수 있는 다른 구성 옵션에 대한 설명은 [작업 그룹 만들기](creating-workgroups.md) 섹션을 참조하십시오.

**Athena 콘솔에서 SSO 지원 작업 그룹 생성**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

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

1. **작업 그룹** 페이지에서 **작업 그룹 생성**을 선택합니다.

1. **작업 그룹 생성** 페이지의 **작업 그룹 이름**에 작업 그룹의 이름을 입력합니다.

1. **분석 엔진**으로 **Athena SQL** 기본값을 사용합니다.

1. **인증**으로 **IAM Identity Center**를 선택합니다.

1. **IAM Identity Center 액세스를 위한 서비스 역할**로 기존 서비스 역할을 선택하거나 새 서비스 역할을 생성합니다.

   Athena가 사용자를 대신하여 IAM Identity Center에 액세스할 수 있는 권한이 필요합니다. 이를 위해서는 Athena에 서비스 역할이 필요합니다. 서비스 역할은 AWS 서비스가 사용자를 대신하여 다른 AWS 서비스에 액세스할 수 있도록 권한을 부여하는 IAM 역할입니다. 페더레이션 카탈로그를 쿼리하거나 UDF를 실행하려면 해당 Lambda 권한으로 서비스 역할을 업데이트하세요. 자세한 내용은 *IAM 사용 설명서*의 [AWS서비스에 대한 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 참조하세요.

1. **쿼리 결과 구성**을 확장한 다음 **쿼리 결과의 위치**에 Amazon S3 경로를 입력하거나 선택합니다.

1. (선택 사항) **쿼리 결과 암호화**를 선택합니다. 기본적으로 SSE-S3가 지원됩니다. 쿼리 결과 위치와 함께 SSE-KMS 및 CSE-KMS를 사용하려면 Amazon S3 Access Grants의 **IAM Identity Center에 대한 서비스 역할**에 권한 부여를 제공하세요. 자세한 내용은 [샘플 역할 정책](#workgroups-identity-center-access-grant-location-sample-role-policy)을 참조하세요.

1. (선택 사항) **사용자 ID 기반 S3 접두사 생성**을 선택합니다.

   IAM Identity Center 지원 작업 그룹을 생성할 때는 기본적으로 **S3 Access Grants 활성화** 옵션이 선택됩니다. Amazon S3 Access Grants를 사용하여 Amazon S3의 Athena 쿼리 결과 위치(접두사)에 대한 액세스를 제어할 수 있습니다. Amazon S3 Access Grants에 대한 자세한 내용은 [Managing access with Amazon S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html)를 참조하십시오.

   IAM Identity Center 인증을 사용하는 Athena 작업 그룹에서 Amazon S3 Access Grants에 의해 관리되는 ID 기반 쿼리 결과 위치 생성을 활성화할 수 있습니다. 이러한 사용자 ID 기반 Amazon S3 접두사를 사용하면 Athena 작업 그룹의 사용자는 쿼리 결과를 동일한 작업 그룹의 다른 사용자와 격리된 상태로 유지할 수 있습니다.

   사용자 접두사 옵션을 활성화하면 Athena는 사용자 ID를 작업 그룹의 쿼리 결과 출력 위치에 Amazon S3 경로 접두사로 추가합니다(예: `s3://amzn-s3-demo-bucket/${{{user_id}}}`). 이 기능을 사용하려면 `user_id` 접두사가 있는 위치에 대한 사용자 권한만 허용하도록 Access Grants를 구성해야 합니다. Athena 쿼리 결과에 대한 액세스를 제한하는 Amazon S3 Access Grants의 위치 역할 정책 샘플은 [샘플 역할 정책](#workgroups-identity-center-access-grant-location-sample-role-policy)을 참조하세요.
**참고**  
사용자 ID S3 접두사 옵션을 선택하면 다음 단계에서 설명하는 것처럼 작업 그룹에 대한 클라이언트 측 설정 재정의 옵션이 자동으로 활성화됩니다. 클라이언트 측 설정 재정의 옵션은 사용자 ID 접두사 기능의 요구 사항입니다.

1. **설정**을 확장한 다음 **클라이언트 측 설정 재정의**가 선택되어 있는지 확인합니다.

   **클라이언트 측 설정 재정의**를 선택하면 작업 그룹 설정이 작업 그룹의 모든 클라이언트에 대해 작업 그룹 수준에서 적용됩니다. 자세한 내용은 [Override client-side settings(클라이언트 측 설정 재정의)](workgroups-settings-override.md) 섹션을 참조하세요.

1. (선택 사항) [작업 그룹 만들기](creating-workgroups.md)에 설명된 대로 필요한 기타 구성 설정을 지정합니다.

1. **작업 그룹 생성**을 선택합니다.

1. Athena 콘솔의 **작업 그룹** 섹션을 사용하여 IAM Identity Center 디렉터리의 사용자 또는 그룹을 IAM Identity Center 활성화 Athena 작업 그룹에 할당할 수 있습니다.

## 샘플 역할 정책
<a name="workgroups-identity-center-access-grant-location-sample-role-policy"></a>

다음 샘플은 Athena 쿼리 결과에 대한 액세스를 제한하는 Amazon S3 Access Grant 위치에 연결할 역할에 대한 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Condition": {
                "ArnNotEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringNotEquals": {
                    "aws:ResourceAccount": "{{111122223333}}"
                }
            },
            "Effect": "Deny",
            "Resource": "*",
            "Sid": "ExplicitDenyS3"
        },
        {
            "Action": [
                "kms:*"
            ],
            "Effect": "Deny",
            "NotResource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{${keyid}}}",
            "Sid": "ExplictDenyKMS"
        },
        {
            "Action": [
                "s3:ListMultipartUploadParts",
                "s3:GetObject"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "{{111122223333}}"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{ATHENA-QUERY-RESULT-LOCATION}}/{{${identitystore:UserId}}}/*",
            "Sid": "ObjectLevelReadPermissions"
        },
        {
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringEquals": {
                "aws:ResourceAccount": "{{111122223333}}"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{ATHENA-QUERY-RESULT-LOCATION}}/{{${identitystore:UserId}}}/*",
            "Sid": "ObjectLevelWritePermissions"
        },
        {
            "Action": "s3:ListBucket",
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "{{111122223333}}"
                },
                "StringLikeIfExists": {
                    "s3:prefix": [
                        "{{${identitystore:UserId}}}",
                        "{{${identitystore:UserId}}}/*"
                    ]
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{ATHENA-QUERY-RESULT-LOCATION}}",
            "Sid": "BucketLevelReadPermissions"
        },
        {
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{${keyid}}}",
            "Sid": "KMSPermissions"
        }
    ]
}
```

------