Samza 安全

2018-08-22 18:22 更新

Samza 没有提供安全保障,所有安全性都在流系统中实现,或者在 Samza 容器运行的环境中实现。

保证流系统的安全    

Samza 在流系统级不提供任何安全性。独立的流媒体系统可以加强自己的安全。如果流系统需要用户名和密码才能从特定流中使用,则这些值必须通过配置提供,并在 StreamConsumer / StreamConsumerFactory 实现中使用。如果流式传输系统使用 SSL 证书或 Kerberos,也是如此。Samza 运行的环境必须提供相应的证书或 Kerberos 票证,并且必须实施 StreamConsumer 才能使用这些证书或票证。

保护 Kafka

Kafka 不提供其主题的安全性,因此 Samza 在使用 Kafka 主题时不提供任何安全性。

保护 Samza 的环境

在保护 Samza 容器运行的环境时要牢记的最重要的事情是 Samza 容器执行任意用户代码。他们必须考虑对抗性的应用,并且环境必须相应地锁定。

配置

Samza 在使用 run-job.sh 脚本启动 Samza 作业时读取所有配置。如果配置包含敏感信息,则必须小心为 JobRunner 提供配置。这意味着实现一个了解配置安全模型的 ConfigFactory,并以安全的方式将配置解析为 Samza 的 Config 对象。

在 Samza 作业执行期间,配置将保存在内存中。唯一的时间配置是可见的:

  1. 当使用 ConfigFactory 解决配置时。
  2. run-job.sh 运行时,配置将打印到 STDOUT。
  3. 当 Samza 容器启动时,配置将写入日志。

如果配置包含敏感数据,则必须确保这三个点。

端口

默认情况下,Samza 容器打开的唯一端口是在开始时随机选择的未安全的 JMX 端口。如果不需要,可通过配置禁用 JMX。有关详细信息,请参阅配置页。

用户可能会从 Samza 容器内部打开端口。如果不希望这样做,那么执行 Samza 容器的用户必须具有撤消的适当权限,通常使用 iptables。

日志

Samza 容器日志包含配置,并且可能包含用户记录的任意敏感数据。必须向 Samza 容器提供安全的日志目录。

开始 Samza 工作

如果操作员不希望允许 Samza 容器由任意用户执行,那么 Samza 容器的部署机制必须保证。通常这意味着控制 run-job.sh 脚本的执行。推荐的模式是锁定 Samza 容器运行的机器,并从保佑的 Web 服务或特殊机器执行 run-job.sh,并且只允许特定用户访问服务或机器。

Shell 脚本

有关 Samza 使用的 shell 脚本的详细信息,请参阅包装部分。Samza 容器允许用户执行任意 shell 命令,因此必须锁定用户权限,以防止用户损坏环境或读取敏感数据。

Yarn

Samza 提供了即时 YARN 集成。有关详细信息,请查看 Samza 的 YARN 安全页面。

Kafka »

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号