Fernet

Fernet

Airflow는 connection 설정과 variable 설정에 담긴 비밀번호를 암호화하기 위해 Fernet을 사용해요. Fernet으로 암호화된 비밀번호는 키 없이는 조작하거나 읽을 수 없다는 점을 보장해 준답니다. Fernet은 대칭(비밀 키) 인증 암호화 방식의 구현이에요.

출처: 문서

본문

Airflow는 connection 설정과 variable 설정의 비밀번호를 암호화하기 위해 Fernet을 사용해요. Fernet은 암호화된 비밀번호가 키 없이는 조작되거나 읽힐 수 없음을 보장해요. Fernet은 대칭(일명 "secret key") 인증 암호화의 구현이에요.

Airflow를 처음 시작하면 기본 설정과 함께 고유한 Fernet 키가 담긴 airflow.cfg 파일이 생성돼요. 키는 [core] 섹션의 fernet_key 옵션에 저장돼요.

환경 변수를 이용해 fernet 키를 설정할 수도 있어요. 이 값은 airflow.cfg 파일의 값을 덮어쓰게 돼요.

# 밑줄이 두 개라는 점에 주의하세요
export AIRFLOW__CORE__FERNET_KEY=your_fernet_key

Fernet 키 생성하기

새로운 fernet 키가 필요하다면 다음 코드 조각을 사용하면 돼요.

from cryptography.fernet import Fernet

fernet_key = Fernet.generate_key()
print(fernet_key.decode())  # your fernet_key, keep it in secured place!

암호화 키 교체하기 (Rotating encryption keys)

connection 자격 증명과 variable이 fernet 키로 암호화된 후에는, 키를 바꾸면 기존 자격 증명의 복호화가 실패하게 돼요. 기존 암호화된 값을 무효화하지 않고 fernet 키를 교체하려면, 새 키를 fernet_key 설정 앞에 붙이고 airflow rotate-fernet-key를 실행한 다음 원래 키를 fernet_key에서 제거하면 돼요:

  1. fernet_keynew_fernet_key,old_fernet_key로 설정해요
  2. airflow rotate-fernet-key를 실행해서 기존 자격 증명을 새 fernet 키로 다시 암호화해요
  3. fernet_keynew_fernet_key로 설정해요

더 알아보기 (Learn more)