Exemplo n.º 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()
Exemplo n.º 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()
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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()
Exemplo n.º 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))
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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()
Exemplo n.º 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()