面试题答案
一键面试网络配置
- 防火墙设置
- 限制 ElasticSearch 服务暴露的端口,只允许特定的 IP 地址段或可信的网络访问。例如,仅允许公司内部办公网络(如 192.168.0.0/16)的 IP 访问 ElasticSearch 的 9200 端口(HTTP 接口)和 9300 端口(集群通信接口)。
- 在云环境中,利用云平台提供的安全组功能,配置类似的网络访问规则。
- 使用代理服务器
- 部署反向代理服务器(如 Nginx、HAProxy 等)在 ElasticSearch 前端。代理服务器可以隐藏 ElasticSearch 的真实 IP 地址,并且对请求进行过滤和验证。
- 配置代理服务器只允许特定的请求头或来源的请求通过,进一步增强安全性。
用户认证
- 内置用户认证
- ElasticSearch 提供了内置的用户认证机制。通过 Elasticsearch Security 插件,可以创建和管理用户,为每个用户分配用户名和强密码。
- 例如,使用
elasticsearch-users
工具创建新用户:
这里bin/elasticsearch-users useradd myuser -p mypassword -r superuser
-r
参数指定用户角色,如superuser
具有所有权限。不同角色可以根据实际需求分配不同的权限,如只读角色、索引管理角色等。 - 集成外部认证系统
- LDAP 集成:如果公司已经使用 LDAP(轻量级目录访问协议)进行用户管理,可以将 ElasticSearch 集成到 LDAP 认证体系中。这样,用户可以使用他们在公司 LDAP 中的现有凭据来访问 ElasticSearch。
- OAuth 2.0 集成:可以与 OAuth 2.0 认证服务器(如 Okta、Keycloak 等)集成。用户通过 OAuth 2.0 认证服务器进行身份验证后,获得的令牌可以用于访问 ElasticSearch,实现单点登录(SSO)功能,提高用户体验和安全性。
传输加密
- TLS/SSL 加密
- 在 ElasticSearch 节点之间的通信(9300 端口)以及客户端与 ElasticSearch 之间的通信(9200 端口)启用 TLS/SSL 加密。
- 生成 SSL 证书和密钥,配置 ElasticSearch 的
elasticsearch.yml
文件,添加如下配置:
同时,对于 HTTP 接口,可以配置类似的 SSL 相关参数,确保数据传输过程中的保密性和完整性,防止中间人攻击获取敏感信息。xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: path/to/keystore xpack.security.transport.ssl.truststore.path: path/to/truststore