AWS Data Pipeline에 대한 IAM 정책 - AWS Data Pipeline

AWS Data Pipeline에 대한 IAM 정책

기본적으로 IAM 객체는 AWS 리소스를 생성 또는 수정할 수 있는 권한이 없습니다. IAM 객체에게 리소스 생성 또는 수정 및 작업 수행을 허용하려면, IAM 사용자에게 필요한 특정 리소스 및 API 작업을 사용할 권한을 부여하는 IAM 정책을 생성하고, 해당 권한을 필요로 하는 IAM 사용자 또는 그룹에게 정책을 연결해야 합니다.

사용자 또는 사용자 그룹에 정책을 연결하면 지정된 리소스에 대해 지정된 작업을 수행할 권한이 허용되거나 거부됩니다. IAM 정책에 대한 일반적 내용은 IAM 사용자 설명서에서 권한 및 정책을 참조하세요. 사용자 지정 IAM 정책 관리 및 생성에 대한 자세한 내용은 IAM 정책 관리 단원을 참조하십시오.

정책 구문

IAM 정책은 하나 이상의 문으로 구성된 JSON 문서입니다. 각 명령문의 구조는 다음과 같습니다.

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"*", "Condition":{ "condition":{ "key":"value" } } } ] }

정책 명령문은 다음 요소로 구성됩니다.

  • 효과: effectAllow 또는 Deny일 수 있습니다. 기본적으로 IAM 객체는 리소스 및 API 작업을 사용할 권한이 없으므로 모든 요청이 거부됩니다. 명시적 허용은 기본 설정을 무시합니다. 명시적 거부는 모든 허용을 무시합니다.

  • Action: action은 권한을 부여하거나 거부할 특정 API 작업입니다. AWS Data Pipeline 작업의 전체 목록을 보려면 AWS Data PipelineAPI 참조작업을 참조하세요.

  • 리소스: 작업의 영향을 받는 리소스입니다. 여기서 유일한 유효 값은 "*"입니다.

  • Condition: Condition은 선택 사항으로서 정책이 적용되는 시점을 제어하는 데 사용할 수 있습니다.

    AWS Data Pipeline은 AWS 전체 컨텍스트 키(사용 가능한 조건 키 참조)와 다음 서비스별 키를 구현합니다.

태그를 이용해 파이프라인에 대한 액세스 제어

파이프라인의 태그를 참조하는 IAM 정책을 생성할 수 있습니다. 이것을 사용하여 파이프라인 태그 지정으로 다음 작업을 수행할 수 있습니다.

  • 파이프라인에 대한 읽기 전용 액세스 권한 부여

  • 파이프라인에 대한 읽기/쓰기 액세스 권한 부여

  • 파이프라인에 대한 액세스 차단

예를 들어, 관리자에게 생산과 개발의 두 가지 파이프라인 환경이 있고 각 환경마다 IAM 그룹이 있다고 가정해봅니다. 생산 환경의 파이프라인의 경우, 관리자가 생산 IAM 그룹의 사용자에게는 읽기/쓰기 액세스 권한을 부여하고, 개발자 IAM 그룹 사용자에게는 읽기 전용 액세스 권한만 부여합니다. 개발 환경의 파이프라인의 경우, 관리자가 생산 및 개발자 IAM 그룹 사용자 모두에게는 읽기/쓰기 액세스 권한을 부여합니다.

이 시나리오를 실현하기 위해 관리자는 생산 파이프라인에 "environment=production" 태그를 지정하고, 개발자 IAM 그룹에게 다음 정책을 연결합니다. 첫 번째 명령문은 모든 파이프라인에 대한 읽기 전용 액세스 권한을 부여합니다. 두 번째 명령문은 "environment=production" 태그가 없는 파이프라인에 대한 읽기/쓰기 액세스 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*", "Condition": { "StringNotEquals": {"datapipeline:Tag/environment": "production"} } } ] }

또한, 관리자는 생산 IAM 그룹에 다음 정책을 연결합니다. 이 명령문은 모든 파이프라인에 대한 모든 액세스 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*" } ] }

자세한 예제는 Grant users read-only access based on a tagGrant users full access based on a tag를 참조하십시오.

작업자 그룹을 이용해 파이프라인에 대한 액세스 제어

작업자 그룹 이름을 참조하는 IAM 정책을 생성할 수 있습니다.

예를 들어, 관리자에게 생산과 개발의 두 가지 파이프라인 환경이 있고 각 환경마다 IAM 그룹이 있다고 가정해봅니다. 관리자는 각각 생산, 생산 전 및 개발자 환경용으로 구성된 작업 실행기가 있는 데이터베이스 서버 3개를 갖고 있습니다. 관리자는 생산 IAM 그룹 사용자가 작업을 생산 리소스로 추진하는 파이프라인을 생성할 수 있는지 그리고 개발 IAM 그룹 사용자가 작업을 생산 전 및 개발자 리소스 모두로 추진할 수 있는지 확인해야 합니다.

이 시나리오를 실현하기 위해 관리자가 생산 리소스에 생산 자격 증명을 사용하여 작업 실행기를 설치하고 workerGroup를 "prodresource"로 설정합니다. 그리고 관리자가 개발 자격 증명을 사용하여 개발 리소스에 작업 실행기를 설치하고 workerGroup을 "pre-production" 및 "development"로 설정합니다. 관리자가 개발자 IAM 그룹에 다음 정책을 연결하여 "prodresource" 리소스에 대한 액세스를 차단합니다. 첫 번째 명령문은 모든 파이프라인에 대한 읽기 전용 액세스 권한을 부여합니다. 두 번째 명령문은 작업자 그룹 이름에 접두사 "dev" 또는 "pre-prod"가 있을 때 파이프라인에 대한 읽기/쓰기 액세스 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Action": "datapipeline:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "datapipeline:workerGroup": ["dev*","pre-prod*"] } } } ] }

그리고 관리자가 생산 IAM 그룹에 다음 정책을 연결하여 "prodresource" 리소스에 대한 액세스 권한을 부여합니다. 첫 번째 명령문은 모든 파이프라인에 대한 읽기 전용 액세스 권한을 부여합니다. 두 번째 명령문은 작업자 그룹 이름에 접두사 "prod"가 있을 때 읽기/쓰기 액세스 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*", "Condition": { "StringLike": {"datapipeline:workerGroup": "prodresource*"} } } ] }