3단계: AWS Glue에 액세스하는 IAM 사용자에게 정책 연결 - AWS Glue

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

3단계: AWS Glue에 액세스하는 IAM 사용자에게 정책 연결

AWS Glue 콘솔 또는 AWS Command Line Interface(AWS CLI)에 로그인하는 모든 IAM 사용자는 특정 리소스에 액세스할 수 있는 권한이 필요합니다. 정책을 통해 AWS Identity and Access Management(IAM)를 사용하여 권한을 제공합니다.

이 단계가 완료되면 IAM 사용자는 다음과 같은 정책을 연결합니다.

  • AWS 관리 정책 [AWSGlueConsoleFullAccess] 또는 사용자 정책 [GlueConsoleAccessPolicy].

  • AWSGlueConsoleSageMakerNotebookFullAccess

  • CloudWatchLogsReadOnlyAccess

  • AWSCloudFormationReadOnlyAccess

  • AmazonAthenaFullAccess

인라인 정책을 생성하여 IAM 사용자에 추가하는 방법

AWS 관리 정책 또는 인라인 정책을 추가하여 IAM 사용자는 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 권한에 대한 자체 정책을 생성할 수도 있습니다.

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

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 [Users]를 선택합니다.

  3. 목록에서 정책을 삽입할 사용자 이름을 선택합니다.

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

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

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:*", "redshift:DescribeClusters", "redshift:DescribeClusterSubnetGroups", "iam:ListRoles", "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", "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-*/*", "arn:aws:s3:::aws-glue-*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket" ], "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/*" ] }, { "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-id": "arn:aws:cloudformation:*:*:stack/aws-glue-*/*" }, "StringEquals": { "ec2:ResourceTag/aws:cloudformation:logical-id": "ZeppelinInstance" } } }, { "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"

    "arn:aws:s3::: aws-glue-*"

    ETL 스트립트 및 노트북 서버 위치와 같은 객체를 저장할 때 Amazon S3 버킷을 계정에 생성하는 것을 허용합니다.

    이름 전환: 접두사가 aws-glue-인 이름을 갖는 Amazon S3 버킷 권한을 보장합니다.

    "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/*"

    개발 엔드포인트 및 노트북 서버의 실행을 허용합니다.

    "ec2:TerminateInstances", "ec2:CreateTags", "ec2:DeleteTags"

    "arn:aws:ec2:*:*:instance/*"

    개발 엔드포인트 및 노트북 서버의 조작을 허용합니다.

    이름 전환: aws-glue-와 논리 ID ZeppelinInstance로 시작하는 AWS Glue AWS CloudFormation 스택 이름

    "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 권한을 가정합니다.

  7. 정책 검토 화면에서 정책의 이름을 입력합니다(예: GlueConsoleAccessPolicy). 정책에 만족하면 정책 생성을 선택합니다. 화면 상단에 있는 빨간색 상자에 표시되는 오류가 있지 않은지 확인합니다. 표시되는 오류가 있다면 수정합니다.

    참고

    [Use autoformatting]을 선택하면 정책을 열거나 [Validate Policy]를 선택할 때마다 정책의 형식이 다시 지정됩니다.

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

AWSGlueConsoleFullAccess 정책을 추가하여 AWS Glue 콘솔 사용자가 필요한 권한을 제공합니다.

참고

AWS Glue 콘솔 액세스용 자체 정책을 생성했다면 이 단계를 건너뛸 수 있습니다.

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

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

  4. [Policy actions]를 선택한 후 [Attach]를 선택합니다.

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

AWSGlueConsoleSageMakerNotebookFullAccess 관리 정책을 연결하려면

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

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

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

  4. [Policy actions]를 선택한 후 [Attach]를 선택합니다.

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

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

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

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

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

  4. [Policy actions]를 선택한 후 [Attach]를 선택합니다.

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

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

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

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

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

  4. [Policy actions]를 선택한 후 [Attach]를 선택합니다.

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

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

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

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

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

  4. [Policy actions]를 선택한 후 [Attach]를 선택합니다.

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