FoundationDB 身份验证

FoundationDB authentication

FoundationDB 集群可以配置为使用 SSL/TLS 但是否可以在不知道集群的 fdb.cluster 文件的情况下连接到集群?

换句话说,fdb.cluster文件是否等同于其他数据库系统中的username/password安全方案?

没有群集文件无法连接。这确实提供了一些较弱的安全性,但如果您想 运行 不受信任的网络中的集群,最好使用相互 TLS 支持。

fdb.cluster 文件由 2 个主要部分组成(参见 Cluster file format):

  • 集群id(可选description
  • 一个或多个协调器 IP:PORT 对的列表。

任何客户端必须能够联系到列表中的至少一个协调器才能与集群对话,并且它必须具有正确的集群 ID。如果没有,它将无法连接。没有内置服务发现。

这意味着您必须自己为您的应用程序提供初始集群文件。一旦连接到协调器节点,它将能够获取完整列表并自行更新集群文件(如果拓扑发生变化)。

部署的一个解决方案是让您的应用程序(或部署脚本)从内部 URL(或文件共享)下载最新的 fdb.cluster(如果文件丢失)以快速启动设置。

关于身份验证,除非您使用 TLS/SSL,否则群集文件中的 "id" 部分充当伪明文密码。即使您有一组正确的协调器,应用程序也必须有正确的集群 ID。

虽然它应该被视为等同于典型 SQL 服务器中的 数据库 名称。如果您不使用 SSL,它很容易被发现并以明文方式传输。我猜它是为了防止愚蠢的错误,最重要的是(例如:输入不同集群的 IP:PORT)。