

# IAM 정책으로 데이터 카탈로그에 대한 액세스 제어
<a name="datacatalogs-iam-policy"></a>

데이터 카탈로그에 대한 액세스를 제어하기 위해 리소스 수준 IAM 권한이나 자격 증명 기반 IAM 정책을 사용합니다.

다음은 Athena용 절차입니다.

IAM용 정보는 이 단원 끝부분에 나와 있는 링크를 참조하세요. JSON 데이터 카탈로그 정책 예제에 대한 자세한 내용은 [데이터 카탈로그 예제 정책](datacatalogs-example-policies.md) 단원을 참조하세요.

**IAM 콘솔에서 시각적 편집기를 사용하려면 데이터 카탈로그 정책을 만듭니다.**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택합니다.

1. **시각적 편집기**(Visual editor) 탭에서 **서비스 선택**(Choose a service)을 선택합니다. 그런 다음 Athena를 선택하여 정책에 추가합니다.

1. **작업 선택**(Select actions)을 선택한 후 정책에 추가할 작업을 선택합니다. 시각적 편집기에 Athena에서 사용할 수 있는 작업이 표시됩니다. 자세한 내용은 *서비스 권한 부여 참조*에서 [Amazon Athena에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html)를 참조하세요.

1. **작업 추가**(add actions)를 선택하여 특정 작업을 입력하거나 와일드카드(\$1)를 사용하여 여러 개의 작업을 지정합니다.

   기본적으로 사용자가 생성하는 정책은 사용자가 선택하는 작업을 허용합니다. Athena의 `datacatalog` 리소스에 대해 리소스 수준 권한을 지원하는 작업을 하나 이상 선택하면 편집기에 `datacatalog` 리소스가 나열됩니다.

1. **리소스**를 선택하여 정책에 대한 특정 데이터 카탈로그를 지정합니다. JSON 데이터 카탈로그 정책 예제는 [데이터 카탈로그 예제 정책](datacatalogs-example-policies.md) 단원을 참조하세요.

1. 다음과 같이 `datacatalog` 리소스를 지정합니다.

   ```
   arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>
   ```

1. **정책 검토**(Review policy)를 선택한 후 생성하려는 정책에 대한 **이름**(Name)과 **설명**(Description)(선택 사항)을 입력합니다. 정책 요약을 검토하여 의도한 권한을 부여했는지 확인합니다.

1. **정책 생성**(Create policy)을 선택하고 새로운 정책을 저장합니다.

1. 사용자, 그룹 또는 역할에 이 자격 증명 기반 정책을 연결하고 사용자, 그룹 또는 역할이 액세스할 수 있는 `datacatalog` 리소스를 지정합니다.

자세한 내용은 *서비스 권한 부여 참조*와 *IAM 사용 설명서*에서 다음 주제를 참조하세요.
+ [Amazon Athena에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html)
+ [시각적 편집기를 사용하여 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor)
+ [IAM 정책 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)
+ [리소스에 대한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources)

JSON 데이터 카탈로그 정책 예제는 [데이터 카탈로그 예제 정책](datacatalogs-example-policies.md) 단원을 참조하세요.

