AWS Glue 리소스 ARN 지정 - AWS Glue

AWS Glue 리소스 ARN 지정

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

Data Catalog ARN

Data Catalog 리소스에는 catalog가 루트인 계층 구조가 있습니다.

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

각 AWS 계정에는 12자리 계정 ID가 카탈로그 ID인 Data Catalog가 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

대화형 세션

arn:aws:glue:region:account-id:session/interactive session id

예: arn:aws:glue:us-east-1:123456789012:session/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

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

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

Data Catalog 리소스에 대해 수행된 모든 작업에는 리소스와 해당 리소스의 모든 상위 항목에 대한 권한이 필요합니다. 예를 들어, 테이블에 대한 파티션을 생성하려면 해당 테이블, 데이터베이스 및 이 테이블이 있는 카탈로그에 대한 권한이 필요합니다. 다음 예에서는 Data Catalog에서 데이터베이스 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" ] }

리소스와 해당 리소스의 모든 상위 항목에 대한 권한 이외에도 모든 삭제 작업에는 해당 리소스의 모든 하위 항목에 대한 권한이 필요합니다. 예를 들어, 데이터베이스를 삭제하려면 데이터베이스 및 데이터베이스가 위치하고 있는 카탈로그 외에도 데이터베이스에 있는 모든 테이블과 사용자 정의 함수에 대한 권한이 필요합니다. 다음 예에서는 Data 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" ] }

즉, Data Catalog 리소스에 대한 작업은 다음 권한 규칙을 따릅니다.

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

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

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

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

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

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

AWS Glue에서 카탈로그 이외 객체의 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": "MinimumPermissions", "Effect": "Allow", "Action": "glue:GetDevEndpoint", "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-1" } ] }

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CombinedPermissions", "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": "PluralAPIIncluded", "Effect": "Allow", "Action": [ "glue:GetDevEndpoints", "glue:GetDevEndpoint", "glue:CreateDevEndpoint", "glue:UpdateDevEndpoint" ], "Resource": [ "*" ] }

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

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

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

{ "Sid": "BatchGetAPIIncluded", "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에 대한 자격 증명 기반 정책 예제 단원을 참조하십시오.