Driverless AI 安全性

目标

本文档旨在介绍 Driverless AI Security 的不同方面,并提供相关指南,以帮助通过减少系统的漏洞保证系统的安全性。

本节的内容涵盖产品的以下方面:

注意事项

警告

警告 在 Driverless AI 的默认安装过程中,安全性已被禁用!默认情况下,Driverless AI 的安装以确保易用性为目标,并不会启用本文档中列出的所有安全功能。对于生产环境,我们建议遵循本文档中的指南,并实施安全的 Driverless AI 安装。


用户访问

身份验证

Driverless AI 支持“客户端证书”、LDAP、“本地”、mTLS、OpenID、PAM、“无”以及“不验证”(默认)等身份验证选项。以上身份验证选项可通过启动 Driverless AI Docker 映像时指定环境变量或在 config.toml 文件中指定适当的配置选项来进行配置。更多信息,请参见 身份验证方式.

选项

默认值

建议值

描述

authentication_method

"unvalidated"

任何受支持的身份验证 (如 LDAP、PAM) 方式, "unvalidated""none" 除外。

定义用户身份验证方式

authentication_default_timeout_hours

72

了解您的安全需求。

用户重新登录的间隔小时数。

mTLS 身份验证

Driverless AI 通过设置特定验证模式以及证书授权文件、SSL 私钥和 SSL 证书文件来支持 TLS 双向认证 (mTLS)。更多信息,请参见 mTLS 身份验证示例.

授权方式

Driverless AI 目前不执行任何授权。


数据安全

数据导入

选项

默认值

建议值

描述

enabled_file_systems

"upload, file, hdfs, s3"

只配置需要的数据源。

控制可用/已配置的数据源列表。

max_file_upload_size

104857600000B

依据预期的文件大小和 Driverless AI 的部署规模进行配置。

限制上传文件的最大大小。

supported_file_types

参见 config.toml

建议将文件类型限制为目标环境中使用的扩展名(如 parquet )。

文件系统浏览器中列出的受支持文件格式。

show_all_filesystems

true

false

在网络 UI 上显示所有可用数据源(即使未配置)。建议只显示已配置的数据源。

数据导出

选项

默认值

建议值

描述

enable_dataset_downloading

true

False (禁止下载数据集)

控制下载任何数据集(已上传的数据集、预测结果、MLI)的功能。请注意:如果禁止下载数据集,我们强烈建议禁用自定义插件并移除另一种从应用程序导出数据的方式。

Enable_artifacts_upload

false

false

将“实验”页面上的所有下载项替换为 “导出”,并允许用户进入通过 artifacts_store 配置的工件存储库。(参见以下注释。)

Artifacts_store

File_system

File_system

将 MOJO 储存在 artifacts_file_system_directory 表示的文件系统目录中。(参见以下注释。)

artifacts_file_system_directory

tmp

tmp

文件系统位置,当 artifacts_store 设置为 file_system 时,会将工件复制到此位置。(参见以下注释。)

关于工件的注意事项

  • 目前,file_system 是可为 artifacts_store 指定的唯一选项。在未来的版本中,将提供附加选项。

  • Artifacts_file_system_directory 的位置预计为服务器上的目录。

  • 当启用/配置这些工件后, 已完成的实验 页面上的菜单选项发生变化。具体来讲,所有(AutoDoc 例外) “下载” 选项变为 “导出”。更多信息,请参阅 导出工件

Completed experiments menus

日志

Driverless AI 会产生多种日志:

  • 审核日志

  • 服务器日志

  • 实验日志

Driverless AI 应用程序的管理员(即负责应用程序配置和设置的人员)可以控制要写入日志的内容。

选项

默认值

建议值

描述

audit_log_retention_period

5 (天)

0 (禁用审核日志轮替)

审核日志的保留天数。数值为 0 表示禁用轮替。

do_not_log_list

参见 config.toml

包含日志中未记录的配置选项列表。

log_level

1

参见 config.toml

定义日志记录的详细级别

collect_server_logs_in_experiment_logs

false

false

转储实验的服务器日志。这样做很危险,因为服务器日志可能包含关于使用 Driverless AI 的其他用户的实验信息。

h2o_recipes_log_level

None

与自定义插件使用的 OSS H2O 实例相关的日志级别。

debug_log

false

false

启用调试日志。

write_recipes_to_experiment_logger

false

false

将自定义插件源代码转储到日志中。

用户数据隔离

选项

默认值

建议值

描述

data_directory

"./tmp"

指定目录的正确名称和位置。

Driverless AI 用于存储所计算的各种实验和数据集的目录

file_hide_data_directory

true

true

隐藏“文件”系统浏览器中的 data_directory. 建议隐藏该目录,以防止 data_directory 浏览和破坏。

file_path_filtering_enabled

false

true

为“文件”系统浏览器(“文件”数据源)启用路径筛选器。在默认情况下,禁用筛选器,这意味着用户可以浏览整个应用程序-本地文件系统。

file_path_filter_include

[]

包括文件夹路径列表或已登录用户目录的 {{DAI_USERNAME}} . 例如:"['/home/{{DAI_USERNAME}}/','/data/prod']".

绝对路径前缀列表,用于限制对“文件”浏览器的访问。

autodoc_additional_template_folder

""

""

Driverless AI 用于搜索已更新 AutoDoc 模板的目录。提供空值 "" 可禁用此功能。


客户端-服务器通信安全

选项

默认值

建议值

描述

enable_https

false

true

启用 HTTPS。

ssl_key_file

"/etc/dai/private_key.pem"

正确的私钥。

用于设置 HTTPS/SSL 通信的私钥。

ssl_crt_file

