使用' run_as_user'进行气流模拟不工作

时间:2018-03-30 19:21:52

标签: python airflow

我试图让冒充工作没有成功。我按照这里的说明进行操作 - https://airflow.apache.org/security.html#impersonation

我启动了气流网络服务器,调度程序和工作人员作为sudo在' airflow'用户。此用户在sudoers文件中设置,不允许密码登录。

我创建了一个BashOperator和一个PythonOperator,其run_as_user参数设置为名为' linus'的现有用户。在服务器上。当我以#air;'登录时,我可以通过运行 sudo -u linus 来切换用户,而不会提示我输入密码。

dag = DAG('test_impersonation', default_args=args)

def print_user(**kwargs):
    print('USER:', getpass.getuser())

t1 = BashOperator(task_id='bash_task', 
                  bash_command='touch /home/linus/test.x',
                  run_as_user='linus',
                  dag=dag)

t2 = PythonOperator(task_id='py_task',
                    python_callable='print_user', 
                    run_as_user='linus',
                    dag=dag)

我正在终端中使用以下命令测试这些任务:

airflow test test_impersonation bash_task 2018-03-30
airflow test test_impersonation py_task 2018-03-30

第一个命令(BashOperator任务)失败并显示权限被拒绝,告诉我它仍然以“气流”的形式运行。用户。

第二个命令(PythonOperator任务)打印以下内容:

USER: airflow

我希望打印 USER:linus

我有什么遗漏的吗?任何帮助将不胜感激。

感谢阅读!

1 个答案:

答案 0 :(得分:0)

我不确定,但看起来sudo -u前置应用于task_runner,由执行者设置,可能运行cli run命令;虽然cli test命令仅在测试模式下调用task_instance,但这不会在sudo -u前面。