本文档为您介绍阿里云Elasticsearch的安全配置功能,包括访问密码、公网/私网访问白名单以及HTTPS协议等。

集群网络设置

ES实例访问密码

单击重置,输入elastic管理员账号的新密码,确认后即可重置您的密码。密码重置后,新密码会在5分钟左右之后生效。

密码重置后会影响您使用elastic管理员账号访问阿里云Elasticsearch实例,生效后的密码将作为新的管理密码,用来登录Kibana控制台以及访问阿里云Elasticsearch实例。

说明
  • 重置Elasticsearch实例访问密码不影响其它非elastic管理账号的账号访问该实例,不建议在程序中通过elastic管理账号来访问您的阿里云Elasticsearch实例。
  • 单击重置,密码修改完成并确认提交后,不会触发重启阿里云Elasticsearch实例。

VPC私网访问白名单

当您需要通过内网来访问阿里云Elasticsearch实例时,可将待访问设备的IP加入到阿里云Elasticsearch实例的VPC私网访问白名单中。

单击修改,在VPC白名单输入框中输入您需要添加的IP地址,单击确认即可完成添加。

白名单支持配置为单个IP或IP网段的形式,格式为192.168.0.1192.168.0.0/24,多个IP之间用英文逗号隔开。127.0.0.1代表禁止所有IPV4地址访问,0.0.0.0/0代表允许所有IPV4地址访问。

说明
  • 默认允许所有内网IPV4地址访问。
  • 主要针对内网地址进行访问控制。

公网地址

单击公网地址开关,可开启公网地址。开启后开关显示为绿色,默认显示为灰色,即关闭状态。公网地址开启后,才可使用公网地址访问您的阿里云Elasticsearch实例。

公网地址访问白名单

在配置公网访问白名单前,请首先打开公网地址开关。打开公网地址后,默认禁止所有公网地址访问。

当您需要通过外网来访问阿里云Elasticsearch实例时,可将待访问设备的IP加入到阿里云Elasticsearch实例的公网地址访问白名单中。

白名单支持配置为单个IP或IP网段的形式,格式为192.168.0.1192.168.0.0/24,多个IP之间用英文逗号隔开。127.0.0.1代表禁止所有IPV4地址访问,0.0.0.0/0代表允许所有IPV4地址访问。

目前杭州区域支持公网IPV6地址访问,并可以配置IPV6白名单,格式为2401:b180:1000:24::52401:b180:1000::/48::1代表禁止所有IPV6地址访问,::/0代表允许所有IPV6地址访问。

使用HTTPS协议

HTTPS全称是Hyper Text Transfer Protocol over Secure Socket Layer,是一种能够保障数据安全的HTTP通道。它是 HTTP 协议的安全版,其保障数据传输安全的方式就是在HTTP协议的基础上增加了SSL(Secure Sockets Layer,安全套接层)。也就是说HTTPS 还是通过HTTP进行通信,只是传输的内容经过了SSL加密。

操作步骤

注意
  • 阿里云Elasticsearch支持HTTPS协议的开启和关闭能力,为了保障您数据的安全性,建议开启HTTPS协议。
  • 在开启HTTPS协议前,您需要首先购买协调节点。

  1. 登录阿里云Elasticsearch控制台,单击实例ID > 安全配置,然后打开使用HTTPS协议开关。

    注意
    • 启用HTTPS协议前,您需要首先对访问Elasticsearch的代码进行变更,否则会导致无法使用程序访问您的Elasticsearch实例。变更方式请参见开启和关闭HTTPS协议代码变更示例
    • 启用和关闭HTTPS服务会中断服务,并且会触发集群重启,为保证您的业务不受影响,请确认后操作。
  2. 在弹出的操作提示对话框中,勾选确认已经修改访问Elasticsearch实例的代码,单击确认

    说明 如果您还未购买协调节点,在打开使用HTTPS协议开关后,系统会提示您购买协调节点。您可以按照提示购买协调节点后再进行操作。
    确认后集群会进行重启,可单击右上角的图标查看实例变更进度。重启完成后,就可以使用HTTPS协议访问您的实例了。

开启和关闭HTTPS协议代码变更示例

下面以Elasticsearch官方Rest Client访问方式为例,为您介绍在开启HTTPS前后,客户端代码需要做的变更点。
  • 开启HTTPS前的示例代码如下。
    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("elastic", "Your password"));
    RestClientBuilder restClientBuilder = RestClient.builder(
                new HttpHost("es-cn-xxxxx.elasticsearch.aliyuncs.com", 9200));
            RestClient restClient = restClientBuilder.setHttpClientConfigCallback(
                new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                }).build();
  • 开启HTTPS后的示例代码如下。
    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("elastic", "Your password"));
    RestClientBuilder restClientBuilder = RestClient.builder(
                new HttpHost("es-cn-xxxxx.elasticsearch.aliyuncs.com", 9200, "https"));
            RestClient restClient = restClientBuilder.setHttpClientConfigCallback(
                new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                }).build();

由以上示例可知,开启HTTPS后,HttpHost中需要加上https参数,即new HttpHost("es-cn-xxxxx.elasticsearch.aliyuncs.com", 9200, "https"));