

# 관리형 쿼리 결과
<a name="managed-results"></a>

관리형 쿼리 결과를 사용하면 쿼리 결과 저장소로 사용할 Amazon S3 버킷을 제공하지 않고도 SQL 쿼리를 실행할 수 있습니다. 이렇게 하면 S3 버킷을 자체적으로 프로비저닝, 관리, 액세스 제어 및 정리할 필요가 없습니다. 시작하려면 새 작업 그룹을 생성하거나 기존 작업 그룹을 편집합니다. **쿼리 결과 구성**에서 **Athena 관리형**을 선택합니다.

**주요 기능**
+ 쿼리 실행 전에 S3 버킷 위치를 선택해야 하는 요구 사항을 제거하여 워크플로를 간소화합니다.
+ 관리형 쿼리 결과 사용 및 쿼리 결과 자동 삭제에 추가 비용이 없어 관리 오버헤드와 별도의 S3 버킷 정리 프로세스의 필요성을 줄여줍니다.
+ 간단하게 시작하기: 새 작업 그룹과 기존 작업 그룹이 관리형 쿼리 결과를 사용하도록 쉽게 구성할 수 있습니다. AWS 계정에서 Athena 관리형 쿼리 결과와 고객 관리형 쿼리 결과를 조합할 수 있습니다.
+ `GetQueryResults`와 `GetQueryResultsStream`을 개별 작업 그룹으로 연결해 결과 읽기에 액세스할 수 있는 IAM 권한을 간소화했습니다.
+ 쿼리 결과는 선택한 AWS 소유 키 또는 고객 소유 키를 사용해 자동으로 암호화됩니다.

## 고려 사항 및 제한 사항
<a name="managed-results-considerations"></a>

****
+ 쿼리 결과에 대한 액세스는 Athena 작업 그룹 수준에서 관리됩니다. 이를 위해서는 특정 작업 그룹에 `GetQueryResults` 및 `GetQueryResultsStream` IAM 작업에 대한 명시적 권한이 필요합니다. `GetQueryResults` 작업은 완료된 쿼리 결과를 페이지 매김 형식으로 검색할 수 있는 사용자를 결정하고, `GetQueryResultsStream` 작업은 완료된 쿼리 결과를 스트리밍할 수 있는 사용자를 결정합니다(보통 Athena 드라이버에서 사용).
+ 콘솔에서는 쿼리 결과 파일이 200MB보다 큰 경우 다운로드할 수 없습니다. 별도로 다운로드할 수 있는 위치에 200MB보다 큰 결과를 쓰려면 `UNLOAD` 문을 사용합니다.
+ 관리형 쿼리 결과 기능은 [쿼리 결과 재사용](reusing-query-results.md)을 지원하지 않습니다.
+ 쿼리 결과는 24시간 동안 사용할 수 있습니다. 이 기간 동안 쿼리 결과는 무료로 저장됩니다. 이 기간이 지나면 쿼리 결과는 자동으로 삭제됩니다.

## 관리형 쿼리 결과를 사용하여 작업 그룹 생성 또는 편집
<a name="using-managed-query-results"></a>

콘솔에서 관리형 쿼리 결과로 작업 그룹을 생성하거나 기존 작업 그룹을 업데이트:

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

1. 왼쪽 탐색 창에서 **작업 그룹**을 선택합니다.

1. **작업 그룹 생성**을 선택하여 새 작업 그룹을 생성하거나 목록에서 기존 작업 그룹을 편집합니다.

1. **쿼리 결과 구성**에서 **Athena 관리형**을 선택합니다.  
![쿼리 결과 구성 메뉴입니다.](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/athena-managed.png)

