Elasticsearch安全防护核心措施
Elasticsearch通过X-Pack提供安全特性,需首先在elasticsearch.yml中启用:
xpack.security.enabled: true
此配置为后续身份验证、授权、加密等功能的基础,是集群安全的第一步。
身份验证是防止未授权访问的第一道防线,Elasticsearch支持多种认证方式:
elastic超级管理员、kibana、logstash_system等)或自定义用户实现。可使用elasticsearch-setup-passwords命令设置/重置内置用户密码(交互模式或自动生成):bin/elasticsearch-setup-passwords interactive
或通过API创建自定义用户(指定密码与角色):POST /_security/user/my_user
{
"password": "StrongPass123!",
"roles": ["viewer", "logs_writer"],
"full_name": "My Application User"
}
xpack.security.authc.realms实现,适用于企业级统一身份管理场景。基于**角色(Role-Based Access Control, RBAC)**实现细粒度权限控制,限制用户对索引、文档、字段的操作:
superuser(全权限,慎用)、monitor(只读集群状态)、viewer(读取数据)、ingest_admin(管理ingest pipeline)),可直接分配给用户。products-*索引且屏蔽cost_price字段的角色:POST /_security/role/product_reader
{
"indices": [
{
"names": ["products-*"],
"privileges": ["read"],
"field_security": {
"grant": ["title", "price", "category"],
"except": ["cost_price"]
}
}
]
}
status: published),需结合自定义角色配置。通过TLS/SSL加密节点间(Transport层)和客户端与集群间(HTTP层)的通信,防止数据被窃取或篡改:
bin/elasticsearch-certutil ca # 生成CA证书
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 生成节点证书
elasticsearch.yml:xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate # 验证证书有效性
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --name "HTTP Cert"
elasticsearch.yml:xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/http.p12
xpack.security.http.ssl.truststore.path: certs/http.p12
通过网络配置减少暴露面,防止非法IP访问:
elasticsearch.yml中配置xpack.security.transport.filter,允许/拒绝特定IP或子网。例如,仅允许内网IP访问:xpack.security.transport.filter.allow: ["10.0.0.0/8", "192.168.0.0/16"]
xpack.security.transport.filter.deny: _all # 拒绝其他所有IP
记录用户操作(登录、索引、搜索、配置变更等),用于安全审计、合规检查和事件调查:
elasticsearch.yml中配置:xpack.security.audit.enabled: true
xpack.security.audit.outputs: ["file", "index"] # 输出到文件和Elasticsearch索引
xpack.security.audit.logfile.events.include: ["authentication_failed", "access_denied", "crud"] # 包含的事件类型
logs/elasticsearch_audit.log,可通过Kibana或API查询索引中的审计记录。elasticsearch.yml:script.inline: false
script.stored: false
script.file: false
PUT /_snapshot/my_repository
{
"type": "fs",
"settings": {
"location": "/path/to/backups"
}
}
superuser等高权限账户。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。