AWS Glue 리소스 ARN 지정 - AWS Glue

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

AWS Glue 리소스 ARN 지정

AWS Glue에서 AWS Identity and Access Management(IAM) 정책을 사용하여 리소스에 대한 액세스를 제어할 수 있습니다. 정책에서 Amazon 리소스 이름(ARN)을 사용하여 정책이 적용되는 리소스를 식별합니다. AWS Glue의 일부 리소스는 ARN을 지원하지 않습니다.

데이터 카탈로그 ARN

데이터 카탈로그 리소스에는 catalog가 루트인 계층 구조가 있습니다.

arn:aws:glue:region:account-id:catalog

각 AWS 계정에는 12자리 계정 ID가 카탈로그 ID인 데이터 카탈로그가 AWS 리전에 하나씩 있습니다. 다음 표와 같이 리소스에는 고유한 ARN이 연결되어 있습니다.

리소스 유형 ARN 형식

카탈로그

arn:aws:glue:region:account-id:catalog

예: arn:aws:glue:us-east-1:123456789012:catalog

데이터베이스

arn:aws:glue:region:account-id:database/database name

예: arn:aws:glue:us-east-1:123456789012:database/db1

테이블

arn:aws:glue:region:account-id:table/database name/table name

예: arn:aws:glue:us-east-1:123456789012:table/db1/tbl1

사용자 정의 함수

arn:aws:glue:region:account-id:userDefinedFunction/database name/user-defined function name

예: arn:aws:glue:us-east-1:123456789012:userDefinedFunction/db1/func1

연결

arn:aws:glue:region:account-id:connection/connection name

예: arn:aws:glue:us-east-1:123456789012:connection/connection1

세분화된 액세스 제어를 활성화하려면 IAM 정책 및 리소스 정책에서 이러한 ARN을 사용하여 특정 리소스에 대한 액세스 권한을 부여 및 거부할 수 있습니다. 와일드카드가 정책에서 허용됩니다. 예를 들어, 다음 ARN은 데이터베이스 default의 모든 테이블과 일치합니다.