1. **쿼리 결과 암호화**에서 원하는 암호화 옵션을 선택합니다. 자세한 내용은 [쿼리 결과 암호화 선택](#managed-query-results-encryption-at-rest) 섹션을 참조하세요.

1. 기타 모든 필수 세부 정보를 입력하고 **변경 사항 저장**을 선택합니다.

## 쿼리 결과 암호화 선택
<a name="managed-query-results-encryption-at-rest"></a>

암호화 구성에는 두 가지 옵션이 있습니다.
+ **AWS 소유 키를 사용하여 암호화** - 관리형 쿼리 결과를 사용할 때 기본 옵션입니다. 쿼리 결과를 AWS 소유 키로 암호화하려면 이 옵션을 선택합니다.
+ **고객 관리형 키를 사용하여 암호화** - 고객 관리형 키로 쿼리 결과를 암호화하고 복호화하려면 이 옵션을 선택합니다. 고객 관리형 키를 사용하려면 키 정책 섹션의 보안 주체 요소에 Athena 서비스를 추가합니다. 자세한 내용은 [관리형 쿼리 결과에 대한 AWS KMS 키 정책 설정](#managed-query-results-set-up) 섹션을 참조하세요. 쿼리를 성공적으로 실행하려면 쿼리를 실행하는 사용자기 AWS KMS 키에 액세스할 수 있는 권한이 필요합니다.

## 관리형 쿼리 결과에 대한 AWS KMS 키 정책 설정
<a name="managed-query-results-set-up"></a>

키 정책에 대한 `Principal` 섹션은 이 키를 사용할 수 있는 사용자를 지정합니다. 관리형 쿼리 결과 기능은 `Principal` 섹션에서 지정해야 하는 보안 주체 `encryption.athena.amazonaws.com`를 소개합니다. 이 서비스 보안 주체는 특히 Athena가 소유하지 않은 키에 액세스하는 용도로 사용합니다. 또한 관리형 결과에 액세스하는 데 사용하는 키 정책에 `kms:Decrypt`, `kms:GenerateDataKey`, 및 `kms:DescribeKey` 작업을 추가해야 합니다. 이 세 가지 작업이 최소한 허용되는 작업입니다.

관리형 쿼리 결과는 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)에 사용자의 작업 그룹 ARN을 사용합니다. `Principal` 섹션이 AWS 서비스이므로 키 정책 조건에 `aws:sourceArn` 및 `aws:sourceAccount`도 추가해야 합니다. 다음 예제에서는 단일 작업 그룹에 대해 최소 권한을 보유한 AWS KMS 키 정책을 보여줍니다.

```
 {
    "Sid": "Allow athena service principal to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": "encryption.athena.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:DescribeKey"
      ],
    "Resource": "arn:aws:kms:us-east-1:{{{account-id}}}:key/{{{key-id}}}",
    "Condition": {
    "ArnLike": {
        "kms:EncryptionContext:aws:athena:arn": "arn:aws:athena:us-east-1:{{{account-id}}}:workgroup/{{{workgroup-name}}}",
        "aws:SourceArn": "arn:aws:athena:us-east-1:{{{account-id}}}:workgroup/{{{workgroup-name}}}"
    },
    "StringEquals": {
        "aws:SourceAccount": "{{{account-id}}}"
    }
}
```

다음 예제 AWS KMS 키 정책은 동일한 계정 {{account-id}} 내의 모든 작업 그룹이 동일한 AWS KMS 키를 사용하도록 허용합니다.

```
{
    "Sid": "Allow athena service principal to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": "encryption.athena.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:DescribeKey"
    ],
    "Resource": "arn:aws:kms:us-east-1:{{account-id}}:key/{{{key-id}}}",
    "Condition": {
        "ArnLike": {
          "kms:EncryptionContext:aws:athena:arn": "arn:aws:athena:us-east-1:{{account-id}}:workgroup/*",
          "aws:SourceArn": "arn:aws:athena:us-east-1:{{account-id}}:workgroup/*"
        },
        "StringEquals": {
          "aws:SourceAccount": "{{account-id}}"
        }
    }
}
```

Athena 및 Amazon S3 권한 외에도 `kms:GenerateDataKey` 및 `kms:Decrypt` 작업을 수행할 수 있는 권한도 확보해야 합니다. 자세한 내용은 [Amazon S3의 암호화 데이터 권한](encryption.md#permissions-for-encrypting-and-decrypting-data) 섹션을 참조하세요.

관리형 쿼리 결과 암호화에 대한 자세한 내용은 [관리형 쿼리 결과 암호화](encrypting-managed-results.md) 섹션을 참조하세요.