AWS Glue 권한 및 AWS Glue 크롤러 권한에 대한 자세한 내용은 *AWS Glue 개발자 안내서*의 [AWS Glue에 대한 IAM 권한 설정](https://docs.aws.amazon.com/glue/latest/dg/getting-started-access.html) 및 [크롤러 사전 조건](https://docs.aws.amazon.com/glue/latest/dg/crawler-prereqs.html)을 참조하세요.

Amazon Athena 작업의 전체 목록은 [Amazon Athena API 참조](https://docs.aws.amazon.com/athena/latest/APIReference/)의 API 작업 이름을 참조하세요.

# 데이터 카탈로그 예제 정책
<a name="datacatalogs-example-policies"></a>

이 단원에서는 데이터 카탈로그에 다양한 작업을 허용하는 데 사용할 수 있는 예제 정책을 설명합니다.

데이터 카탈로그는 Athena에서 관리하는 IAM 리소스입니다. 따라서 해당 데이터 카탈로그 정책에서 `datacatalog`를 입력으로 받는 작업을 사용할 경우 다음과 같이 데이터 카탈로그의 ARN을 지정해야 합니다.

```
"Resource": [arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>]
```

`<datacatalog-name>`은 데이터 카탈로그의 이름입니다. 예를 들어 다음과 같이 `test_datacatalog`라는 데이터 카탈로그를 리소스로 지정할 수 있습니다.

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:datacatalog/test_datacatalog"]
```

Amazon Athena 작업의 전체 목록은 [Amazon Athena API 참조](https://docs.aws.amazon.com/athena/latest/APIReference/)의 API 작업 이름을 참조하세요. IAM 정책에 대한 자세한 내용은 *IAM 사용 설명서*의 [시각적 편집기로 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor)을 참조하세요. IAM 정책을 생성하는 방법에 대한 자세한 내용은 [IAM 정책으로 데이터 카탈로그에 대한 액세스 제어](datacatalogs-iam-policy.md) 단원을 참조하세요.
+ [Example Policy for Full Access to All Data Catalogs](#datacatalog-policy-full-access-to-all-data-catalogs)
+ [Example Policy for Full Access to a Specified Data Catalog](#datacatalog-policy-full-access-to-a-specified-catalog)
+ [Example Policy for Querying a Specified Data Catalog](#datacatalog-policy-querying-a-specified-data-catalog)
+ [Example Policy for Management Operations on a Specified Data Catalog](#datacatalog-policy-management-operations-on-a-specified-catalog)
+ [Example Policy for Listing Data Catalogs](#datacatalog-policy-listing-data-catalogs)
+ [Example Policy for Metadata Operations on Data Catalogs](#datacatalog-policy-metadata-operations)

**Example 모든 데이터 카탈로그에 대해 전체 액세스를 허용하는 정책의 예**  
다음 정책은 계정에 있는 모든 데이터 카탈로그 리소스에 대해 전체 액세스를 허용합니다. 해당 계정에서 다른 모든 사용자에 대해 데이터 카탈로그를 관리해야 하는 사용자에게 이 정책을 사용하는 것이 좋습니다.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "athena:*"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}
```

**Example 지정된 데이터 카탈로그에 대해 전체 액세스를 허용하는 정책의 예**  
다음 정책은 `datacatalogA`라는 하나의 특정 데이터 카탈로그 리소스에 대해 전체 액세스를 허용합니다. 이 정책은 특정 데이터 카탈로그에 대해 전체 제어 권한을 가진 사용자에게 사용할 수 있습니다.    
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:ListDataCatalogs", "athena:ListWorkGroups", "athena:GetDatabase", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:GetTableMetadata" ], "Resource":"*" }, { "Effect":"Allow",
   "Action":[ "athena:StartQueryExecution", "athena:GetQueryResults", "athena:DeleteNamedQuery",
   "athena:GetNamedQuery", "athena:ListQueryExecutions", "athena:StopQueryExecution",
   "athena:GetQueryResultsStream", "athena:ListNamedQueries", "athena:CreateNamedQuery",
   "athena:GetQueryExecution", "athena:BatchGetNamedQuery", "athena:BatchGetQueryExecution",
   "athena:DeleteWorkGroup", "athena:UpdateWorkGroup", "athena:GetWorkGroup",
   "athena:CreateWorkGroup" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:CreateDataCatalog", "athena:DeleteDataCatalog",
   "athena:GetDataCatalog", "athena:GetDatabase", "athena:GetTableMetadata", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:UpdateDataCatalog" ],
      "Resource":"arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   } ] }
```

**Example 지정된 데이터 카탈로그 쿼리에 대한 정책의 예**  
다음 정책은 지정된 `datacatalogA`에서 사용자가 쿼리를 실행하도록 허용합니다. 사용자는 데이터 카탈로그에 대해 업데이트나 삭제 등의 관리 작업을 수행할 수 없습니다.    
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:StartQueryExecution" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:GetDataCatalog" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   ] } ] }
```

**Example 지정된 데이터 카탈로그의 관리 작업을 위한 정책의 예**  
다음 정책은 사용자가 `datacatalogA` 데이터 카탈로그를 만들고, 삭제하고, 세부 정보를 조회하고, 업데이트할 수 있도록 허용합니다.    
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "athena:CreateDataCatalog", "athena:GetDataCatalog", "athena:DeleteDataCatalog",
    "athena:UpdateDataCatalog" ], "Resource": [
        "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
    ] } ] }
```

**Example 데이터 카탈로그 목록 조회에 대한 정책의 예**  
다음 정책은 모든 사용자가 모든 데이터 카탈로그의 목록을 조회할 수 있도록 허용합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 데이터 카탈로그 메타데이터 작업에 대한 정책의 예**  
다음 정책은 데이터 카탈로그에 대한 메타데이터 작업을 허용합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetDatabase",
                "athena:GetTableMetadata",
                "athena:ListDatabases",
                "athena:ListTableMetadata"
            ],
            "Resource": "*"
        }
    ]
}
```