Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
airflow-doc-zh
提交
d4fa6e65
A
airflow-doc-zh
项目概览
OpenDocCN
/
airflow-doc-zh
10 个月 前同步成功
通知
3
Star
208
Fork
63
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
airflow-doc-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d4fa6e65
编写于
3月 21, 2019
作者:
T
tssujt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Initial Secure section.
上级
12eec16e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
123 addition
and
123 deletion
+123
-123
zh/24.md
zh/24.md
+1
-1
zh/25.md
zh/25.md
+122
-122
未找到文件。
zh/24.md
浏览文件 @
d4fa6e65
...
...
@@ -155,4 +155,4 @@ class AirflowTestPlugin(AirflowPlugin):
## 注意基于角色的视图
Airflow 1.10使用FlaskAppBuilder引入了基于角色的视图。您可以通过设置rbac = True来配置使用的UI。为了支持两个版本的UI的插件视图和链接
并
保持向后兼容性,请将字段appbuilder_views和appbuilder_menu_items添加到AirflowTestPlugin类中。
Airflow 1.10使用FlaskAppBuilder引入了基于角色的视图。您可以通过设置rbac = True来配置使用的UI。为了支持两个版本的UI的插件视图和链接
以
保持向后兼容性,请将字段appbuilder_views和appbuilder_menu_items添加到AirflowTestPlugin类中。
zh/25.md
浏览文件 @
d4fa6e65
# 安全
默认情况下,所有门都
打开。 限制对Web应用程序的访问的一种简单方法是在网络级别或使用SSH隧道执行此操作
。
默认情况下,所有门都
是打开的。限制对Web应用程序的访问的一种简单方法是在网络级别执行此操作,比如使用SSH隧道
。
但
是,可以通过使用其中一个提供的后端或创建自己的
后端来打开身份验证。
但
也可以通过使用其中一个已提供的认证后端或创建自己的认证
后端来打开身份验证。
请务必查看
[
Experimental Rest API
](
api.html
)
以保护API。
请务必查看
[
Experimental Rest API
](
zh/27.md
)
以保护API。
## Web身份验证
### 密码
最简单的身份验证机制之一是要求用户在登录前
指定密码。密码身份验证需要在需求文件中使用
`password`
子包。 密码哈希在存储密码之前使用bcrypt
。
最简单的身份验证机制之一是要求用户在登录前
输入密码。密码身份验证需要在requirements文件中使用
`password`
子扩展包。它在存储密码之前使用了bcrypt扩展包来对密码进行哈希
。
```
py
[
webserver
]
```
[webserver
]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth
```
启用密码身份验证后,需要先创建初始用户凭据,然后才能登录
任何人。 未在此身份验证后端的迁移中创建初始用户,以防止默认Airflow安装受到攻击。 必须通过安装Airflow的同一台机器上的Python REPL
创建新用户。
启用密码身份验证后,需要先创建初始用户凭据,然后才能登录
其他人。未在此身份验证后端的迁移中创建初始用户,以防止默认Airflow安装受到攻击。必须通过安装Airflow的同一台机器上的Python REPL来
创建新用户。
```
py
# navigate to the airflow installation directory
# navigate to the airflow installation directory
$
cd
~/
airflow
$
python
Python
2
.
7.9
(
default
,
Feb
10
2015
,
03
:
28
:
08
)
Type
"help"
,
"copyright"
,
"credits"
or
"license"
for
more
information
.
Python
2
.7
.
9
(
default
,
Feb
10
2015
,
03
:
28
:
08
)
Type
"help"
,
"copyright"
,
"credits"
or
"license"
for
more
information
.
>>>
import
airflow
>>>
from
airflow
import
models
,
settings
>>>
from
airflow.contrib.auth.backends.password_auth
import
PasswordUser
>>>
user
=
PasswordUser
(
models
.
User
())
>>>
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
()
>>>
session
=
settings
.
Session
()
>>>
session
.
add
(
user
)
>>>
session
.
commit
()
>>>
session
.
close
()
>>>
exit
()
```
### LDAP
要打开LDAP身份验证,请按如下方式配置
`airflow.cfg`
。
请注意,该示例使用与ldap服务器的加密连接,因为您可能不希望密码在网络级别上可读。 但是,如果您真的想要,可以在不加密的情况下进行配置。
要打开LDAP身份验证,请按如下方式配置
`airflow.cfg`
。
请注意,该示例使用与ldap服务器的加密连接,因为您可能不希望密码在网络级别上可读。 但是,如果您真的想要,可以在不加密的情况下进行配置。
此外,如果您使用的是Active Directory,并且没有明确指定用户所在的OU,则需要将
`search_scope`
更改为“SUBTREE”。
有效的search_scope选项可以在
[
ldap3文档中
](
http://ldap3.readthedocs.org/searches.html%3Fhighlight%3Dsearch_scope
)
找到
有效的search_scope选项可以在
[
ldap3文档中
](
http
s
://ldap3.readthedocs.org/searches.html%3Fhighlight%3Dsearch_scope
)
找到
```
py
[
webserver
]
```
[webserver
]
authenticate = True
auth_backend = airflow.contrib.auth.backends.ldap_auth
[
ldap
]
[
ldap
]
# set a connection without encryption: uri = ldap://<your.ldap.server>:<port>
uri = ldaps://<your.ldap.server>:<port>
user_filter
=
objectClass
=
*
user_filter = objectClass
=
*
# in case of Active Directory you would use: user_name_attr = sAMAccountName
user_name_attr = uid
# group_member_attr should be set accordingly with *_filter
...
...
@@ -66,92 +64,87 @@ user_name_attr = uid
# group_member_attr = groupMembership
# superuser_filter = groupMembership=CN=airflow-super-users...
group_member_attr = memberOf
superuser_filter
=
memberOf
=
CN
=
airflow
-
super
-
users
,
OU
=
Groups
,
OU
=
RWC
,
OU
=
US
,
OU
=
NORAM
,
DC
=
example
,
DC
=
com
data_profiler_filter
=
memberOf
=
CN
=
airflow
-
data
-
profilers
,
OU
=
Groups
,
OU
=
RWC
,
OU
=
US
,
OU
=
NORAM
,
DC
=
example
,
DC
=
com
bind_user
=
cn
=
Manager
,
dc
=
example
,
dc
=
com
superuser_filter = memberOf
=CN=airflow-super-users,OU=Groups,OU=RWC,OU=US,OU=NORAM,DC=example,DC=
com
data_profiler_filter = memberOf
=CN=airflow-data-profilers,OU=Groups,OU=RWC,OU=US,OU=NORAM,DC=example,DC=
com
bind_user = cn
=Manager,dc=example,dc=
com
bind_password = insecure
basedn
=
dc
=
example
,
dc
=
com
basedn = dc
=example,dc=
com
cacert = /etc/ca/ldap_ca.crt
# Set search_scope to one of them:
BASE, LEVEL
, SUBTREE
# Set search_scope to one of them:
BASE, LEVEL
, SUBTREE
# Set search_scope to SUBTREE if using Active Directory, and not specifying an Organizational Unit
search_scope = LEVEL
```
superuser_filter和data_profiler_filter是可选的。
如果已定义,则这些配置允许您指定用户必须属于的LDAP组,以便拥有超级用户(admin)和数据分析器权限。 如果未定义,则所有用户都将成为超级用户和数据分析器
。
superuser_filter和data_profiler_filter是可选的。
如果已定义,则这些配置允许您指定用户必须属于的LDAP组,以便拥有超级用户(admin)和数据分析权限。如果未定义,则所有用户都将成为超级用户和拥有数据分析的权限
。
###
滚动你自己
###
创建自定义
Airflow使用
`flask_login`
并在
`airflow.default_login`
模块中公开一组挂钩。 您可以更改内容并使其成为
`PYTHONPATH`
一部分,并将其配置为
`airflow.cfg`
的
后端。
Airflow使用
了
`flask_login`
扩展包并在
`airflow.default_login`
模块中公开了一组钩子。您可以更改内容并使其成为
`PYTHONPATH`
一部分,并将其配置为
`airflow.cfg`
的认证
后端。
```
py
[
webserver
]
```
[webserver
]
authenticate = True
auth_backend = mypackage.auth
```
## 多租户
通过在配置中设置
`webserver:filter_by_owner`
,可以在启用身份验证时按所有者名称筛选
`webserver:filter_by_owner`
。 有了这个,用户将只看到它所有者的dags,除非它
是超级用户。
通过在配置中设置
`webserver:filter_by_owner`
,可以在启用身份验证时按所有者名称筛选
`webserver:filter_by_owner`
。有了这个,用户将只看到他所有者的dags,除非他
是超级用户。
```
py
[
webserver
]
```
[webserver
]
filter_by_owner = True
```
## Kerberos
的
## Kerberos
Airflow
最初支持Kerberos。 这意味着气流可以为自己更新kerberos票证并将其存储在票证缓存中。 钩子和匕首
可以使用票证来验证kerberized服务。
Airflow
天然支持Kerberos。这意味着Airflow可以为自己更新kerberos票证并将其存储在票证缓存中。钩子和dags
可以使用票证来验证kerberized服务。
### 限制
请注意,此时并未调整所有
挂钩以使用此功能。
此外,它没有将kerberos集成到Web界面中,您现在必须依赖网络级安全性来确保您的服务保持安全。
请注意,此时并未调整所有
钩子以使用此功能。
此外,它没有将kerberos集成到Web界面中,您现在必须依赖网络级安全性来确保您的服务保持安全。
Celery集成尚未经过试用和测试。 但是,如果您为每个主机生成一个
密钥选项卡,并在每个工作人员旁边启动一个故障单续订器
,那么它很可能会起作用。
Celery集成尚未经过试用和测试。 但是,如果您为每个主机生成一个
key tab,并在每个Worker旁边启动一个ticket renewer
,那么它很可能会起作用。
### 启用kerberos
####
空气流动
####
Airflow
要启用kerberos,您需要生成(服务)
密钥选项卡
。
要启用kerberos,您需要生成(服务)
key tab
。
```
py
# in the kadmin.local or kadmin shell, create the airflow principal
# in the kadmin.local or kadmin shell, create the airflow principal
kadmin
:
addprinc
-
randkey
airflow
/
fully
.
qualified
.
domain
.
name
@
YOUR
-
REALM
.
COM
# Create the airflow keytab file that will contain the airflow principal
kadmin
:
xst
-
norandkey
-
k
airflow
.
keytab
airflow
/
fully
.
qualified
.
domain
.
name
```
现在将此文件存储在
气流用户可以读取的位置(chmod 600)。
然后将以下内容添加到
`airflow.cfg`
现在将此文件存储在
airflow用户可以读取的位置(chmod 600)。
然后将以下内容添加到
`airflow.cfg`
```
py
[
core
]
```
[core
]
security = kerberos
[
kerberos
]
[
kerberos
]
keytab = /etc/airflow/airflow.keytab
reinit_frequency = 3600
principal = airflow
```
启动
票证续订
启动
ticket renewer
```
py
# run ticket renewer
```
sh
# run ticket renewer
airflow kerberos
```
#### Hadoop
的
#### Hadoop
如果要使用模拟,则需要在hadoop配置的
`core-site.xml`
中启用。
```
py
```
<property>
<name>hadoop.proxyuser.airflow.groups</name>
<value>*</value>
...
...
@@ -173,54 +166,51 @@ airflow kerberos
### 使用kerberos身份验证
已更新配置单元挂钩以利用kerberos身份验证。 要允许DAG使用它,只需更新连接详细信息,例如:
```
py
{
"use_beeline"
:
true
,
"principal"
:
"hive/_HOST@EXAMPLE.COM"
}
已更新Hive钩子以利用kerberos身份验证。要允许DAG使用它,只需更新连接详细信息,例如:
```
{"use_beeline": true, "principal": "hive/_HOST@EXAMPLE.COM"}
```
根据您的设置调整主体。 _HOST部分将替换为服务器的完全限定域名。
您可以指定是否要将dag所有者用作连接的用户或连接的登录部分中指定的用户。 对于登录用户,请将以下内容指定为额外:
```
py
{
"use_beeline"
:
true
,
"principal"
:
"hive/_HOST@EXAMPLE.COM"
,
"proxy_user"
:
"login"
}
请根据您的设置进行调整。_HOST部分将替换为服务器的完全限定域名。
您可以指定是否要将dag所有者用作连接的用户或连接的登录部分中指定的用户。对于登录用户,请将以下内容指定为额外:
```
{"use_beeline": true, "principal": "hive/_HOST@EXAMPLE.COM", "proxy_user": "login"}
```
对于DAG所有者使用:
```
py
{
"use_beeline"
:
true
,
"principal"
:
"hive/_HOST@EXAMPLE.COM"
,
"proxy_user"
:
"owner"
}
```
{"use_beeline": true, "principal": "hive/_HOST@EXAMPLE.COM", "proxy_user": "owner"}
```
在DAG中,初始化HiveOperator时,请指定:
```
run_as_owner = True
```
```
py
run_as_owner
=
True
为了使用kerberos认证,请务必在安装Airflow时添加kerberos子扩展包:
```
pip install airflow[kerberos]
```
## OAuth
身份验
证
## OAuth
认
证
### GitHub Enterprise(GHE)
身份验
证
### GitHub Enterprise(GHE)
认
证
GitHub Enterprise
身份验证后端可用于对使用OAuth2安装GitHub Enterprise的用户进行身份验证。 您可以选择指定团队白名单(由slug cased团队名称组成)以限制仅登录这些团队的成员
。
GitHub Enterprise
认证后端可用于对使用OAuth2安装GitHub Enterprise的用户进行身份认证。您可以选择指定团队白名单(由slug cased团队名称组成)以限制仅允许这些团队的成员登录
。
```
py
[
webserver
]
```
[webserver
]
authenticate = True
auth_backend = airflow.contrib.auth.backends.github_enterprise_auth
[
github_enterprise
]
[
github_enterprise
]
host = github.example.com
client_id = oauth_key_from_github_enterprise
client_secret = oauth_secret_from_github_enterprise
oauth_callback_route = /example/ghe_oauth/callback
allowed_teams
=
1
,
345
,
23
allowed_teams = 1, 345, 23
```
注意
...
...
@@ -231,101 +221,111 @@ allowed_teams = 1 , 345 , 23
必须先在GHE中设置应用程序,然后才能使用GHE身份验证后端。 要设置应用程序:
1.
导航到您的GHE配置文件
2.
从左侧导航栏中选择“应用程序”
3.
选择“开发者应用程序”选项卡
4.
点击“注册新申请”
5.
填写所需信息(“授权回调URL”必须完全合格,例如
[
http://airflow.example.com/example/ghe_oauth/callback
](
http://airflow.example.com/example/ghe_oauth/callback
)
)
6.
点击“注册申请”
7.
根据上面的示例,将“客户端ID”,“客户端密钥”和回调路由复制到airflow.cfg
1.
导航到您的GHE配置文件
2.
从左侧导航栏中选择“应用程序”
3.
选择“开发者应用程序”选项卡
4.
点击“注册新申请”
5.
填写所需信息(“授权回调URL”必须完全合格,例如
[
http://airflow.example.com/example/ghe_oauth/callback
](
http://airflow.example.com/example/ghe_oauth/callback
)
)
6.
点击“注册申请”
7.
根据上面的示例,将“客户端ID”,“客户端密钥”和回调路由复制到airflow.cfg
#### 在github.com上使用GHE身份验证
可以在github.com上使用GHE身份验证:
1.
[
创建一个Oauth应用程序
](
https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/
)
2.
根据上面的示例,将“客户端ID”,“客户端密钥”复制到airflow.cfg
3.
在
`host = github.com`
设置
`host = github.com`
和
`oauth_callback_route = /oauth/callback`
1.
[
创建一个Oauth应用程序
](
https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/
)
2.
根据上面的示例,将“客户端ID”,“客户端密钥”复制到airflow.cfg
3.
在airflow.cfg
设置
`host = github.com`
和
`oauth_callback_route = /oauth/callback`
### Google身份验证
Google身份验证后端可用于使用OAuth2对Google用户进行身份验证。
您必须指定电子邮件域以限制登录(以逗号分隔),仅限于这些域的成员。
Google身份验证后端可用于使用OAuth2对Google用户进行身份验证。您必须指定电子邮件域以限制登录(以逗号分隔),仅限于这些域的成员。
```
py
[
webserver
]
```
[webserver
]
authenticate = True
auth_backend = airflow.contrib.auth.backends.google_auth
[
google
]
[
google
]
client_id = google_client_id
client_secret = google_client_secret
oauth_callback_route = /oauth2callback
domain = "example1.com,example2.com"
```
#### 设置Google身份验证
必须先在Google API控制台中设置应用程序,然后才能使用Google身份验证后端。 要设置应用程序:
1.
导航到
[
https://console.developers.google.com/apis/
](
https://console.developers.google.com/apis/
)
2.
从左侧导航栏中选择“凭据”
3.
点击“创建凭据”,然后选择“OAuth客户端ID”
4.
选择“Web应用程序”
5.
填写所需信息('授权重定向URI'必须完全合格,例如
[
http://airflow.example.com/oauth2callback
](
http://airflow.example.com/oauth2callback
)
)
6.
点击“创建”
7.
根据上面的示例,将“客户端ID”,“客户端密钥”和重定向URI复制到airflow.cfg
1.
导航到
[
https://console.developers.google.com/apis/
](
https://console.developers.google.com/apis/
)
2.
从左侧导航栏中选择“凭据”
3.
点击“创建凭据”,然后选择“OAuth客户端ID”
4.
选择“Web应用程序”
5.
填写所需信息('授权重定向URI'必须完全合格,例如
[
http://airflow.example.com/oauth2callback
](
http://airflow.example.com/oauth2callback
)
)
6.
点击“创建”
7.
根据上面的示例,将“客户端ID”,“客户端密钥”和重定向URI复制到airflow.cfg
## SSL
可以通过提供证书和密钥来启用SSL。
启用后,请务必在浏览器中使用“
[
https://
](
https:
)
”。
可以通过提供证书和密钥来启用SSL。
启用后,请务必在浏览器中使用“
[
https//
](
https:
)
”。
```
py
[
webserver
]
```
[webserver
]
web_server_ssl_cert = <path to cert>
web_server_ssl_key = <path to key>
```
启用SSL不会自动更改Web服务器端口。
如果要使用标准端口443,则还需要配置它。
请注意,侦听端口443需要超级用户权限(或Linux上的cap_net_bind_service)。
启用SSL不会自动更改Web服务器端口。
如果要使用标准端口443,则还需要配置它。
请注意,侦听端口443需要超级用户权限(或Linux上的cap_net_bind_service)。
```
py
# Optionally, set the server to listen on the standard SSL port.
# Optionally, set the server to listen on the standard SSL port.
web_server_port
=
443
base_url
=
http
:
//<
hostname
or
IP
>
:
443
```
使用SSL启用CeleryExecutor。 确保正确生成客户端和服务器证书和密钥。
```
py
[
celery
]
```
[celery
]
CELERY_SSL_ACTIVE = True
CELERY_SSL_KEY = <path to key>
CELERY_SSL_CERT = <path to cert>
CELERY_SSL_CACERT = <path to cacert>
```
## 模拟
Airflow能够在运行任务实例时模拟unix用户,该任务实例基于任务的
`run_as_user`
参数,该参数采用用户的名称。
**注意:**
要模拟工作,必须使用
<
cite
>
sudo
<
/cite
>
运行Airflow,因为使用
<
cite
>
sudo -u
<
/cite
>
运行子任务并更改文件的权限。 此外,unix用户需要存在于worker上。 这是一个简单的sudoers文件条目可能看起来像这样,假设气流作为
<
cite
>
气流
<
/cite
>
用户运行。 请注意,这意味着必须以与root用户相同的方式信任和处理气流用户。
**注意:**
要模拟工作,必须使用
`sudo`
运行Airflow,因为使用
`sudo -u`
运行子任务并更改文件的权限。此外,unix用户需要存在于worker中。假设airflow是
`airflow`
用户运行,一个简单的sudoers文件可能看起来像这样。请注意,这意味着必须以与root用户相同的方式信任和处理airflow用户。
```
py
```
airflow ALL=(ALL) NOPASSWD: ALL
```
带模拟的子任务仍将记录到同一文件夹,但他们登录的文件将更改权限,只有unix用户才能写入。
### 默认模拟
要防止不使用模拟的任务以
<
cite
>
sudo
<
/cite
>
权限运行,可以设置
`core:default_impersonation`
config,如果未设置
<
cite
>
run_as_user,
<
/cite
>
则设置默认用户模拟
。
要防止不使用模拟的任务以
`sudo`
权限运行,如果未设置
`run_as_user`
,可以在
`core:default_impersonation`
配置中来设置默认的模拟用户
。
```
py
[
core
]
```
[core
]
default_impersonation = airflow
```
```
\ No newline at end of file
## Flower认证
Celery Flower的基础认证是支持的。
可以在Flower进程启动命令中指定可选参数,或者在
`airflow.cfg`
指定配置项。对于这两种情况,请提供用逗号分隔的user:password对。
```
sh
airflow flower
--basic_auth
=
user1:password1,user2:password2
```
```
[celery]
flower_basic_auth = user1:password1,user2:password2
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录