AWS Secrets Manager 암호를 사용하여 Apache Airflow 연결 구성
AWS Secrets Manager은(는) Amazon Managed Workflow for Apache Airflow 환경에서 지원되는 대체 Apache Airflow 백엔드입니다. 이 가이드에서는 AWS Secrets Manager을(를) 사용하여 Amazon Managed Workflows for Apache Airflow에서 Apache Airflow 변수 및 Apache Airflow 연결에 대한 암호를 안전하게 저장하는 방법을 설명합니다.
참고
-
생성한 암호에 대해 요금이 부과됩니다. Secrets Manager 요금에 대한 자세한 내용은 AWS요금
을 참조하십시오. -
AWS Systems Manager Parameter Store는 Amazon MWAA에서 보안 암호 백엔드로도 지원됩니다. 자세한 내용은 Amazon 공급자 패키지 설명서
를 참조하세요.
목차
1단계: Amazon MWAA에 Secrets Manager 암호 키에 액세스할 수 있는 권한을 제공합니다.
Amazon MWAA 환경의 실행 역할에는 AWS Secrets Manager의 암호 키를 읽을 수 있는 권한이 필요합니다. 다음 IAM 정책은 AWS 관리형 SecretsManagerReadWrite
실행 역할에 정책을 연결하려면
-
Amazon MWAA 콘솔에서 환경 페이지
를 엽니다. -
환경을 선택합니다.
-
권한 창에서 실행 역할을 선택합니다.
-
정책 연결을 선택합니다.
-
정책 필터링 텍스트 필드에
SecretsManagerReadWrite
을(를) 입력합니다. -
정책 연결을 선택합니다.
AWS 관리형 권한 정책을 사용하지 않으려면 환경의 실행 역할을 직접 업데이트하여 Secrets Manager 리소스에 대한 모든 수준의 액세스를 허용할 수 있습니다. 예를 들어 다음 정책 설명은 Secrets Manager에서 특정 AWS 리전에 생성한 모든 암호에 대한 읽기 액세스 권한을 부여합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:012345678910:secret:*" }, { "Effect": "Allow", "Action": "secretsmanager:ListSecrets", "Resource": "*" } ] }
2단계: Secrets Manager 백엔드를 Apache Airflow 구성 옵션으로 생성
다음 섹션에서는 Amazon MWAA 콘솔에서 AWS Secrets Manager 백엔드용 Apache Airflow 구성 옵션을 생성하는 방법을 설명합니다. airflow.cfg
에서 동일한 이름의 구성 설정을 사용하는 경우 다음 단계에서 생성하는 구성이 우선하며 구성 설정을 재정의합니다.
-
Amazon MWAA 콘솔에서 환경 페이지
를 엽니다. -
환경을 선택합니다.
-
편집을 선택합니다.
-
다음을 선택합니다.
-
Airflow 구성 옵션 창에서 사용자 지정 구성 추가를 선택합니다. 다음 키-값 페어를 추가합니다:
-
:secrets.backend
airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
-
:secrets.backend_kwargs
이렇게 하면 Apache Airflow가{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}
airflow/connections/*
및airflow/variables/*
경로에서 연결 문자열과 변수를 찾도록 구성됩니다.조회 패턴
을 사용하면 Amazon MWAA가 사용자를 대신하여 Secrets Manager에 보내는 API 호출 횟수를 줄일 수 있습니다. 조회 패턴을 지정하지 않으면 Apache Airflow는 구성된 백엔드에서 모든 연결과 변수를 검색합니다. 패턴을 지정하면 Apache Airflow가 찾는 가능한 경로를 좁힐 수 있습니다. 따라서 Secrets Manager를 Amazon MWAA와 함께 사용할 때 비용이 절감됩니다. 조회 패턴을 지정하려면
connections_lookup_pattern
및variables_lookup_pattern
파라미터를 지정합니다. 이러한 파라미터는 RegEx 문자열을 입력으로 받아들입니다. 예를 들어test
(으)로 시작하는 암호를 찾으려면secrets.backend_kwargs
에 다음을 입력합니다.{ "connections_prefix": "airflow/connections", "connections_lookup_pattern": "^test", "variables_prefix" : "airflow/variables", "variables_lookup_pattern": "^test" }
참고
connections_lookup_pattern
및variables_lookup_pattern
을(를) 사용하려면apache-airflow-providers-amazon
버전 7.3.0 이상을 설치해야 합니다. Provider 패키지를 최신 버전으로 업데이트하는 방법에 대한 자세한 내용은 새 제공자 패키지 지정 섹션을 참조하십시오.
-
-
Save(저장)를 선택합니다.
3단계: Apache Airflow AWS 연결 URI 문자열 생성
연결 문자열을 만들려면 키보드의 ‘tab’ 키를 사용하여 Connectionextra
객체에 대한 변수를 만드는 것이 좋습니다. 다음 섹션에서는 Apache Airflow 또는 Python 스크립트를 사용하여 Amazon MWAA 환경을 위한 Apache Airflow 연결 URI 문자열을 생성
4단계: Secrets Manager에서 변수 추가
다음 섹션에서는 Secrets Manager에서 변수에 대한 암호를 생성하는 방법을 설명합니다.
암호를 생성하려면
-
AWS Secrets Manager 콘솔
을 엽니다. -
새 암호 저장을 선택합니다.
-
다른 유형의 암호를 선택합니다.
-
이 암호에 저장할 키/값 페어 지정 창에서 일반 텍스트를 선택합니다.
-
변수 값을 다음 형식의 일반 텍스트로 추가합니다.
"
YOUR_VARIABLE_VALUE
"예를 들어, 정수를 지정하려면:
14
예를 들어 문자열을 지정하려면:
"mystring"
-
암호화 키의 경우 드롭다운 목록에서 AWS KMS 키 옵션을 선택합니다.
-
암호 이름의 텍스트 필드에 다음 형식으로 이름을 입력합니다.
airflow/variables/
YOUR_VARIABLE_NAME
예:
airflow/variables/test-variable
-
다음을 선택합니다.
-
암호 구성 페이지의 암호 이름 및 설명 창에서 다음을 수행합니다.
-
암호 이름에 암호 이름을 입력합니다.
-
(선택 사항) 설명에 암호에 대한 설명을 입력합니다.
다음을 선택합니다.
-
-
순환 구성 - 옵션에서 기본 옵션을 그대로 두고 다음을 선택합니다.
-
Secrets Manager에서 이 단계를 반복하여 원하는 만큼 변수를 추가합니다.
-
검토 페이지에서 암호를 검토한 후 저장을 선택합니다.
5단계: Secrets Manager에서 연결 추가
다음 섹션에서는 Secrets Manager에서 연결 문자열 URI에 대한 암호를 생성하는 방법을 설명합니다.
암호를 생성하려면
-
AWS Secrets Manager 콘솔
을 엽니다. -
새 암호 저장을 선택합니다.
-
다른 유형의 암호를 선택합니다.
-
이 암호에 저장할 키/값 페어 지정 창에서 일반 텍스트를 선택합니다.
-
연결 URI 문자열을 다음 형식의 일반 텍스트로 추가합니다.
YOUR_CONNECTION_URI_STRING
예:
mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA®ion_name=us-east-1
주의
Apache Airflow는 연결 문자열의 각 값을 구문 분석합니다. 작은따옴표나 큰따옴표를 사용해서는 안 됩니다. 그렇지 않으면 연결을 단일 문자열로 구문 분석합니다.
-
암호화 키의 경우 드롭다운 목록에서 AWS KMS 키 옵션을 선택합니다.
-
암호 이름의 텍스트 필드에 다음 형식으로 이름을 입력합니다.
airflow/connections/
YOUR_CONNECTION_NAME
예:
airflow/connections/myconn
-
다음을 선택합니다.
-
암호 구성 페이지의 암호 이름 및 설명 창에서 다음을 수행합니다.
-
암호 이름에 암호 이름을 입력합니다.
-
(선택 사항) 설명에 암호에 대한 설명을 입력합니다.
다음을 선택합니다.
-
-
순환 구성 - 옵션에서 기본 옵션을 그대로 두고 다음을 선택합니다.
-
Secrets Manager에서 이 단계를 반복하여 원하는 만큼 변수를 추가합니다.
-
검토 페이지에서 암호를 검토한 후 저장을 선택합니다.
샘플 코드
-
Apache Airflow 연결을 위한 AWS Secrets Manager의 암호 키 사용의 샘플 코드를 사용하여 이 페이지의 Apache Airflow 연결(
myconn
)에 암호 키를 사용하는 방법을 알아봅니다. -
test-variable
의 샘플 코드를 사용하여 이 페이지의 Apache Airflow 변수(Apache Airflow 변수에 AWS Secrets Manager 암호 키 사용)에 암호 키를 사용하는 방법을 알아봅니다.
리소스
-
콘솔 및 AWS CLI를 사용하여 Secrets Manager 암호를 구성하는 방법에 대한 자세한 내용은 AWS Secrets Manager 사용 설명서에서 암호 생성을 참조하십시오.
-
Apache Airflow 연결 및 변수를 AWS Secrets Manager으로 이동
에서 Python 스크립트를 사용하여 대량의 Apache Airflow 변수 및 연결을 Secrets Manager로 마이그레이션합니다.
다음 단계
-
Apache Airflow에 액세스에서 Apache Airflow UI에 액세스하기 위한 토큰을 생성하는 방법을 알아봅니다.