

# AWS Glue에 대한 IAM 권한 구성
<a name="configure-iam-for-glue"></a>

AWS Identity and Access Management(IAM)를 사용하여 AWS Glue에서 리소스에 액세스하는 데 사용하는 정책과 역할을 정의합니다. 다음 단계는 AWS Glue에 대한 권한 설정을 위한 다양한 옵션을 소개합니다. 비즈니스의 요구 사항에 따라 리소스 액세스를 추가하거나 줄여야 할 경우도 있습니다.

**참고**  
대신 AWS Glue에 대한 기본 IAM 권한으로 시작하려면 [AWS Glue에 대한 IAM 권한 설정](set-up-iam.md) 섹션을 참조하세요.

1. [AWS Glue 서비스를 위한 IAM 정책 생성](create-service-policy.md): AWS Glue 리소스에 액세스하도록 허용하는 서비스 정책을 생성합니다.

1. [AWS Glue에 대한 IAM 역할 생성](create-an-iam-role.md): IAM 역할을 생성하고 AWS Glue에서 사용하는 Amazon Simple Storage Service(Amazon S3) 리소스에 대한 AWS Glue 서비스 정책 및 정책을 연결합니다.

1. [AWS Glue에 액세스하는 사용자 또는 그룹에 정책 연결](attach-policy-iam-user.md): AWS Glue 콘솔에 로그인하는 모든 사용자 또는 그룹에 정책을 연결합니다.

1. [노트북용 IAM 정책 생성](create-notebook-policy.md): 개발 엔드포인트에서 노트북 서버 생성에 사용할 노트북 서버 정책을 생성합니다.

1. [노트북용 IAM 역할 생성](create-an-iam-role-notebook.md): IAM 역할을 생성하고 노트북 서버 정책을 연결합니다.

1. [Amazon SageMaker AI 노트북에 대한 IAM 정책 생성](create-sagemaker-notebook-policy.md): 개발 엔드포인트에서 Amazon SageMaker AI 노트북을 생성할 때 사용할 IAM 정책을 생성합니다.

1. [Amazon SageMaker AI 노트북용 IAM 역할 생성](create-an-iam-role-sagemaker-notebook.md): IAM 역할을 생성하고 개발 엔드포인트에서 Amazon SageMaker AI 노트북을 생성할 때 권한을 부여하는 정책을 연결합니다.

# 1단계: AWS Glue 서비스를 위한 IAM 정책 생성
<a name="create-service-policy"></a>

Amazon S3 객체에 액세스하는 것처럼 다른 AWS 리소스의 데이터에 액세스하는 작업의 경우, 사용자를 대신하여 리소스에 액세스할 수 있는 권한이 AWS Glue에 있어야 합니다. AWS Identity and Access Management(IAM)을 사용하여 그러한 권한을 제공합니다.

**참고**  
AWS 관리형 정책 `AWSGlueServiceRole`을 사용하면 이 단계를 생략해도 좋습니다.

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

**AWS Glue를 위한 IAM 정책을 생성하려면**

이 정책은 몇 가지 Amazon S3 작업에 대한 권한을 부여하여 이 정책에 따른 역할을 AWS Glue에서 맡을 때 필요한 계정 내 리소스를 관리할 수 있도록 합니다. 이 정책에 지정된 몇 가지 리소스는 Amazon S3 버킷, Amazon S3 ETL 스크립트, CloudWatch Logs 및 Amazon EC2 리소스에 대해 AWS Glue에서 사용하는 기본 이름을 나타냅니다. 간소화를 위해 AWS Glue는 기본적으로 `aws-glue-*`가 접두사인 계정에서 몇 가지 Amazon S3 객체를 버킷에 작성합니다.

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

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

1. **정책 생성**을 선택하세요.

