安全
Contents
安全#
Ray 是一个易于使用的框架,可以在 Ray 集群中的一个或多个节点上运行任意代码。Ray 提供容错、优化调度、任务编排和自动扩展功能来运行给定的工作负载。
为了实现高性能和分布式工作负载,Ray 组件需要集群内通信。这种通信包括分布式内存和节点心跳等核心原则,以及指标和日志等辅助功能。Ray 利用 gRPC 进行大部分此类通信。
Ray 提供其他服务来改善开发人员体验。这些服务包括 Ray Dashboard(用于集群自检和调试)、Ray Jobs(与 Dashboard 一起托管,为 Ray Job 提交提供服务)和 Ray Client(用于与远程集群进行本地交互式开发)。这些服务提供对 Ray 集群和底层计算资源的完全访问权限。
个人#
当考虑运行 Ray 的安全责任时,请考虑与 Ray 交互的不同角色。
Ray 开发者 编写依赖于 Ray 的代码。他们要么在本地运行单节点 Ray 集群,要么在提供的计算基础架构上远程运行多节点集群。
平台提供商 为 开发者 运行 Ray 提供计算环境。
用户 与 Ray 驱动的应用程序的输出进行交互。
最佳实践#
必须在 Ray Cluster 外部强制实施安全和隔离。 Ray 希望在安全的网络环境中运行并根据可信代码进行操作。开发者和平台提供商必须维护以下不变量,以确保 Ray Cluster 的安全运行。
在受控网络环境中部署 Ray 集群#
核心 Ray 组件和附加 Ray 组件之间的网络流量应始终处于受控、隔离的网络中。对附加服务的访问应通过严格的网络控制和/或外部身份验证/授权代理进行控制。
gRPC 通信可以使用 TLS 进行加密,但它不能替代网络隔离。
平台提供商负责确保 Ray 在充分受控的网络环境中运行,并且开发人员可以以安全的方式访问 Ray Dashboard 等功能。
在 Ray 中只执行可信代码#
Ray 忠实地执行传递给它的代码 – Ray 不区分调整实验、rootkit 安装或 S3 存储桶检查。
Ray 开发人员有责任在构建他们的应用程序时牢记这一点。
使用多个 Ray 集群在 Ray 外部强制隔离#
如果工作负载需要相互隔离,请使用单独、隔离的 Ray 集群。 Ray 可以在单个集群中调度多个不同的作业,但不会尝试在它们之间强制隔离。同样,Ray 没有为与给定集群交互的开发人员实现访问控制。
Ray 开发人员负责确定哪些应用程序需要隔离,平台提供商负责提供这种隔离。