You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@superset.apache.org by GitBox <gi...@apache.org> on 2017/10/27 11:54:30 UTC

[GitHub] andor-pierdelacabeza commented on issue #3724: SECRET_KEY encrypts database secrets without warning, possibly breaking web interface if changed

andor-pierdelacabeza commented on issue #3724: SECRET_KEY encrypts database secrets without warning, possibly breaking web interface if changed
URL: https://github.com/apache/incubator-superset/issues/3724#issuecomment-339950938
 
 
   I take a working superset 0.20.4 install, change the secret, then enter a Dashboard, and I get this:
   ```
           Traceback (most recent call last):
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy_utils/types/encrypted.py", line 98, in decrypt
       decrypted = decrypted.decode('utf-8')
   UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa5 in position 0: invalid start byte
   
   During handling of the above exception, another exception occurred:
   
   Traceback (most recent call last):
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1982, in wsgi_app
       response = self.full_dispatch_request()
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1614, in full_dispatch_request
       rv = self.handle_user_exception(e)
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1517, in handle_user_exception
       reraise(exc_type, exc_value, tb)
     File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise
       raise value
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1612, in full_dispatch_request
       rv = self.dispatch_request()
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1598, in dispatch_request
       return self.view_functions[rule.endpoint](**req.view_args)
     File "/usr/local/lib/python3.5/dist-packages/superset/utils.py", line 601, in wraps
       return f(self, *args, **kwargs)
     File "/usr/local/lib/python3.5/dist-packages/superset/views/core.py", line 1733, in dashboard
       if datasource and not self.datasource_access(datasource):
     File "/usr/local/lib/python3.5/dist-packages/superset/views/base.py", line 99, in datasource_access
       self.schema_access(datasource, user=user) or
     File "/usr/local/lib/python3.5/dist-packages/superset/views/base.py", line 92, in schema_access
       self.database_access(datasource.database, user=user) or
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/attributes.py", line 237, in __get__
       return self.impl.get(instance_state(instance), dict_)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/attributes.py", line 584, in get
       value = self.callable_(state, passive)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/strategies.py", line 557, in _load_for_state
       return self._emit_lazyload(session, state, ident_key, passive)
     File "<string>", line 1, in <lambda>
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/strategies.py", line 603, in _emit_lazyload
       return loading.load_on_ident(q, ident_key)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 223, in load_on_ident
       return q.one()
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/query.py", line 2814, in one
       ret = self.one_or_none()
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/query.py", line 2784, in one_or_none
       ret = list(self)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 90, in instances
       util.raise_from_cause(err)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
       reraise(type(exception), exception, tb=exc_tb, cause=cause)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/compat.py", line 187, in reraise
       raise value
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 75, in instances
       rows = [proc(row) for row in fetch]
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 75, in <listcomp>
       rows = [proc(row) for row in fetch]
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 437, in _instance
       loaded_instance, populate_existing, populators)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 498, in _populate_full
       dict_[key] = getter(row)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/sql/type_api.py", line 1122, in process
       return process_value(impl_processor(value), dialect)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy_utils/types/encrypted.py", line 272, in process_result_value
       decrypted_value = self.engine.decrypt(value)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy_utils/types/encrypted.py", line 100, in decrypt
       raise ValueError('Invalid decryption key')
   ValueError: Invalid decryption key
   ```
   
   Then, if I enter the `Sources/Databases` menu to overwrite/rewrite the passwords, I get this:
   ```
           Traceback (most recent call last):
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy_utils/types/encrypted.py", line 98, in decrypt
       decrypted = decrypted.decode('utf-8')
   UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa5 in position 0: invalid start byte
   
   During handling of the above exception, another exception occurred:
   
   Traceback (most recent call last):
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1982, in wsgi_app
       response = self.full_dispatch_request()
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1614, in full_dispatch_request
       rv = self.handle_user_exception(e)
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1517, in handle_user_exception
       reraise(exc_type, exc_value, tb)
     File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise
       raise value
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1612, in full_dispatch_request
       rv = self.dispatch_request()
     File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1598, in dispatch_request
       return self.view_functions[rule.endpoint](**req.view_args)
     File "/usr/local/lib/python3.5/dist-packages/flask_appbuilder/security/decorators.py", line 26, in wraps
       return f(self, *args, **kwargs)
     File "/usr/local/lib/python3.5/dist-packages/flask_appbuilder/views.py", line 475, in list
       widgets = self._list()
     File "/usr/local/lib/python3.5/dist-packages/flask_appbuilder/baseviews.py", line 877, in _list
       page_size=page_size)
     File "/usr/local/lib/python3.5/dist-packages/flask_appbuilder/baseviews.py", line 791, in _get_list_widget
       count, lst = self.datamodel.query(joined_filters, order_column, order_direction, page=page, page_size=page_size)
     File "/usr/local/lib/python3.5/dist-packages/flask_appbuilder/models/sqla/interface.py", line 118, in query
       return count, query.all()
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/query.py", line 2703, in all
       return list(self)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 90, in instances
       util.raise_from_cause(err)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
       reraise(type(exception), exception, tb=exc_tb, cause=cause)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/util/compat.py", line 187, in reraise
       raise value
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 75, in instances
       rows = [proc(row) for row in fetch]
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 75, in <listcomp>
       rows = [proc(row) for row in fetch]
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 437, in _instance
       loaded_instance, populate_existing, populators)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/loading.py", line 498, in _populate_full
       dict_[key] = getter(row)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/sql/type_api.py", line 1122, in process
       return process_value(impl_processor(value), dialect)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy_utils/types/encrypted.py", line 272, in process_result_value
       decrypted_value = self.engine.decrypt(value)
     File "/usr/local/lib/python3.5/dist-packages/sqlalchemy_utils/types/encrypted.py", line 100, in decrypt
       raise ValueError('Invalid decryption key')
   ValueError: Invalid decryption key
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services