1. [**Create Policy(정책 생성)**] 화면에서 탭으로 이동하여 JSON을 편집합니다. 다음 JSON 설명으로 정책 문서를 만든 다음 [**Review policy(정책 보기)**]를 선택합니다.
**참고**  
Amazon S3 리소스에 필요한 모든 액세스를 추가합니다. 필요한 리소스만의 액세스 정책에 대한 리소스 섹션의 범위를 정하고자 할 수 있습니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "glue:*",
           "s3:GetBucketLocation",
           "s3:ListBucket",
           "s3:ListAllMyBuckets",
           "s3:GetBucketAcl",
           "ec2:DescribeVpcEndpoints",
           "ec2:DescribeRouteTables",
           "ec2:CreateNetworkInterface",
           "ec2:DeleteNetworkInterface",
           "ec2:DescribeNetworkInterfaces",
           "ec2:DescribeSecurityGroups",
           "ec2:DescribeSubnets",
           "ec2:DescribeVpcAttribute",
           "iam:ListRolePolicies",
           "iam:GetRole",
           "iam:GetRolePolicy",
           "cloudwatch:PutMetricData"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:CreateBucket",
           "s3:PutBucketPublicAccessBlock"
         ],
         "Resource": [
           "arn:aws:s3:::aws-glue-*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:PutObject",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::aws-glue-*/*",
           "arn:aws:s3:::*/*aws-glue-*/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject"
         ],
         "Resource": [
           "arn:aws:s3:::crawler-public*",
           "arn:aws:s3:::aws-glue-*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:AssociateKmsKey"
         ],
         "Resource": [
           "arn:aws:logs:*:*:log-group:/aws-glue/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:CreateTags",
           "ec2:DeleteTags"
         ],
         "Condition": {
           "ForAllValues:StringEquals": {
             "aws:TagKeys": [
               "aws-glue-service-resource"
             ]
           }
         },
         "Resource": [
           "arn:aws:ec2:*:*:network-interface/*",
           "arn:aws:ec2:*:*:security-group/*",
           "arn:aws:ec2:*:*:instance/*"
         ]
       }
     ]
   }
   ```

------

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

1. **정책 검토** 화면에서 **정책 이름**을 입력합니다(예: **GlueServiceRolePolicy**). 조건부 설명을 입력하고 정책에 만족하면 **정책 생성**을 선택합니다.

# 2단계: AWS Glue에 대한 IAM 역할 생성
<a name="create-an-iam-role"></a>

AWS Glue가 사용자 대신 다른 서비스를 호출할 때 이용할 수 있도록 IAM 역할 권한을 부여해야 합니다. 여기에는 AWS Glue에서 사용하는 소스, 대상, 스크립트 및 임시 디렉터리에 대한 Amazon S3 액세스 권한이 포함됩니다. 크롤러, 작업 및 개발 엔드포인트는 권한이 필요합니다.

AWS Identity and Access Management(IAM)을 사용하여 그러한 권한을 제공합니다. IAM 역할에 정책을 추가하여 AWS Glue에 전달합니다.

****작업 편집기 내에서 IAM 역할을 생성하려면 다음을 수행합니다.****

1. AWS Glue 콘솔에서 작업을 생성할 때 역할 섹션을 찾습니다.

1. **Create new role**(새 역할 생성)을 선택합니다.

1. 인라인 역할 생성 양식이 열리고 다음을 수행할 수 있습니다.
   + **역할 이름**을 지정합니다. 예: `AWSGlueServiceRoleDefault`.
   + 관리형 정책 `AWSGlueServiceRole`이(가) 자동으로 선택됩니다.
   + 신뢰 정책을 검토하여 역할을 수임합니다.
   + 메타데이터에 대한 선택적 태그를 추가합니다.

1. **역할 생성**을 선택합니다.

1. 새로 생성된 역할은 작업에 대해 자동으로 선택됩니다.

또는 IAM 콘솔을 사용하여 역할을 생성할 수 있습니다.

****IAM 콘솔을 사용하여 AWS Glue에 대해 IAM 역할을 생성하려면 다음을 수행합니다.****

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

1. 왼쪽 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성**을 선택합니다.

1.  신뢰할 수 있는 엔터티 유형으로서 **AWS 서비스**를 선택합니다. 그런 다음, 서비스 또는 사용 사례의 경우 **AWS Glue**을(를) 찾아서 선택합니다. **다음**을 선택합니다.

1. **권한 추가** 페이지에서 필요한 권한이 포함된 정책을 선택합니다. 예를 들어 일반 AWS Glue 권한에 대한 AWS 관리형 정책 `AWSGlueServiceRole`와(과) Amazon S3 리소스에 대한 액세스에 대한 AWS 관리형 정책 **AmazonS3FullAccess**가 있습니다. 그리고 **다음**을 선택합니다.
**참고**  
이 역할의 정책 중 하나가 Amazon S3 소스 및 대상에 대한 권한을 보장한다는 것을 확인합니다. 특정 Amazon S3 리소스에 액세스를 위한 자체 정책을 제공하고자 할 수 있습니다. 데이터 원본은 `s3:ListBucket` 및 `s3:GetObject` 권한을 요구합니다. 데이터 대상은 `s3:ListBucket`, `s3:PutObject` 및 `s3:DeleteObject` 권한을 요구합니다. 리소스에 대한 Amazon S3 정책을 생성하는 방법은 [정책에서 리소스 지정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html)을 참조하세요. Amazon S3 정책 예제는 [IAM 정책 작성하기: Amazon S3 버킷으로의 액세스를 보장하는 방법](https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/)을 참조하세요.  
SSE-KMS로 암호화된 Amazon S3 소스 및 대상에 액세스하고자 할 경우, AWS Glue 크롤러, 작업 및 개발 엔드포인트가 데이터를 복호화할 수 있게 허용하는 정책을 연결합니다. 자세한 내용은 [AWS KMS 관리형 키(SSE-KMS)를 사용하는 서버 측 암호화로 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)를 참조하세요.  
다음은 예입니다.  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": [
           "arn:aws:kms:*:111122223333:key/key-id"
         ]
       }
     ]
   }
   ```

