'run_as_user' 的气流模拟不工作
Airflow Impersonation with 'run_as_user' Not Working
我正在尝试让模拟工作但没有成功。我按照此处的说明进行操作 - https://airflow.apache.org/security.html#impersonation
我在 'airflow' 用户下以 sudo 运行 启动了 airflow 网络服务器、调度程序和工作程序。该用户在 sudoers 文件中设置为允许无密码登录。
我创建了一个 BashOperator 和一个 PythonOperator,其中 run_as_user 参数设置为服务器上名为 'linus' 的现有用户。当我以 'airflow' 身份登录时,我可以通过 运行 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 任务)失败并出现权限被拒绝错误,告诉我它仍然是 运行 作为 'airflow' 用户。
第二个命令(PythonOperator 任务)打印以下内容:
USER: airflow
我希望这会打印 USER: linus
有什么我遗漏的吗?任何帮助将不胜感激。
感谢阅读!
我不太确定,但看起来 sudo -u
前缀应用在 task_runner
中,它由执行程序设置,并且可能 运行s cli 运行 命令;而 cli test
命令仅在测试模式下调用 task_instance
上的 运行,并且不会在 sudo -u
.
之前添加
我正在尝试让模拟工作但没有成功。我按照此处的说明进行操作 - https://airflow.apache.org/security.html#impersonation
我在 'airflow' 用户下以 sudo 运行 启动了 airflow 网络服务器、调度程序和工作程序。该用户在 sudoers 文件中设置为允许无密码登录。
我创建了一个 BashOperator 和一个 PythonOperator,其中 run_as_user 参数设置为服务器上名为 'linus' 的现有用户。当我以 'airflow' 身份登录时,我可以通过 运行 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 任务)失败并出现权限被拒绝错误,告诉我它仍然是 运行 作为 'airflow' 用户。
第二个命令(PythonOperator 任务)打印以下内容:
USER: airflow
我希望这会打印 USER: linus
有什么我遗漏的吗?任何帮助将不胜感激。
感谢阅读!
我不太确定,但看起来 sudo -u
前缀应用在 task_runner
中,它由执行程序设置,并且可能 运行s cli 运行 命令;而 cli test
命令仅在测试模式下调用 task_instance
上的 运行,并且不会在 sudo -u
.