我试图让冒充工作没有成功。我按照这里的说明进行操作 - 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
我有什么遗漏的吗?任何帮助将不胜感激。
感谢阅读!
答案 0 :(得分:0)
我不确定,但看起来sudo -u
前置应用于task_runner
,由执行者设置,可能运行cli run命令;虽然cli test
命令仅在测试模式下调用task_instance
,但这不会在sudo -u
前面。