3단계: AWS Glue에 액세스하는 사용자 또는 그룹에 정책 연결
관리자는 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, AWS 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 버킷으로의 액세스를 보장하는 방법
이 단계에서는AWSGlueConsoleFullAccess
과 비슷한 정책을 만듭니다. IAM 콘솔에서 AWSGlueConsoleFullAccess
의 최신 버전을 확인할 수 있습니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 사용자 또는 사용자 그룹을 선택합니다.
-
목록에서 정책을 삽입할 사용자 또는 그룹 이름을 선택합니다.
-
권한 탭을 선택하고 필요하다면 Permissions policies(권한 정책) 섹션을 확장합니다.
-
[Add Inline Policy(인라인 정책 추가)] 링크를 선택합니다.
-
[Create Policy(정책 생성)] 화면에서 탭으로 이동하여 JSON을 편집합니다. 다음 JSON 설명으로 정책 문서를 만든 다음 [Review policy(정책 보기)]를 선택합니다.
{ "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" ] } } } ] }
다음 테이블은 이 정책이 보장하는 권한을 설명합니다.
작업 리소스 설명 "glue:*"
"*"
모든 AWS Glue API 작업을 실행할 수 있는 권한을 부여합니다.
"glue:*"
작업 없이 이전에 정책을 생성했다면 정책에 다음과 같은 개별 권한을 추가해야 합니다.-
"glue:ListCrawlers"
-
"glue:BatchGetCrawlers"
-
"glue:ListTriggers"
-
"glue:BatchGetTriggers"
-
"glue:ListDevEndpoints"
-
"glue:BatchGetDevEndpoints"
-
"glue:ListJobs"
-
"glue:BatchGetJobs"
"redshift:DescribeClusters", "redshift:DescribeClusterSubnetGroups"
"*"
Amazon Redshift로 연결을 생성하도록 허용합니다.
"iam:ListRoles", "iam:ListRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies"
"*"
크롤러, 작업, 개발 엔드포인트 및 노트북 서버와 작업할 경우 IAM 역할 목록을 허용합니다.
"ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcEndpoints", "ec2:DescribeRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeInstances"
"*"
작업, 크롤러 및 개발 엔드포인트를 실행할 때 VPC와 같은 Amazon EC2 네트워크 항목의 설치를 허용합니다.
"rds:DescribeDBInstances"
"*"
Amazon RDS로 연결을 생성하도록 허용합니다.
"s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation"
"*"
크롤러, 작업, 개발 엔드포인트 및 노트북 서버와 작업할 경우, Amazon S3 버킷 목록을 허용합니다.
"dynamodb:ListTables"
"*"
DynamoDB 테이블 나열을 허용합니다.
"kms:ListAliases", "kms:DescribeKey"
"*"
KMS 키 작업을 허용합니다.
"cloudwatch:GetMetricData", "cloudwatch:ListDashboards"
"*"
CloudWatch 지표 작업을 허용합니다.
"s3:GetObject", "s3:PutObject"
"arn:aws:s3::: aws-glue-*/*", "arn:aws:s3::: */*aws-glue-*/*", "arn:aws:s3::: aws-glue-*"
ETL 스크립트 및 노트북 서버 위치와 같은 객체를 저장할 때 Amazon S3 객체를 계정에서 얻고 넣는 것을 허용합니다.
명명 규칙: 이름이 aws-glue-로 시작하는 Amazon S3 버킷 또는 폴더에 권한을 부여합니다.
"tag:GetResources"
"*"
AWS 태그 검색을 허용합니다.
"s3:CreateBucket", "s3:PutBucketPublicAccessBlock"
"arn:aws:s3::: aws-glue-*"
ETL 스크립트 및 노트북 서버 위치와 같은 객체를 저장할 때 Amazon S3 버킷을 계정에 생성하는 것을 허용합니다.
명명 규칙: 이름이 aws-glue-로 시작하는 Amazon S3 버킷에 권한을 부여합니다.
AWS Glue를 사용하여 퍼블릭 액세스를 차단하는 버킷을 생성합니다.
"logs:GetLogEvents"
"arn:aws:logs:*:*: /aws-glue/*"
CloudWatch Logs의 검색 허용
이름 전환: AWS Glue는 aws-glue로 시작하는 로그 투 로그 그룹 이름을 작성합니다.
"cloudformation:CreateStack", "cloudformation:DeleteStack"
"arn:aws:cloudformation:*:*:stack/ aws-glue*/*"
노트북 서버로 작업할 때 AWS CloudFormation 스택 관리를 허용합니다.
이름 전환: AWS Glue는 aws-glue로 시작하는 스택 이름을 생성합니다.
"ec2:RunInstances"
"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/*"
개발 엔드포인트 및 노트북 서버의 실행을 허용합니다.
"iam:PassRole"
"arn:aws:iam::*:role/ AWSGlueServiceRole*"
AWS Glue가
AWSGlueServiceRole
로 시작하는 역할에 대해PassRole
권한을 수임하도록 허용합니다."iam:PassRole"
"arn:aws:iam::*:role/ AWSGlueServiceNotebookRole*"
Amazon EC2가
AWSGlueServiceNotebookRole
로 시작하는 역할에 대해PassRole
권한을 수임하도록 허용합니다."iam:PassRole"
"arn:aws:iam::*:role/service-role/ AWSGlueServiceRole*"
AWS Glue가
service-role/AWSGlueServiceRole
로 시작하는 역할에 대해PassRole
권한을 수임하도록 허용합니다. -
-
정책 검토 화면에서 정책의 이름을 입력합니다(예: GlueConsoleAccessPolicy). 정책에 만족하면 정책 생성을 선택합니다. 화면 상단에 있는 빨간색 상자에 표시되는 오류가 있지 않은지 확인합니다. 표시되는 오류가 있다면 수정합니다.
참고
[Use autoformatting]을 선택하면 정책을 열거나 [Validate Policy]를 선택할 때마다 정책의 형식이 다시 지정됩니다.
AWSGlueConsoleFullAccess 관리 정책을 연결하는 방법
AWSGlueConsoleFullAccess
정책을 추가하여 AWS Glue 콘솔 사용자가 필요한 권한을 제공합니다.
참고
AWS Glue 콘솔 액세스용 자체 정책을 생성했다면 이 단계를 건너뛸 수 있습니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 정책을 선택합니다.
-
정책 목록에서 AWSGlueConsoleFullAccess 옆의 확인란을 선택합니다. [Filter] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.
-
정책 조치를 선택한 후 연결을 선택합니다.
-
정책을 연결하려는 사용자를 선택합니다. 필터 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [Attach policy(정책 추가)]를 선택합니다.
AWSGlueConsoleSageMakerNotebookFullAccess
관리형 정책을 연결하려면
AWSGlueConsoleSageMakerNotebookFullAccess
정책을 사용자에게 연결해 AWS Glue 콘솔에서 생성한 SageMaker AI 노트북을 관리할 수 있습니다. 필요한 다른 AWS Glue 콘솔 권한 이외에도 이 정책은 SageMaker AI 노트북 관리에 필요한 리소스에 대한 액세스 권한을 부여합니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 정책을 선택합니다.
-
정책 목록에서 AWSGlueConsoleSageMakerNotebookFullAccess 옆의 확인란을 선택합니다. [Filter] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.
-
정책 조치를 선택한 후 연결을 선택합니다.
-
정책을 연결하려는 사용자를 선택합니다. 필터 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [Attach policy(정책 추가)]를 선택합니다.
CloudWatchLogsReadOnlyAccess 관리 정책을 연결하는 방법
CloudWatchLogsReadOnlyAccess 정책을 사용자에게 연결하고 CloudWatch Logs 콘솔에서 AWS Glue가 생성한 로그를 볼 수 있습니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 정책을 선택합니다.
-
정책 목록에서 [CloudWatchLogsReadOnlyAccess] 이름 옆의 확인란을 선택합니다. [Filter] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.
-
정책 조치를 선택한 후 연결을 선택합니다.
-
정책을 연결하려는 사용자를 선택합니다. 필터 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [Attach policy(정책 추가)]를 선택합니다.
AWSCloudFormationReadOnlyAccess 관리 정책을 연결하는 방법
AWSCloudFormationReadOnlyAccess 정책을 사용자에게 연결하고 AWS Glue가 사용한 AWS CloudFormation 스택을 AWS CloudFormation 콘솔에서 볼 수 있습니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 정책을 선택합니다.
-
정책 목록에서 AWSCloudFormationReadOnlyAccess 이름 옆의 확인란을 선택합니다. [Filter] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.
-
정책 조치를 선택한 후 연결을 선택합니다.
-
정책을 연결하려는 사용자를 선택합니다. 필터 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [Attach policy(정책 추가)]를 선택합니다.
AmazonAthenaFullAccess 관리 정책을 추가하는 방법
AmazonAthenaFullAccess 정책을 사용자에게 연결하고 Amazon S3 데이터를 Athena 콘솔에서 볼 수 있습니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 정책을 선택합니다.
-
정책 목록에서 [AmazonAthenaFullAccess(Amazon Athena 완전한 액세스)] 옆의 확인란을 선택합니다. [Filter] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.
-
정책 조치를 선택한 후 연결을 선택합니다.
-
정책을 연결하려는 사용자를 선택합니다. 필터 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다. 정책을 추가할 사용자를 선택한 다음 [Attach policy(정책 추가)]를 선택합니다.