如何在气流中添加管理员用户?

时间:2019-11-13 14:27:39

标签: airflow

如何在气流中添加管理员用户?

我想使用简单的 Web身份验证。 如果我按照文档airflow.apache.ort/security中所述添加用户,则该用户不是管理员。

来自文档的代码:

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'new_user_name'
user.email = 'new_user_email@example.com'
user.password = 'set_the_password'
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()

5 个答案:

答案 0 :(得分:1)

我发现models.User()具有 superuser 属性airflow.apache.org/_modules 而我只是将该属性设置为True:

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'new_user_name'
user.email = 'new_user_email@example.com'
user.password = 'set_the_password'
user.superuser = True
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()

答案 1 :(得分:1)

如果您使用的是rbac UI,最简单的选择是运行以下命令:

airflow create_user  --role Admin --username admin --email admin --firstname admin --lastname admin --password admin

答案 2 :(得分:1)

也不要忘记在运行添加用户脚本时设置AIRFLOW_HOME变量,否则它将创建用户进入sqlite数据库,而不是实际的数据库

add_user.py

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'admin'
user.email = 'admin@company.com'
user.password = 'pw123'
user.superuser = True
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()

创建用户

export AIRFLOW_HOME=/path/to/your/airflow

source venv/bin/activate

(airflow) python add_user.py

答案 3 :(得分:0)

如果有人正在寻找一种易于理解的方式,那么事情就来了。

激活您的气流python环境并启动python shell。然后,借助这些命令,您可以轻松地在气流中设置新用户。

>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'new_user_name'
>>> user.email = 'new_user_email@example.com'
>>> user.password = 'set_the_password'
>>> user.superuser = True
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()

答案 4 :(得分:0)

使用以下命令根据 Apache 气流的最新文档创建管理员用户

$ airflow users create -e EMAIL -f firstname -l lastname -p password -r Admin -u username

Apache 气流文档 link