Example #1
0
 def rotate_fernet_key(self):
     fernet = get_fernet()
     if self._password and self.is_encrypted:
         self._password = fernet.rotate(
             self._password.encode('utf-8')).decode()
     if self._extra and self.is_extra_encrypted:
         self._extra = fernet.rotate(self._extra.encode('utf-8')).decode()
Example #2
0
 def rotate_fernet_key(self):
     """Encrypts data with a new key. See: :ref:`security/fernet`"""
     fernet = get_fernet()
     if self._password and self.is_encrypted:
         self._password = fernet.rotate(self._password.encode('utf-8')).decode()
     if self._extra and self.is_extra_encrypted:
         self._extra = fernet.rotate(self._extra.encode('utf-8')).decode()
Example #3
0
 def set_extra(self, value):
     if value:
         fernet = get_fernet()
         self._extra = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_extra_encrypted = fernet.is_encrypted
     else:
         self._extra = value
         self.is_extra_encrypted = False
Example #4
0
 def set_extra(self, value):
     if value:
         fernet = get_fernet()
         self._extra = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_extra_encrypted = fernet.is_encrypted
     else:
         self._extra = value
         self.is_extra_encrypted = False
Example #5
0
 def set_val(self, value):
     """
     Encode the specified value with Fernet Key and store it in Variables Table.
     """
     if value is not None:
         fernet = get_fernet()
         self._val = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_encrypted = fernet.is_encrypted
Example #6
0
 def set_val(self, value):
     if value:
         fernet = get_fernet()
         self._val = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_encrypted = fernet.is_encrypted
     else:
         self._val = None
         self.is_encrypted = False
Example #7
0
 def set_extra(self, value: str):
     """Encrypt extra-data and save in object attribute to object."""
     if value:
         fernet = get_fernet()
         self._extra = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_extra_encrypted = fernet.is_encrypted
     else:
         self._extra = value
         self.is_extra_encrypted = False
Example #8
0
 def get_password(self):
     if self._password and self.is_encrypted:
         fernet = get_fernet()
         if not fernet.is_encrypted:
             raise AirflowException(
                 "Can't decrypt encrypted password for login={}, \
                 FERNET_KEY configuration is missing".format(self.login))
         return fernet.decrypt(bytes(self._password, 'utf-8')).decode()
     else:
         return self._password
Example #9
0
 def get_extra(self):
     if self._extra and self.is_extra_encrypted:
         fernet = get_fernet()
         if not fernet.is_encrypted:
             raise AirflowException(
                 "Can't decrypt `extra` params for login={},\
                 FERNET_KEY configuration is missing".format(self.login))
         return fernet.decrypt(bytes(self._extra, 'utf-8')).decode()
     else:
         return self._extra
Example #10
0
 def get_extra(self):
     if self._extra and self.is_extra_encrypted:
         fernet = get_fernet()
         if not fernet.is_encrypted:
             raise AirflowException(
                 "Can't decrypt `extra` params for login={},\
                 FERNET_KEY configuration is missing".format(self.login))
         return fernet.decrypt(bytes(self._extra, 'utf-8')).decode()
     else:
         return self._extra
Example #11
0
 def get_password(self):
     if self._password and self.is_encrypted:
         fernet = get_fernet()
         if not fernet.is_encrypted:
             raise AirflowException(
                 "Can't decrypt encrypted password for login={}, \
                 FERNET_KEY configuration is missing".format(self.login))
         return fernet.decrypt(bytes(self._password, 'utf-8')).decode()
     else:
         return self._password
Example #12
0
 def get_extra(self) -> Dict:
     """Return encrypted extra-data."""
     if self._extra and self.is_extra_encrypted:
         fernet = get_fernet()
         if not fernet.is_encrypted:
             raise AirflowException(
                 f"Can't decrypt `extra` params for login={self.login}, "
                 f"FERNET_KEY configuration is missing")
         return fernet.decrypt(bytes(self._extra, 'utf-8')).decode()
     else:
         return self._extra
Example #13
0
 def get_password(self) -> Optional[str]:
     """Return encrypted password."""
     if self._password and self.is_encrypted:
         fernet = get_fernet()
         if not fernet.is_encrypted:
             raise AirflowException(
                 f"Can't decrypt encrypted password for login={self.login}  "
                 f"FERNET_KEY configuration is missing")
         return fernet.decrypt(bytes(self._password, 'utf-8')).decode()
     else:
         return self._password