1.  역할 이름을 지정하고 설명(선택 사항)을 추가한 다음, 신뢰 정책 및 권한을 검토하세요. [**역할 이름(Role name)**]에 역할 이름을 입력합니다(예: `AWSGlueServiceRoleDefault`). 이름의 접두사가 문자열 `AWSGlueServiceRole`인 역할을 생성하고, 콘솔 사용자가 서비스로 해당 역할을 전달할 수 있도록 합니다. AWS Glue가 제공한 정책에서는 IAM 서비스 역할이 `AWSGlueServiceRole`로 시작될 것으로 예상합니다. 그렇지 않으면 정책을 추가하여 IAM 역할에 대한 `iam:PassRole` 권한을 사용자에게 부여하고 이름 규정과 일치시켜야 합니다. **역할 생성**을 선택합니다.
**참고**  
역할이 있는 노트북을 생성하면 해당 역할이 대화형 세션으로 전달되므로 두 위치에서 동일한 역할을 사용할 수 있습니다. 따라서 `iam:PassRole` 권한은 역할의 정책의 일부여야 합니다.  
다음 예제를 사용하여 역할에 대한 새 정책을 생성합니다. 계정 번호를 사용자의 고유한 역할 이름으로 바꿉니다.  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:PassRole",
         "Resource": "arn:aws:iam::090000000210:role/<role_name>"
       }
     ]
   }
   ```

1.  규칙에 태그를 추가합니다(선택 사항). 태그는 리소스를 식별, 구성 또는 검색하는 데 도움이 되는 AWS 리소스에 추가할 수 있는 키-값 쌍입니다. 그런 다음 **역할 생성**을 선택합니다.

# 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(정책 추가)**]를 선택합니다.

# 4단계: 노트북 서버용 IAM 정책 생성
<a name="create-notebook-policy"></a>

개발 엔드포인트로 노트북을 사용하고자 한다면 노트북 서버를 생성할 때 권한을 지정해야 합니다. AWS Identity and Access Management(IAM)을 사용하여 그러한 권한을 제공합니다.

이 정책은 몇 가지 Amazon S3 작업에 대한 권한을 부여하여 이 정책에 따른 역할을 AWS Glue에서 맡을 때 필요한 계정 내 리소스를 관리할 수 있도록 합니다. 이 정책에 지정된 몇 가지 리소스는 Amazon S3 버킷, Amazon S3 ETL 스크립트, Amazon EC2 리소스에 대해 AWS Glue에서 사용하는 기본 이름을 나타냅니다. 간소화를 위해 AWS Glue는 기본적으로 접두사가 `aws-glue-*`인 계정에서 몇 가지 Amazon S3 객체를 버킷에 작성합니다.

**참고**  
AWS 관리형 정책 **`AWSGlueServiceNotebookRole`**를 사용하면 이 단계를 생략해도 좋습니다.

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

**노트북에 대한 IAM 정책을 생성하려면**

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

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

1. **정책 생성**을 선택하세요.

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

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "glue:CreateDatabase",
           "glue:CreatePartition",
           "glue:CreateTable",
           "glue:DeleteDatabase",
           "glue:DeletePartition",
           "glue:DeleteTable",
           "glue:GetDatabase",
           "glue:GetDatabases",
           "glue:GetPartition",
           "glue:GetPartitions",
           "glue:GetTable",
           "glue:GetTableVersions",
           "glue:GetTables",
           "glue:UpdateDatabase",
           "glue:UpdatePartition",
           "glue:UpdateTable",
           "glue:GetJobBookmark",
           "glue:ResetJobBookmark",
           "glue:CreateConnection",
           "glue:CreateJob",
           "glue:DeleteConnection",
           "glue:DeleteJob",
           "glue:GetConnection",
           "glue:GetConnections",
           "glue:GetDevEndpoint",
           "glue:GetDevEndpoints",
           "glue:GetJob",
           "glue:GetJobs",
           "glue:UpdateJob",
           "glue:BatchDeleteConnection",
           "glue:UpdateConnection",
           "glue:GetUserDefinedFunction",
           "glue:UpdateUserDefinedFunction",
           "glue:GetUserDefinedFunctions",
           "glue:DeleteUserDefinedFunction",
           "glue:CreateUserDefinedFunction",
           "glue:BatchGetPartition",
           "glue:BatchDeletePartition",
           "glue:BatchCreatePartition",
           "glue:BatchDeleteTable",
           "glue:UpdateDevEndpoint",
           "s3:GetBucketLocation",
           "s3:ListBucket",
           "s3:ListAllMyBuckets",
           "s3:GetBucketAcl"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject"
         ],
         "Resource": [
           "arn:aws:s3:::crawler-public*",
           "arn:aws:s3:::aws-glue*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::aws-glue*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:CreateTags",
           "ec2:DeleteTags"
         ],
         "Condition": {
           "ForAllValues:StringEquals": {
             "aws:TagKeys": [
               "aws-glue-service-resource"
             ]
           }
         },
         "Resource": [
           "arn:aws:ec2:*:*:network-interface/*",
           "arn:aws:ec2:*:*:security-group/*",
           "arn:aws:ec2:*:*:instance/*"
         ]
       }
     ]
   }
   ```

