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 형식 |
---|---|
카탈로그 |
예: |
데이터베이스 |
예: |
표 |
예: |
사용자 정의 함수 |
예: |
연결 |
예: |
대화형 세션 |
예: |
세분화된 액세스 제어를 사용하려면 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 형식 |
---|---|
크롤러 |
예: |
작업 |
예: |
트리거 |
예: |
개발 엔드포인트 |
예: |
기계 학습 변환 |
예: |
AWS Glue 카탈로그 이외 단수 API 작업에 대한 액세스 제어
AWS Glue 카탈로그 이외 단수 API 작업은 단일 항목(개발 엔드포인트)에 대해 수행됩니다. GetDevEndpoint
, CreateUpdateDevEndpoint
및 UpdateDevEndpoint
를 예로 들 수 있습니다. 이러한 작업의 경우 정책은 "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
, CreateDevEndpoint
및 DeleteDevendpoint
)의 범위 또한 모든(*) 리소스로 지정합니다.
{ "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.
중요
List
및 BatchGet
API 작업 사용과 같이 IAM 정책을 설정하기 위한 대체 접근 방식은 AWS Glue에 대한 자격 증명 기반 정책 예제 단원을 참조하십시오.