Example #14
0
 def get_val(self):
     if self._val and self.is_encrypted:
         try:
             fernet = get_fernet()
             return fernet.decrypt(bytes(self._val, 'utf-8')).decode()
         except InvalidFernetToken:
             self.log.error("Can't decrypt _val for key=%s, invalid token or value", self.key)
             return None
         except Exception:
             self.log.error("Can't decrypt _val for key=%s, FERNET_KEY configuration missing", self.key)
             return None
     else:
         return self._val
Example #15
0
 def get_val(self):
     """Get Airflow Variable from Metadata DB and decode it using the Fernet Key"""
     if self._val is not None and self.is_encrypted:
         try:
             fernet = get_fernet()
             return fernet.decrypt(bytes(self._val, 'utf-8')).decode()
         except InvalidFernetToken:
             self.log.error("Can't decrypt _val for key=%s, invalid token or value", self.key)
             return None
         except Exception:
             self.log.error("Can't decrypt _val for key=%s, FERNET_KEY configuration missing", self.key)
             return None
     else:
         return self._val
Example #16
0
 def get_val(self):
     log = LoggingMixin().log
     if self._val and self.is_encrypted:
         try:
             fernet = get_fernet()
             return fernet.decrypt(bytes(self._val, 'utf-8')).decode()
         except InvalidFernetToken:
             log.error("Can't decrypt _val for key={}, invalid token "
                       "or value".format(self.key))
             return None
         except Exception:
             log.error("Can't decrypt _val for key={}, FERNET_KEY "
                       "configuration missing".format(self.key))
             return None
     else:
         return self._val
Example #17
0
 def get_val(self):
     log = LoggingMixin().log
     if self._val and self.is_encrypted:
         try:
             fernet = get_fernet()
             return fernet.decrypt(bytes(self._val, 'utf-8')).decode()
         except InvalidFernetToken:
             log.error("Can't decrypt _val for key={}, invalid token "
                       "or value".format(self.key))
             return None
         except Exception:
             log.error("Can't decrypt _val for key={}, FERNET_KEY "
                       "configuration missing".format(self.key))
             return None
     else:
         return self._val
Example #18
0
 def set_password(self, value):
     if value:
         fernet = get_fernet()
         self._password = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_encrypted = fernet.is_encrypted
Example #19
0
 def rotate_fernet_key(self):
     fernet = get_fernet()
     if self._password and self.is_encrypted:
         self._password = fernet.rotate(self._password.encode('utf-8')).decode()
     if self._extra and self.is_extra_encrypted:
         self._extra = fernet.rotate(self._extra.encode('utf-8')).decode()
Example #20
0
import json

from airflow import settings
from airflow.models import Variable
from airflow.models.crypto import get_fernet

fernet = get_fernet()
session = settings.Session()
vars = session.query(Variable).all()
backup = {}
for var in vars:
    parts = str(var).split(':')
    trimmed = list(map(lambda x: x.strip(), parts))
    key = trimmed[0]
    value = fernet.decrypt(bytes(str(trimmed[1:]), 'utf-8')).decode()
    backup.update({key: value})

print(json.dumps(backup))
Example #21
0
 def set_password(self, value):
     if value:
         fernet = get_fernet()
         self._password = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_encrypted = fernet.is_encrypted
Example #22
0
 def set_val(self, value):
     if value is not None:
         fernet = get_fernet()
         self._val = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_encrypted = fernet.is_encrypted
Example #23
0
 def set_password(self, value: Optional[str]):
     """Encrypt password and set in object attribute."""
     if value:
         fernet = get_fernet()
         self._password = fernet.encrypt(bytes(value, 'utf-8')).decode()
         self.is_encrypted = fernet.is_encrypted
Example #24
0
 def rotate_fernet_key(self):
     """Rotate Fernet Key"""
     fernet = get_fernet()
     if self._val and self.is_encrypted:
         self._val = fernet.rotate(self._val.encode('utf-8')).decode()
Example #25
0
 def rotate_fernet_key(self):
     fernet = get_fernet()
     if self._val and self.is_encrypted:
         self._val = fernet.rotate(self._val.encode('utf-8')).decode()