------

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

1. **정책 검토** 화면에서 **정책 이름**을 입력합니다(예: **GlueServiceNotebookPolicyDefault**). 조건부 설명을 입력하고 정책에 만족하면 **정책 생성**을 선택합니다.

# 5단계: 노트북 서버용 IAM 역할 생성
<a name="create-an-iam-role-notebook"></a>

개발 엔드포인트로 노트북을 사용하고자 한다면 IAM 역할 권한을 부여해야 합니다. IAM 역할을 통해 AWS Identity and Access Management IAM을 사용하여 권한을 제공합니다.

**참고**  
IAM 콘솔을 사용하여 IAM 역할을 생성하면 인스턴스 프로파일이 자동으로 생성되고 해당 역할과 동일한 이름이 지정됩니다.

**노트북용 IAM 역할을 생성하려면**

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

1. 왼쪽 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성**을 선택합니다.

1. 역할 유형의 경우, **AWS 서비스**를 선택하고 **EC2**를 찾아 선택한 다음 **EC2** 사용 사례를 선택하고 **다음: 권한**을 선택합니다.

1. **권한 정책 연결** 페이지에서 필요한 권한이 포함된 정책을 선택합니다. 예를 들어 일반 AWS Glue 권한에 대한 **AWSGlueServiceNotebookRole**과 Amazon S3 리소스에 대한 액세스에 대한 AWS 관리형 정책 **AmazonS3FullAccess**가 있습니다. 그런 다음 **다음: 검토(Next: Review)**를 선택합니다.
**참고**  
이 역할의 정책 중 하나가 Amazon S3 소스 및 대상에 대한 권한을 보장한다는 것을 확인합니다. 정책이 노트북 서버를 생성할 때 노트북을 저장하는 위치로 완전한 액세스가 허용되는지 확인합니다. 특정 Amazon S3 리소스에 액세스를 위한 자체 정책을 제공하고자 할 수 있습니다. 리소스에 대한 Amazon S3 정책을 생성하는 방법은 [정책에서 리소스 지정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html)을 참조하세요.  
SSE-KMS로 암호화된 Amazon S3 소스 및 대상에 액세스하고자 할 경우, 노트북이 데이터를 복호화할 수 있게 허용하는 정책을 연결합니다. 자세한 내용은 [AWS KMS 관리형 키(SSE-KMS)를 사용하는 서버 측 암호화로 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)를 참조하세요.  
다음은 예입니다.  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": [
           "arn:aws:kms:*:111122223333:key/key-id"
         ]
       }
     ]
   }
   ```

1. **역할 이름**에 역할의 이름을 입력합니다. 이름의 접두사가 문자열 `AWSGlueServiceNotebookRole`인 역할을 생성하고, 콘솔 사용자가 노트북 서버로 해당 역할을 전달할 수 있도록 합니다. AWS Glue가 제공한 정책에서는 IAM 서비스 역할이 `AWSGlueServiceNotebookRole`로 시작될 것으로 예상합니다. 그렇지 않으면 사용자에게 정책을 추가하여 IAM 역할의 `iam:PassRole` 권한이 이름 규정과 일치하도록 해야 합니다. 예를 들면 `AWSGlueServiceNotebookRoleDefault`를 입력합니다. 그런 다음 **역할 생성**을 선택합니다.

# 6단계: SageMaker AI 노트북용 IAM 정책 생성
<a name="create-sagemaker-notebook-policy"></a>

개발 엔드포인트에서 SageMaker AI 노트북을 사용할 계획이라면 노트북을 생성할 때 권한을 지정해야 합니다. AWS Identity and Access Management(IAM)을 사용하여 그러한 권한을 제공합니다.

**SageMaker AI 노트북용 IAM 정책을 생성하려면**

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

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

1. **정책 생성**을 선택하세요.

1. **정책 생성** 페이지에서 탭으로 이동하여 JSON을 편집합니다. 다음 JSON 문을 사용해 정책 문서를 생성합니다. 환경에 대한 *bucket-name*, *region-code* 및 *account-id*를 편집합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:ListBucket"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket"
               ]
           },
           {
               "Action": [
                   "s3:GetObject"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket*"
               ]
           },
           {
               "Action": [
                   "logs:CreateLogStream",
                   "logs:DescribeLogStreams",
                   "logs:PutLogEvents",
                   "logs:CreateLogGroup"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/*",
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/*:log-stream:aws-glue-*"
               ]
           },
           {
               "Action": [
                   "glue:UpdateDevEndpoint",
                   "glue:GetDevEndpoint",
                   "glue:GetDevEndpoints"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:devEndpoint/*"
               ]
           },
           {
               "Action": [
                   "sagemaker:ListTags"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:sagemaker:us-east-1:111122223333:notebook-instance/*"
               ]
           }
       ]
   }
   ```

