AWS Identity and Access Management(IAM) 역할 기반 권한을 사용하여 Amazon Managed Workflows for Apache Airflow(Amazon MWAA)에서 Directed Acyclic Graph(DAG)에 액세스하려고 합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
웹 서버 액세스 권한을 부여하는 사용자 지정 IAM 정책 생성
웹 서버에 IAM 사용자 또는 역할에 대한 액세스 권한을 부여하는 사용자 지정 IAM 정책을 생성하려면 기본 Apache Airflow Public 역할을 사용합니다.
다음 JSON 정책 문서를 사용하여 IAM 정책을 생성합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "airflow:CreateWebLoginToken",
"Resource": [
"arn:aws:airflow:example-region:example-account-id:role/example-environment/Public"
]
}
]
}
참고: example-region을 AWS 리전으로, example-account-id를 계정 ID로, example-environment를 환경 이름으로 바꾸십시오.
그런 다음 IAM 사용자 또는 역할에 정책을 추가합니다. IAM 역할 또는 사용자가 Apache Airflow에 한 번 이상 로그인해야 합니다.
사용자 지정 Airflow RBAC 역할 생성
다음 단계를 완료하십시오.
- 관리자 역할을 사용하여 Apache Airflow UI에 액세스합니다.
- 보안 에서 역할 나열을 선택하여 기본 Apache Airflow 역할을 확인합니다.
- 역할을 선택한 다음 역할 복사를 선택합니다.
- 사용자 테이블에서 역할을 찾은 다음 레코드 편집을 선택합니다.
- 편집 페이지에서 다음과 같이 변경합니다.
역할 이름을 유효한 값으로 업데이트합니다.
권한에서 DAG에서 읽을 수 있음 및 DAG에서 편집할 수 있음을 제거합니다.
액세스 권한을 부여하려는 DAG의 읽기 및 쓰기 권한을 추가합니다.
저장을 선택합니다.
참고: API를 사용하여 새로운 역할 기반 액세스 제어(RBAC) Airflow 역할을 만들 수도 있습니다. 자세한 내용은 GitHub 웹사이트의 amazon-mwaa-examples를 참조하십시오.
Airflow 역할 할당
다음 단계를 완료하십시오.
- Amazon MWAA 콘솔을 엽니다.
- IAM 역할을 사용하여 get-environment 명령을 실행합니다.
aws mwaa get-environment --name example-environment | jq '.Environment.WebserverUrl'
참고: example-environment를 환경 이름으로 바꾸십시오. 명령 출력에 있는 웹 서버 URL을 기록해 둡니다.
- 새 브라우저 창을 연 다음 웹 서버 URL을 입력합니다.
https://example-webserver-url/home
참고: example-webserver-URL을 웹 서버 URL로 바꾸십시오.
- 금지됨 오류가 나타나는지 확인하십시오.
참고: 필요한 권한이 없는 Airflow Public RBAC 역할로 새 역할을 할당했기 때문에 이 오류가 발생하게 됩니다.
- 관리자 역할을 사용하여 사용자 환경의 Apache Airflow UI에 액세스하십시오.
- 보안에서 사용자 나열을 선택합니다.
- 사용자 테이블에서 Apache Airflow 사용자 또는 역할을 찾은 다음 레코드 편집을 선택합니다. 사용자의 이름은 user/customUser 형식의 IAM 사용자 이름과 일치해야 합니다.
- 사용자 편집 페이지의 역할 섹션에서 역할을 추가합니다.
- 저장을 선택합니다.
IAM Public 역할은 customUser에게 Apache Airflow UI에 액세스하고 DAG를 볼 수 있는 권한을 부여합니다.