配置和加固¶
数据处理服务有几个配置选项和部署策略可以提高安全性。服务控制器通过一个主配置文件和一个或多个策略文件进行配置。使用数据本地化功能的安装还会包含两个额外的文件,用于指定计算和对象存储节点的物理位置。
TLS¶
数据处理服务控制器,像许多其他的 OpenStack 控制器一样,可以配置为需要 TLS 连接。
Kilo 版本之前的版本需要一个 TLS 代理,因为控制器不允许直接 TLS 连接。配置 TLS 代理的内容在 TLS 代理和 HTTP 服务 中有介绍,我们建议遵循那里的建议来创建这种类型的安装。
从 Kilo 版本开始,数据处理控制器允许直接 TLS 连接,我们推荐使用这种方式。启用此行为需要在控制器的配置文件中进行一些小的调整。
示例。配置控制器 TLS 访问
[ssl]
ca_file = cafile.pem
cert_file = certfile.crt
key_file = keyfile.key
基于角色的访问控制策略¶
数据处理服务使用策略文件,如 策略 中所述,来配置基于角色的访问控制。使用策略文件,操作员可以限制一个组对特定数据处理功能的访问。
这样做原因会根据安装的组织需求而变化。通常,这些细粒度的控制用于需要限制创建、删除和检索数据处理服务资源的情况。需要在项目内限制访问的操作员应该充分意识到,用户需要有替代方式来获得服务的核心功能访问权限(例如,配置集群)。
示例。允许所有用户使用所有方法(默认策略)
{
"default": ""
}
示例。禁止非管理员用户操作镜像仓库
{
"default": "",
"data-processing:images:register": "role:admin",
"data-processing:images:unregister": "role:admin",
"data-processing:images:add_tags": "role:admin",
"data-processing:images:remove_tags": "role:admin"
}
安全组¶
数据处理服务允许将安全组与为其集群配置的实例关联。如果没有额外的配置,该服务将使用任何配置集群的项目中的默认安全组。如果请求,可以使用不同的安全组,或者存在一个自动化选项,指示该服务基于正在访问的框架指定的端口创建安全组。
对于生产环境,我们建议手动控制安全组并创建一个适合安装的组规则集。这样,操作员可以确保默认安全组包含所有适当的规则。有关安全组的更详细讨论,请参阅 安全组。
代理域¶
在与数据处理服务一起使用对象存储服务时,需要添加存储访问凭据。使用代理域,数据处理服务可以使用来自身份服务的委托信任,通过在域中创建的临时用户来允许存储访问。为了使这种委托机制工作,数据处理服务必须配置为使用代理域,并且操作员必须为代理用户配置一个身份域。
数据处理控制器会临时存储为对象存储访问提供的用户名和密码。使用代理域时,控制器将为代理用户生成此配对,并且该用户的访问权限将限制为身份信任的权限。我们建议在控制器或其数据库具有到公共网络的路由的任何安装中使用代理域。
示例。配置名为“dp_proxy”的代理域
[DEFAULT]
use_domain_for_proxy_users = true
proxy_user_domain_name = dp_proxy
proxy_user_role_names = Member
自定义网络拓扑¶
数据处理控制器可以配置为使用代理命令来访问其集群实例。这样就可以为不使用网络服务直接提供的网络的安装创建自定义网络拓扑。我们建议在需要限制控制器和实例之间的访问的安装中使用此选项。
示例。通过指定的转发机器访问实例
[DEFAULT]
proxy_command='ssh relay-machine-{tenant_id} nc {host} {port}'
示例。通过自定义网络命名空间访问实例
[DEFAULT]
proxy_command='ip netns exec ns_for_{network_id} nc {host} {port}'
间接访问¶
对于控制器由于浮动 IP 地址或安全规则的限制而无法访问集群的所有实例的安装,可以配置间接访问。这允许一些实例被指定为集群其他实例的代理网关。
此配置只能在定义将构成数据处理集群的节点组模板时启用。它作为在集群配置过程中启用的运行时选项提供。
Rootwrap¶
在创建用于网络访问的自定义拓扑时,可能需要允许非 root 用户运行代理命令。对于这些情况,oslo rootwrap 包用于提供一个让非 root 用户运行特权命令的设施。此配置要求与数据处理控制器应用程序关联的用户在 sudoers 列表中,并且需要在配置文件中启用该选项。可以选择提供替代的 rootwrap 命令。
示例。启用 rootwrap 使用并显示默认命令
[DEFAULT]
use_rootwrap=True
rootwrap_command=’sudo sahara-rootwrap /etc/sahara/rootwrap.conf’
有关 rootwrap 项目的更多信息,请参阅官方文档:https://wiki.openstack.org/wiki/Rootwrap
日志¶
监控服务控制器的输出是一种强大的取证工具,如 监控和日志记录 中更详细地描述的那样。数据处理服务控制器提供了一些选项来设置日志的位置和级别。
示例。将日志级别设置为高于警告并指定输出文件。
[DEFAULT]
verbose = true
log_file = /var/log/data-processing.log
参考文献¶
OpenStack.org, 欢迎来到 Sahara!. 2016. Sahara 项目文档
Apache 软件基金会,欢迎来到 Apache Hadoop!. 2016. Apache Hadoop 项目
Apache 软件基金会,Hadoop 安全模式. 2016. Hadoop 安全模式文档
Apache 软件基金会,HDFS 用户指南. 2016. Hadoop HDFS 文档
Apache 软件基金会,Spark. 2016. Spark 项目
Apache 软件基金会,Spark 安全. 2016. Spark 安全文档
Apache 软件基金会,Apache Storm. 2016. Storm 项目
Apache 软件基金会,Apache Zookeeper. 2016. Zookeeper 项目
Apache 软件基金会,Apache Oozie Hadoop 工作流调度器. 2016. Oozie 项目
Apache 软件基金会,Apache Hive. 2016. Hive
Apache 软件基金会,欢迎来到 Apache Pig. 2016. Pig
Apache 软件基金会,Cloudera 产品文档. 2016. Cloudera CDH 文档
Hortonworks, Hortonworks. 2016. Hortonworks 数据平台文档
MapR Technologies, Apache Hadoop for the MapR 融合数据平台. 2016. MapR 项目