------

   그런 다음 **정책 검토**를 선택합니다.

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

1. [**정책 검토(Review Policy)**] 화면에서 [**정책 이름(Policy Name)**]을 입력합니다(예: `AWSGlueSageMakerNotebook`). 조건부 설명을 입력하고 정책에 만족하면 **정책 생성**을 선택합니다.

# 7단계: SageMaker AI 노트북용 IAM 역할 생성
<a name="create-an-iam-role-sagemaker-notebook"></a>

개발 엔드포인트로 SageMaker AI 노트북을 사용하고자 한다면 IAM 역할 권한을 부여해야 합니다. IAM 역할을 통해 AWS Identity and Access Management(IAM)를 사용하여 권한을 제공합니다.

**SageMaker AI 노트북용 IAM 역할을 생성하려면**

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

1. 왼쪽 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성**을 선택합니다.

1. 역할 유형의 경우, **AWS 서비스**를 선택하고 **SageMaker**를 찾아 선택한 다음 **SageMaker - 실행** 사용 사례를 선택합니다. 그런 다음 **다음: 권한**을 선택합니다.

1. **Attach permissions policy(권한 정책 연결)** 페이지에서 필요한 권한을 포함한 정책을 선택합니다(예: **AmazonSageMakerFullAccess**). **다음: 검토**를 선택합니다.

   SSE-KMS로 암호화된 Amazon S3 소스 및 대상에 액세스하고자 할 경우, 다음 예에 표시된 것처럼 노트북이 데이터를 복호화하도록 허용하는 정책을 연결합니다. 자세한 내용은 [AWS KMS 관리형 키(SSE-KMS)를 사용하는 서버 측 암호화로 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)를 참조하세요.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": [
           "arn:aws:kms:*:111122223333:key/key-id"
         ]
       }
     ]
   }
   ```

------

1. **역할 이름**에 역할의 이름을 입력합니다. 콘솔 사용자로부터 SageMaker AI로 역할이 전달되도록 하려면 문자열 `AWSGlueServiceSageMakerNotebookRole`로 접두사가 지정된 이름을 사용합니다. AWS Glue에서 제공한 정책은 IAM 역할이 `AWSGlueServiceSageMakerNotebookRole`로 시작할 것이라고 기대합니다. 그렇지 않으면 사용자에게 정책을 추가하여 IAM 역할의 `iam:PassRole` 권한이 이름 규정과 일치하도록 해야 합니다.

   예를 들어 `AWSGlueServiceSageMakerNotebookRole-Default`를 입력한 다음 [**역할 생성(Create role)**]을 선택합니다.

1. 역할을 생성한 후 AWS Glue에서 SageMaker AI 노트북을 생성하는 데 필요한 추가 권한을 허용하는 정책을 연결합니다.

   방금 생성한 역할인 `AWSGlueServiceSageMakerNotebookRole-Default`를 열고 [**정책 연결(Attach policies)**]을 선택합니다. 역할에 생성한 `AWSGlueSageMakerNotebook` 정책을 연결합니다.