arn:aws:glue:us-east-1:123456789012:table/default/*
중요

데이터 카탈로그 리소스에 대해 수행된 모든 작업에는 리소스와 해당 리소스의 모든 상위 항목에 대한 권한이 필요합니다. 예를 들어, 테이블에 대한 파티션을 생성하려면 해당 테이블, 데이터베이스 및 이 테이블이 있는 카탈로그에 대한 권한이 필요합니다. 다음 예에서는 데이터 카탈로그에서 데이터베이스 PrivateDatabase의 테이블 PrivateTable에 대한 파티션을 생성하는 데 필요한 권한을 보여줍니다.

{ "Sid": "GrantCreatePartitions", "Effect": "Allow", "Action": [ "glue:BatchCreatePartitions" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/PrivateTable", "arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase", "arn:aws:glue:us-east-1:123456789012:catalog" ] }

리소스와 해당 리소스의 모든 상위 항목에 대한 권한 이외에도 모든 삭제 작업에는 해당 리소스의 모든 하위 항목에 대한 권한이 필요합니다. 예를 들어, 데이터베이스를 삭제하려면 데이터베이스 및 데이터베이스가 위치하고 있는 카탈로그 외에도 데이터베이스에 있는 모든 테이블과 사용자 정의 함수에 대한 권한이 필요합니다. 다음 예에서는 데이터 카탈로그에서 PrivateDatabase 데이터베이스를 삭제하는 데 필요한 권한을 보여줍니다.

{ "Sid": "GrantDeleteDatabase", "Effect": "Allow", "Action": [ "glue:DeleteDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/*", "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/PrivateDatabase/*", "arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase", "arn:aws:glue:us-east-1:123456789012:catalog" ] }

즉, 데이터 카탈로그 리소스에 대한 작업은 다음 권한 규칙을 따릅니다.

  • 카탈로그에 대한 작업에는 카탈로그에 대한 권한만 필요합니다.

  • 데이터베이스에 대한 작업에는 데이터베이스와 카탈로그에 대한 권한이 필요합니다.

  • 데이터베이스에 대한 삭제 작업에는 데이터베이스 및 카탈로그와 해당 데이터베이스 내 모든 테이블과 사용자 정의 함수에 대한 권한이 필요합니다.

  • 테이블, 파티션 또는 테이블 버전에 대한 작업에는 테이블, 데이터베이스 및 카탈로그에 대한 권한이 필요합니다.

  • 사용자 정의 함수에 대한 작업에는 사용자 정의 함수, 데이터베이스 및 카탈로그에 대한 권한이 필요합니다.

  • 연결에 대한 작업에는 연결과 카탈로그에 대한 권한이 필요합니다.

카탈로그 이외 객체의 ARN

일부 AWS Glue 리소스에서는 ARN을 사용하여 액세스를 제어할 수 있도록 리소스 수준 권한을 허용합니다. IAM 정책에서 이러한 ARN을 사용하여 세분화된 액세스 제어를 활성화할 수 있습니다. 다음 표에는 리소스 ARN을 포함할 수 있는 리소스가 나와 있습니다.

리소스 유형 ARN 형식

크롤러

arn:aws:glue:region:account-id:crawler/crawler-name

예: arn:aws:glue:us-east-1:123456789012:crawler/mycrawler

작업

arn:aws:glue:region:account-id:job/job-name

예: arn:aws:glue:us-east-1:123456789012:job/testjob

트리거

arn:aws:glue:region:account-id:trigger/trigger-name

예: arn:aws:glue:us-east-1:123456789012:trigger/sampletrigger

개발 엔드포인트

arn:aws:glue:region:account-id:devEndpoint/development-endpoint-name

예: arn:aws:glue:us-east-1:123456789012:devEndpoint/temporarydevendpoint

기계 학습 변환

arn:aws:glue:region:account-id:mlTransform/transform-id

예: arn:aws:glue:us-east-1:123456789012:mlTransform/tfm-1234567890

AWS Glue 카탈로그 이외 단수 API 작업에 대한 액세스 제어

AWS Glue 카탈로그 이외 단수 API 작업은 단일 항목(개발 엔드포인트)에 대해 수행됩니다. GetDevEndpoint, CreateUpdateDevEndpointUpdateDevEndpoint를 예로 들 수 있습니다. 이러한 작업의 경우 정책은 "action" 블록에 API 이름을, "resource" 블록에 리소스 ARN을 배치해야 합니다.

사용자가 GetDevEndpoint 작업을 호출하도록 허용하려 한다고 가정해 보겠습니다. 다음 정책은 myDevEndpoint-1이라는 엔드포인트에 필요한 최소 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Minimum permissions", "Effect": "Allow", "Action": "glue:GetDevEndpoint", "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-1" } ] }

다음 정책은 와일드카드(*)를 사용하여 myDevEndpoint-와 일치하는 리소스에 대한 UpdateDevEndpoint 액세스를 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission with wildcard", "Effect": "Allow", "Action": "glue:UpdateDevEndpoint", "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-*" } ] }

다음 예에서처럼 정책 2개를 결합할 수 있습니다. 이름이 A로 시작하는 개발 엔드포인트에 대한 EntityNotFoundException을 볼 수 있습니다. 하지만 다른 개발 엔드포인트에 액세스하려고 시도하면 액세스 거부 오류가 반환됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Combined permissions", "Effect": "Allow", "Action": [ "glue:UpdateDevEndpoint", "glue:GetDevEndpoint" ], "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/A*" } ] }

여러 항목을 검색하는 AWS Glue 카탈로그 이외 API 직업에 대한 액세스 제어

일부 AWS Glue API 작업은 여러 항목(예: 여러 개발 엔드포인트)을 검색합니다(예: GetDevEndpoints). 이 작업의 경우 와일드카드(*) 리소스만 지정할 수 있으며 특정 ARN을 지정할 수 없습니다.

예를 들어 정책에 GetDevEndpoints를 포함하려면 리소스의 범위를 와일드카드(*)로 지정해야 합니다. 이 예에서는 단수 작업(GetDevEndpoint, CreateDevEndpointDeleteDevendpoint)의 범위 또한 모든(*) 리소스로 지정합니다.

{ "Sid": "Plural API included", "Effect": "Allow", "Action": [ "glue:GetDevEndpoints", "glue:GetDevEndpoint", "glue:CreateDevEndpoint", "glue:UpdateDevEndpoint" ], "Resource": [ "*" ] }

AWS Glue 카탈로그 이외 일괄 가져오기 API 작업에 대한 액세스 제어

일부 AWS Glue API 작업은 여러 항목(예: 여러 개발 엔드포인트)을 검색합니다(예: BatchGetDevEndpoints). 이 작업에서 액세스할 수 있는 리소스의 범위를 제한하도록 ARN을 지정할 수 있습니다.

예를 들어 특정 개발 엔드포인트에 대한 액세스를 허용하려면 정책에 리소스 ARN과 함께 BatchGetDevEndpoints를 포함시킵니다.

{ "Sid": "BatchGet API included", "Effect": "Allow", "Action": [ "glue:BatchGetDevEndpoints" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:devEndpoint/de1" ] }

이 정책을 통해 de1이라는 개발 엔드포인트에 성공적으로 액세스할 수 있습니다. 그러나 de2라는 개발 엔드포인트에 액세스를 시도하면 오류가 반환됩니다.

An error occurred (AccessDeniedException) when calling the BatchGetDevEndpoints operation: No access to any requested resource.
중요

ListBatchGet API 작업 사용과 같이 IAM 정책을 설정하기 위한 대체 접근 방식은 태그를 사용하는 AWS Glue 자격 증명 기반(IAM) 액세스 제어 정책 예제 단원을 참조하십시오.