작업 그룹 정책 예제 - Amazon Athena

작업 그룹 정책 예제

이 단원에서는 작업 그룹에 다양한 작업을 허용하는 데 사용할 수 있는 예제 정책을 설명합니다. IAM 정책을 사용할 때는 항상 IAM 모범 사례를 따라야 합니다. 자세한 내용은 IAM 사용 설명서IAM 보안 모범 사례를 참조하세요.

작업 그룹은 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 참조의 API 작업 이름을 참조하세요. IAM 정책에 대한 자세한 내용은 IAM 사용 설명서시각적 편집기로 정책 생성을 참조하세요. IAM 정책을 생성하는 방법에 대한 자세한 내용은 IAM 정책을 사용하여 작업 그룹 액세스 제어 단원을 참조하세요.

모든 작업 그룹에 대해 전체 액세스를 허용하는 정책의 예

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:*" ], "Resource": [ "*" ] } ] }
지정한 작업 그룹에 대해 전체 액세스를 허용하는 정책의 예

다음 정책은 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" ] } ] }
지정된 작업 그룹에서 쿼리 실행을 위한 정책의 예

다음 정책은 지정된 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" ] } ] }
기본 작업 그룹에서 쿼리를 실행하기 위한 정책의 예

이전 예제를 수정하여 특정 사용자가 기본 작업 그룹에서 쿼리를 실행하도록 허용할 수 있습니다.

참고

지정된 작업 그룹에서 쿼리를 실행하도록 구성된 모든 사용자에게 기본 작업 그룹 리소스를 추가하는 것이 좋습니다. 이 리소스를 작업 그룹 사용자 정책에 추가하면 지정된 작업 그룹이 삭제되거나 비활성화된 경우에 유용합니다. 이렇게 하면 사용자들이 기본 작업 그룹에서 쿼리 실행을 계속할 수 있습니다.

계정의 사용자가 기본 작업 그룹에서 쿼리를 실행하도록 허용하려면, 다음 예와 같이 기본 작업 그룹의 ARN이 포함된 줄을 Example policy for running queries in a specified workgroup의 리소스 섹션에 추가합니다.

arn:aws:athena:us-east-1:123456789012:workgroup/primary"
지정된 작업 그룹에서 관리 작업을 위한 정책의 예

다음 정책은 사용자가 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" ] } ] }
작업 그룹 목록 조회를 위한 정책의 예

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListWorkGroups" ], "Resource": "*" } ] }
지정된 작업 그룹에서 쿼리 실행 및 중지를 위한 정책의 예

이 정책은 사용자가 작업 그룹에서 쿼리를 실행하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup" ] } ] }
지정된 작업 그룹에서 지명한 쿼리에 대한 작업을 위한 정책의 예

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

{ "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" ] } ] }
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": "*" } ] }