"/etc/dai/cert.pem"

正确的公用证书。

用于设置 HTTPS/SSL 通信的公用证书。

ssl_no_sslv2

true

true

阻止 SSLv2 连接。

ssl_no_sslv3

true

true

阻止 SSLv3 连接。

ssl_no_tlsv1

true

true

阻止 TLSv1 连接。

ssl_no_tlsv1_1

true

true

阻止 TLSv1.1 连接。

ssl_no_tlsv1_2

false

False (只有在 TLSv1.3 可用的情况下才可禁用 TLSv1.2)

阻止 TLSv1.2 连接。

ssl_no_tlsv1_3

false

false

阻止 TLSv1.3 连接。

响应标头

通过以下选项控制在 Driverless AI 服务器与 Driverless AI 客户端(浏览器、Python/R 客户端)之间传递的响应标头:

选项

默认值

建议值

描述

extra_http_headers

"{}"

参见下文

配置服务器响应中返回的 HTTP 标头。

需考虑的其他标头

标头

文档资料

Public-Key-Pins CORS 相关的标头

https://developer.mozilla.org/en-US/docs/Web/HTTP/Public_Key_Pinning https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS


Web UI 安全

注解

Driverless AI UI 采用了用户友好型设计,默认会启用自动完成等各种功能。禁用对用户友好的功能会提高应用程序的安全性,但会影响用户友好性和应用程序的可用性。

选项

默认值

建议值

描述

allow_form_autocomplete

true

false

控制 Web UI 元件中的自动完成功能(如登录输入)。

allow_localstorage

true

false

禁用 Web 浏览器的本地存储。

show_all_filesystems

true

false

在网络 UI 上显示所有可用数据源(即使未配置)。建议只显示已配置的数据源。

verify_session_ip

false

true

依据初始化会话的 IP 地址验证每个请求 IP 地址。

allow_concurrent_sessions

true

false

禁用并发会话(登录会话)。

enable_xsrf_protection

true

true

启用 XSRF(跨站请求伪造)保护。

enable_secure_cookies

false

true

启用 SECURE cookie 标志。请注意,必须启用 HTTPS。


自定义插件安全

注解

Driverless AI 默认启用自定义插件,作为数据科学团队可用来扩展应用程序功能的主要路由。在企业环境中,建议按照最佳软件工程规范开发自定义插件(即代码审核、测试、分阶段发布等),并只捆绑预定义和经批准的一系列自定义 Driverless AI 扩展程序。

选项

默认值

建议值

描述

enable_custom_recipes

true

false

启用自定义 Python 插件。

enable_custom_recipes_upload

true

false

启用自定义插件的上传。

enable_custom_recipes_from_url

true

false

允许从外部 URL 下载自定义插件。

include_custom_recipes_by_default

false

false

将自定义插件包括在默认的包含列表中。(警告:这会启用所有自定义插件)

custom_recipe_security_analysis_enabled

false

true

为自定义插件启用代码静态分析。

注解

默认会禁用 custom_recipe_security_analysis_enabled,因为启用它会导致以前使用了插件的实验出现问题,使得无法传递安全分析。因此,您可能无法对这些实验存储新的数据集,而需要重新上传插件。出于安全考虑,仍然建议 启用 此选项。


配置安全

Driverless AI 提供了用于将敏感或安全配置信息存储在加密密钥库中的选项,以代替将安全设置作为明文保存在 config.toml 文件中。强烈建议对敏感信息进行加密。更多信息,请参阅 配置安全.

基线安全配置

以下 Driverless AI 配置为安全配置的示例。确保指定了所有必要的配置选项。更多信息,请参阅 使用 config.toml 文件.

#
# Authentication
#

# Configure auth method
authentication_method="PAM"

# Redirect user to login page after 24 hours
authentication_default_timeout_hours=24

#
# Data
#

# Configure available connectors
enabled_file_systems="hdfs"
show_all_filesystems=false

# Restrict downloads
enable_dataset_downloading=false

#
# Logs
#

# Enable removal of audit log records every five days
audit_log_retention_period=5

# Disable collection of server logs
collect_server_logs_in_experiment_logs=false

#
# User data isolation
#

# Disable access to DAI data_directory from file browser
file_hide_data_directory=true

# (Optional) Enable usage of path filters
# file_path_filtering_enabled=true

# (Optional) Specify a list of absolute path prefixes to restrict access to in file browser
# file_path_filter_include = "['/data']")

# (Optional) Specify a directory containing updated AutoDoc templates
# autodoc_additional_template_folder = ""

#
# Client-Server Communication
#

enable_https=true
ssl_key_file="<<FILL ME>>"
ssl_crt_file="<<FILL ME>>"

# (Optional) Disable support of TLSv1.2 on server side only if your environment supports TLSv1.3
# ssl_no_tlsv1_2=true

#
# Web UI security
#

allow_form_autocomplete=false
allow_localstorage=false
verify_session_ip=true
allow_concurrent_sessions=false
enable_xsrf_protection=true

extra_http_headers='{ "Strict-Transport-Security":"max-age=63072000","Content-Security-Policy":"default-src https: ; font-src \'self\'; script-src \'self\' \'unsafe-eval\' \'unsafe-inline\'; style-src \'self\' \'unsafe-inline\'; object-src \'none\'", "X-Frame-Options":"deny", "X-Content-Type-Options":"nosniff", "X-XSS-Protection":"1; mode=block" }'

#
# Custom Recipes
#

enable_custom_recipes=false
enable_custom_recipes_upload=false
enable_custom_recipes_from_url=false
include_custom_recipes_by_default=false
custom_recipe_security_analysis_enabled=true