面试题答案
一键面试-
安装X-Pack:
- Elasticsearch默认不包含X - Pack安全功能,需安装X - Pack插件。不同安装方式(如RPM、DEB、ZIP、TAR等)有对应安装命令,例如使用ZIP/TAR包安装,解压后在Elasticsearch目录下执行
bin/elasticsearch-plugin install x-pack - security
。
- Elasticsearch默认不包含X - Pack安全功能,需安装X - Pack插件。不同安装方式(如RPM、DEB、ZIP、TAR等)有对应安装命令,例如使用ZIP/TAR包安装,解压后在Elasticsearch目录下执行
-
启用安全特性:
- 在
elasticsearch.yml
配置文件中启用安全特性,添加或修改如下配置:
xpack.security.enabled: true
- 重启Elasticsearch使配置生效。
- 在
-
创建角色:
- 通过Elasticsearch API创建角色。例如,使用
PUT /_security/role/{role_name}
API,示例如下:
{ "indices": [ { "names": ["index1", "index2"], "privileges": ["read", "write"] } ] }
- 上述示例为名为
role_name
的角色赋予了对index1
和index2
索引的读取和写入权限。
- 通过Elasticsearch API创建角色。例如,使用
-
创建用户:
- 使用
PUT /_security/user/{username}
API创建用户,并将用户关联到相应角色,示例如下:
{ "password": "user_password", "roles": ["role_name"] }
- 此例创建了名为
username
的用户,密码为user_password
,并关联到role_name
角色。
- 使用
-
配置权限:
- 除了在创建角色时定义索引级别的权限,还可设置集群权限。例如,为角色赋予管理集群健康的权限,可在创建角色时添加如下配置:
{ "cluster": ["monitor", "manage_health"] }
- 这样角色就拥有了监控集群和管理集群健康状态的权限。同时可进一步细化索引权限,如对特定文档的读写权限等,通过更复杂的权限表达式实现。
-
客户端认证:
- 客户端与Elasticsearch交互时,需提供认证信息。例如在使用Elasticsearch Java客户端时,配置认证信息如下:
CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("username", "user_password")); RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200)) .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)); RestHighLevelClient client = new RestHighLevelClient(builder);
- 不同客户端语言有相应的认证配置方式,确保只有通过认证且具有相应权限的用户才能对索引进行读写操作。