

# 작업 그룹 정책 예제
<a name="example-policies-workgroup"></a>

이 단원에서는 작업 그룹에 다양한 작업을 허용하는 데 사용할 수 있는 예제 정책을 설명합니다. IAM 정책을 사용할 때는 항상 IAM 모범 사례를 따라야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

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

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

`<workgroup-name>`은 작업 그룹의 이름입니다. 예를 들어 다음과 같이 `test_workgroup`이라는 작업 그룹을 리소스로 지정할 수 있습니다.

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"]
```

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 정책을 사용하여 작업 그룹 액세스 제어](workgroups-iam-policy.md) 단원을 참조하세요.
+  [Example policy for full access to all workgroups](#example1-full-access-all-wkgs) 
+  [Example policy for full access to a specified workgroup](#example2-full-access-this-wkg) 
+  [Example policy for running queries in a specified workgroup](#example3-user-access) 
+  [Example policy for running queries in the primary workgroup](#example4-run-in-primary-access) 
+  [Example policy for management operations on a specified workgroup](#example5-manage-wkgs-access) 
+  [Example policy for listing workgroups](#example6-list-all-wkgs-access) 
+  [Example policy for running and stopping queries in a specific workgroup](#example7-run-queries-access) 
+  [Example policy for working with named queries in a specific workgroup](#example8-named-queries-access) 
+  [Example policy for working with Spark notebooks](#example9-spark-workgroup) 

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

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

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

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:GetWorkGroup",
                "athena:CreateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example 지정된 작업 그룹에서 쿼리 실행을 위한 정책의 예**  
다음 정책은 지정된 `workgroupA`에서 사용자가 쿼리를 실행하고 보도록 허용합니다. 사용자는 작업 그룹에 대해 업데이트나 삭제 등의 관리 작업을 수행할 수 없습니다. 참고로 예제 정책은 사용자를 이 작업 그룹으로만 제한하거나 다른 작업 그룹에 대한 액세스를 거부하지 않습니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup", 
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example 기본 작업 그룹에서 쿼리를 실행하기 위한 정책의 예**  
이전 예제를 수정하여 특정 사용자가 기본 작업 그룹에서 쿼리를 실행하도록 허용할 수 있습니다.  
지정된 작업 그룹에서 쿼리를 실행하도록 구성된 모든 사용자에게 기본 작업 그룹 리소스를 추가하는 것이 좋습니다. 이 리소스를 작업 그룹 사용자 정책에 추가하면 지정된 작업 그룹이 삭제되거나 비활성화된 경우에 유용합니다. 이렇게 하면 사용자들이 기본 작업 그룹에서 쿼리 실행을 계속할 수 있습니다.
계정의 사용자가 기본 작업 그룹에서 쿼리를 실행하도록 허용하려면, 다음 예와 같이 기본 작업 그룹의 ARN이 포함된 줄을 [Example policy for running queries in a specified workgroup](#example3-user-access)의 리소스 섹션에 추가합니다.  

```
arn:aws:athena:us-east-1:123456789012:workgroup/primary"
```

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

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:GetWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"
            ]
        }
    ]
}
```

**Example 작업 그룹 목록 조회를 위한 정책의 예**  
다음 정책은 모든 사용자가 모든 작업 그룹의 목록을 조회할 수 있도록 허용합니다.    
****  

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

**Example 지정된 작업 그룹에서 쿼리 실행 및 중지를 위한 정책의 예**  
이 정책은 사용자가 작업 그룹에서 쿼리를 실행하도록 허용합니다.    
****  

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

**Example 지정된 작업 그룹에서 지명한 쿼리에 대한 작업을 위한 정책의 예**  
다음 정책은, 지정된 작업 그룹에서 지명한 쿼리를 생성 및 삭제하고 세부 정보를 볼 수 있는 권한을 사용자에게 부여합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:DeleteNamedQuery"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"            ]
        }
    ]
}
```

**Example Athena에서 Spark 노트북으로 작업하기 위한 정책의 예**  
Athena에서 Spark 노트북으로 작업하려면 다음과 같은 정책을 사용하세요.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreatingWorkGroupWithDefaults",
            "Action": [
                "athena:CreateWorkGroup",
                "s3:CreateBucket",
                "iam:CreateRole",
                "iam:CreatePolicy",
                "iam:AttachRolePolicy",
                "s3:GetBucketLocation",
                "athena:ImportNotebook"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*",
                "arn:aws:s3:::123456789012-us-east-1-athena-results-bucket-*",
                "arn:aws:iam::123456789012:role/service-role/AWSAthenaSparkExecutionRole-*",
                "arn:aws:iam::123456789012:policy/service-role/AWSAthenaSparkRolePolicy-*"
            ]
        },
        {
            "Sid": "AllowRunningCalculations",
            "Action": [
                "athena:ListWorkGroups",
                "athena:GetWorkGroup",
                "athena:StartSession",
                "athena:CreateNotebook",
                "athena:ListNotebookMetadata",
                "athena:ListNotebookSessions",
                "athena:GetSessionStatus",
                "athena:GetSession",
                "athena:GetNotebookMetadata",
                "athena:CreatePresignedNotebookUrl"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*"
        },
        {
            "Sid": "AllowListWorkGroupAndEngineVersions",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```