

# 3단계: AWS Glue에 액세스하는 사용자 또는 그룹에 정책 연결
<a name="attach-policy-iam-user"></a>

관리자는 AWS Glue 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 모든 사용자, 그룹 또는 역할에 권한을 할당해야 합니다. 정책을 통해 AWS Identity and Access Management(IAM)를 사용하여 권한을 제공합니다. 이 단계에서는 사용자 또는 그룹에 권한을 할당하는 방법을 설명합니다.

이 단계가 완료되면 사용자 또는 그룹은 다음과 같은 정책이 연결됩니다.
+ AWS 관리횽 정책 `AWSGlueConsoleFullAccess` 또는 사용자 정책 **GlueConsoleAccessPolicy**
+ **`AWSGlueConsoleSageMakerNotebookFullAccess`**
+ **`CloudWatchLogsReadOnlyAccess`**
+ **`AWSCloudFormationReadOnlyAccess`**
+ **`AmazonAthenaFullAccess`**

**인라인 정책을 연결하여 사용자 또는 그룹에 추가하는 방법**

AWS 관리형 정책 또는 인라인 정책을 사용자 또는 그룹에 연결하여 AWS Glue 콘솔에 액세스할 수 있습니다. 이 정책에 지정된 몇 가지 리소스는 Amazon S3 버킷, Amazon S3 ETL 스크립트, CloudWatch Logs, CloudFormation 및 Amazon EC2 리소스에 대해 AWS Glue에서 사용하는 기본 이름을 나타냅니다. 간소화를 위해 AWS Glue는 기본적으로 `aws-glue-*`가 접두사인 계정에서 몇 가지 Amazon S3 객체를 버킷에 작성합니다.
**참고**  
AWS 관리형 정책 **`AWSGlueConsoleFullAccess`**를 사용하면 이 단계를 생략해도 좋습니다.
**중요**  
AWS Glue는 사용자를 대신하여 작업을 수행하는 데 사용되는 역할에 대한 권한이 필요합니다. **이 과정을 완료하려면 `iam:PassRole` 권한을 AWS Glue 사용자 또는 그룹에 부여합니다.** 이 정책은 AWS Glue 서비스 역할의 경우 `AWSGlueServiceRole`로 시작되는 역할에 권한을 부여하고, 노트북 서버를 생성할 때 필요한 역할 중에는 `AWSGlueServiceNotebookRole`로 시작하는 역할에 권한을 부여합니다. 이름 전환에 따라 `iam:PassRole` 권한에 대한 자체 정책을 생성할 수도 있습니다.  
보안 모범 사례에 따라 Amazon S3 버킷 및 Amazon CloudWatch 로그 그룹에 대한 액세스를 추가로 제한하는 정책을 강화하여 액세스를 제한하는 것이 좋습니다. Amazon S3 정책 예제는 [IAM 정책 작성하기: Amazon S3 버킷으로의 액세스를 보장하는 방법](https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/)을 참조하세요.

이 단계에서는`AWSGlueConsoleFullAccess`과 비슷한 정책을 만듭니다. IAM 콘솔에서 `AWSGlueConsoleFullAccess`의 최신 버전을 확인할 수 있습니다.

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

1. 탐색 창에서 **사용자** 또는 **사용자 그룹**을 선택합니다.

1. 목록에서 정책을 삽입할 사용자 또는 그룹 이름을 선택합니다.

1. **권한** 탭을 선택하고 필요하다면 **Permissions policies(권한 정책)** 섹션을 확장합니다.

1. [**Add Inline Policy(인라인 정책 추가)**] 링크를 선택합니다.

