首页 文章

如何隐藏/屏蔽气流连接和变量部分的敏感数据?

提问于
浏览
3

我们在apache气流中有许多AWS连接字符串,任何人都可以在气流网络服务器连接部分看到我们的访问密钥和密钥 . 如何隐藏或屏蔽气流网络服务器中的敏感数据?

enter image description here

我们已经在气流配置中启用了身份验证,因此不允许未经授权的用户 . 但我不想在网页视图中显示我的密钥 .

3 回答

  • 0

    我找到了这个用例的解决方法 . 气流AWSHook中有一个选项,我们可以在连接字符串中传递密钥路径而不是密钥和访问密钥 .

    enter image description here

    / root / keys / aws_keys

    [default]
    aws_access_key_id=<access key>
    aws_secret_access_key=<secret key>
    region=<region>
    
    [s3_prod]
    aws_access_key_id=<access key>
    aws_secret_access_key=<secret key>
    region=<region>
    

    这个怎么运作?首先,它将检查连接字符串中的额外参数,以便添加任何aws键,否则它将检查密钥路径(s3_config_file) . 如果两个选项都不可用,那么它将从boto.cfg文件中查找凭据 . 所以现在不需要在UI中显式公开任何键:)

  • 0

    LDAP身份验证模块可以为将成为管理员的组指定基于组的筛选器,并且能够查看该菜单,其余部分 .

    the documentation under security .

    superuser_filter和data_profiler_filter是可选的 . 如果已定义,则这些配置允许您指定用户必须属于的LDAP组,以便拥有超级用户(admin)和数据分析器权限 . 如果未定义,则所有用户都将成为超级用户和数据分析器 .

    请注意,数据分析器可以在任何已定义的连接上运行adhoc查询 . 然而,他们无法看到管理员菜单 . 您可能不希望一组用户能够执行任意SQL或其他任何操作,因此也设置该过滤器 .

    任何用户都可以在他们的DAG和任务中请求任何变量 . 将这些变量放在将在日志中显示的位置很容易 .

    数据库提供了一种以加密方式存储连接密码和变量值的方法,但这并不能解决您的所有问题 .

  • 1

    我使用它和密码框作为连接信息,这里是AWS Hook的source code的片段:

    if self.aws_conn_id:
            try:
                connection_object = self.get_connection(self.aws_conn_id)
                if connection_object.login:
                    aws_access_key_id = connection_object.login
                    aws_secret_access_key = connection_object.password
    
                elif 'aws_secret_access_key' in connection_object.extra_dejson:
                    aws_access_key_id = connection_object.extra_dejson['aws_access_key_id']
                    aws_secret_access_key = connection_object.extra_dejson['aws_secret_access_key']
    
                elif 's3_config_file' in connection_object.extra_dejson:
                    aws_access_key_id, aws_secret_access_key = \
                        _parse_s3_config(connection_object.extra_dejson['s3_config_file'],
                                         connection_object.extra_dejson.get('s3_config_format'))
    

    我还发现你需要在Airflow 1.9的AWSHook的"Extra"框中指定 region_name ,否则它将无效 .

相关问题