1. [**Create Policy(정책 생성)**] 화면에서 탭으로 이동하여 JSON을 편집합니다. 다음 JSON 설명으로 정책 문서를 만든 다음 [**Review policy(정책 보기)**]를 선택합니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "glue:*",
           "redshift:DescribeClusters",
           "redshift:DescribeClusterSubnetGroups",
           "iam:ListRoles",
           "iam:ListUsers",
           "iam:ListGroups",
           "iam:ListRolePolicies",
           "iam:GetRole",
           "iam:GetRolePolicy",
           "iam:ListAttachedRolePolicies",
           "ec2:DescribeSecurityGroups",
           "ec2:DescribeSubnets",
           "ec2:DescribeVpcs",
           "ec2:DescribeVpcEndpoints",
           "ec2:DescribeRouteTables",
           "ec2:DescribeVpcAttribute",
           "ec2:DescribeKeyPairs",
           "ec2:DescribeInstances",
           "rds:DescribeDBInstances",
           "rds:DescribeDBClusters",
           "rds:DescribeDBSubnetGroups",
           "s3:ListAllMyBuckets",
           "s3:ListBucket",
           "s3:GetBucketAcl",
           "s3:GetBucketLocation",
           "cloudformation:DescribeStacks",
           "cloudformation:GetTemplateSummary",
           "dynamodb:ListTables",
           "kms:ListAliases",
           "kms:DescribeKey",
           "cloudwatch:GetMetricData",
           "cloudwatch:ListDashboards"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:PutObject"
         ],
         "Resource": [
           "arn:aws:s3:::*/*aws-glue-*/*",
           "arn:aws:s3:::aws-glue-*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "tag:GetResources"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:CreateBucket",
           "s3:PutBucketPublicAccessBlock"
         ],
         "Resource": [
           "arn:aws:s3:::aws-glue-*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "logs:GetLogEvents"
         ],
         "Resource": [
           "arn:aws:logs:*:*:/aws-glue/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "cloudformation:CreateStack",
           "cloudformation:DeleteStack"
         ],
         "Resource": "arn:aws:cloudformation:*:*:stack/aws-glue*/*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:RunInstances"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:instance/*",
           "arn:aws:ec2:*:*:key-pair/*",
           "arn:aws:ec2:*:*:image/*",
           "arn:aws:ec2:*:*:security-group/*",
           "arn:aws:ec2:*:*:network-interface/*",
           "arn:aws:ec2:*:*:subnet/*",
           "arn:aws:ec2:*:*:volume/*"
         ]
       },
       {
         "Action": [
           "iam:PassRole"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:iam::*:role/AWSGlueServiceRole*",
         "Condition": {
           "StringLike": {
             "iam:PassedToService": [
               "glue.amazonaws.com"
             ]
           }
         }
       },
       {
         "Action": [
           "iam:PassRole"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:iam::*:role/AWSGlueServiceNotebookRole*",
         "Condition": {
           "StringLike": {
             "iam:PassedToService": [
               "ec2.amazonaws.com"
             ]
           }
         }
       },
       {
         "Action": [
           "iam:PassRole"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:iam::*:role/service-role/AWSGlueServiceRole*"
         ],
         "Condition": {
           "StringLike": {
             "iam:PassedToService": [
               "glue.amazonaws.com"
             ]
           }
         }
       }
     ]
   }
   ```

------

   다음 테이블은 이 정책이 보장하는 권한을 설명합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/attach-policy-iam-user.html)

1. **정책 검토** 화면에서 정책의 이름을 입력합니다(예: **GlueConsoleAccessPolicy**). 정책에 만족하면 **정책 생성**을 선택합니다. 화면 상단에 있는 빨간색 상자에 표시되는 오류가 있지 않은지 확인합니다. 표시되는 오류가 있다면 수정합니다.
**참고**  
[**Use autoformatting**]을 선택하면 정책을 열거나 [**Validate Policy**]를 선택할 때마다 정책의 형식이 다시 지정됩니다.

**AWSGlueConsoleFullAccess 관리 정책을 연결하는 방법**

`AWSGlueConsoleFullAccess` 정책을 추가하여 AWS Glue 콘솔 사용자가 필요한 권한을 제공합니다.
**참고**  
AWS Glue 콘솔 액세스용 자체 정책을 생성했다면 이 단계를 건너뛸 수 있습니다.

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

1. 탐색 창에서 **정책**을 선택합니다.

1. 정책 목록에서 **AWSGlueConsoleFullAccess** 옆의 확인란을 선택합니다. [**Filter**] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

1. **정책 조치**를 선택한 후 **연결**을 선택합니다.

1. 정책을 연결하려는 사용자를 선택합니다. **필터** 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [**Attach policy(정책 추가)**]를 선택합니다.

**`AWSGlueConsoleSageMakerNotebookFullAccess` 관리형 정책을 연결하려면**

`AWSGlueConsoleSageMakerNotebookFullAccess` 정책을 사용자에게 연결해 AWS Glue 콘솔에서 생성한 SageMaker AI 노트북을 관리할 수 있습니다. 필요한 다른 AWS Glue 콘솔 권한 이외에도 이 정책은 SageMaker AI 노트북 관리에 필요한 리소스에 대한 액세스 권한을 부여합니다.

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

1. 탐색 창에서 **정책**을 선택합니다.

1. 정책 목록에서 **AWSGlueConsoleSageMakerNotebookFullAccess** 옆의 확인란을 선택합니다. [**Filter**] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

1. **정책 조치**를 선택한 후 **연결**을 선택합니다.

1. 정책을 연결하려는 사용자를 선택합니다. **필터** 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [**Attach policy(정책 추가)**]를 선택합니다.

**CloudWatchLogsReadOnlyAccess 관리 정책을 연결하는 방법**

**CloudWatchLogsReadOnlyAccess** 정책을 사용자에게 연결하고 CloudWatch Logs 콘솔에서 AWS Glue가 생성한 로그를 볼 수 있습니다.

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

1. 탐색 창에서 **정책**을 선택합니다.

1. 정책 목록에서 [**CloudWatchLogsReadOnlyAccess**] 이름 옆의 확인란을 선택합니다. [**Filter**] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

1. **정책 조치**를 선택한 후 **연결**을 선택합니다.

1. 정책을 연결하려는 사용자를 선택합니다. **필터** 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [**Attach policy(정책 추가)**]를 선택합니다.

**AWSCloudFormationReadOnlyAccess 관리 정책을 연결하는 방법**

**AWSCloudFormationReadOnlyAccess** 정책을 사용자에게 연결하고 AWS Glue가 사용한 CloudFormation 스택을 CloudFormation 콘솔에서 볼 수 있습니다.

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

1. 탐색 창에서 **정책**을 선택합니다.

1. 정책 목록에서 **AWSCloudFormationReadOnlyAccess** 이름 옆의 확인란을 선택합니다. [**Filter**] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

1. **정책 조치**를 선택한 후 **연결**을 선택합니다.

1. 정책을 연결하려는 사용자를 선택합니다. **필터** 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [**Attach policy(정책 추가)**]를 선택합니다.

**AmazonAthenaFullAccess 관리 정책을 추가하는 방법**

**AmazonAthenaFullAccess** 정책을 사용자에게 연결하고 Amazon S3 데이터를 Athena 콘솔에서 볼 수 있습니다.

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

1. 탐색 창에서 **정책**을 선택합니다.

1. 정책 목록에서 [**AmazonAthenaFullAccess(Amazon Athena 완전한 액세스)**] 옆의 확인란을 선택합니다. [**Filter**] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

1. **정책 조치**를 선택한 후 **연결**을 선택합니다.

1. 정책을 연결하려는 사용자를 선택합니다. **필터** 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [**Attach policy(정책 추가)**]를 선택합니다.