各位是否使用过 Elastic Cloud 呢?Elastic Cloud 是 Elastic 公司提供的 SaaS 服务,支持 AWS、Azure、GCP 这三大云服务提供商。由于只需点击几次鼠标,就能完成最新版本集群的搭建以及现有集群的版本升级,因此非常易于部署使用。
但在实际使用时,需要考虑的事项其实有很多,比如访问限制、与 Cognito 的联动等。我认为这其中有不少容易让人 “踩坑” 的地方,所以整理了相关操作步骤和注意事项。
本文将介绍如何通过 AWS Marketplace 搭建集群,以及后续的安全设置 / 认证设置步骤。
1. 前言
本文中,将统一把 Elastic Cloud(Elasticsearch Service)简称为 “Elastic Cloud”。
在 AWS 上搭建 Elastic Cloud 的步骤
通过 AWS Marketplace,可按照以下 4 个步骤在 AWS 上搭建 Elastic Cloud:
- 通过 Marketplace 搭建集群
- 安全强化(IP 过滤设置)
- 安全强化(Private Link 设置)
- 为 Kibana 添加 Cognito 认证
架构示意图如下:

接下来,将分别说明每个步骤的搭建 / 设置方法。
2. 通过 Marketplace 搭建集群
Elastic Cloud 账号创建
首先需要注意的是,无法将已有的 Elastic Cloud 账号与 AWS Marketplace 上的 Elastic Cloud 进行关联使用,请务必留意。因此,本次将通过 “Sign up with email(使用邮箱注册)”,使用新的邮箱地址创建账号。

登录成功后的页面如下:

通过 Marketplace 的部署步骤
第一步,我们将通过 AWS Marketplace 搭建 Elastic Cloud。
(1) 访问 AWS Marketplace 上的 Elastic Cloud 页面,点击 “View purchase options(查看购买选项)”

(2) 在购买页面点击 “Subscribe(订阅)”

点击后,页面顶部会显示如下提示信息,请点击 “Set up your account(设置您的账号)”。

(3) 按照页面显示的步骤完成各项设置在步骤 2 中,需关联此前创建的 Elastic Cloud 账号。

关联成功后,将显示如下页面。

在步骤 3 中,可通过 CloudFormation 部署 Elastic Cloud。
此时需要注意,需提前创建好 CloudFormation 在搭建过程中要使用的角色。
所需的权限策略可通过页面上的 “View required IAM permission” 进行确认。

只需设置 CloudFormation 的堆栈名称、要创建的Deployment名称、搭建所在的Region以及 CloudFormation 在搭建时使用的角色名称,即可在 AWS 上搭建Deployment。

当页面显示 “CREATE_COMPLETE” 时,即表示搭建成功。

在步骤 4 中,点击 “Launch software”,即可在 Elastic Cloud 控制台中查看已创建的Deployment。

(4) 确认登录已部署的 Kibana
已成功创建的 Deployment,其 Kibana可正常登录。
URL的格式为「https://<Deployment 名>.kb.us-east-2.aws.elastic-cloud.com/app/home」,其中会包含创建 Deployment 时所设定的名称。

2. 安全强化(IP 过滤设置)
接下来,为已搭建的 Deployment 配置 IP 过滤规则。
IP 过滤的作用与优势
通过配置 IP 过滤,可对 Deployment(包含 Elasticsearch、Kibana)的访问进行限制。有关详细信息,请参博客:www.elastic.co
下面实际操作配置步骤。
IP 过滤配置方法
(1) 在已创建的 Deployment 管理页面中,点击 “Features”

(2) 点击 “Add traffic filters”,再点击 “Create filter”


(3) 输入 IP 地址等条件后,点击 “Create filter”创建成功后,页面将显示已创建的 IP 过滤规则定义,如下所示。

(4) 在 Deployment 的安全设置页面中,点击 “Apply filter”,将创建的规则应用到该 Deployment

将已创建的 IP 过滤规则定义应用到 Deployment。

至此,已成功为在 Elastic Cloud 上搭建的 Deployment 应用 IP 过滤规则。
3. 安全强化(Private Link 设置)
接下来配置 Private Link。通过配置 Private Link 实现 VPC(虚拟私有云)之间的连接,可使通信无需经过互联网,从而提升安全性。
Private Link 配置方法
(1) 创建 AWS 的 Endpoint(终端节点)有关创建方法,请参考以下链接:docs.aws.amazon.com
(2) 点击 “Add traffic filters”,再点击 “Create filter”
与配置 IP 过滤时相同,将打开过滤规则创建页面。
(3) 在 “Filter type” 中选择 “Private link endpoint”,在 “Endpoint ID” 中输入步骤 (1) 创建的 Endpoint ID,然后点击 “Create filter”

(4) 与配置 IP 过滤时的操作相同,将创建的规则应用到 Deployment
此时,IP 过滤和 Private Link 这两项安全设置已成功应用。

4. 为 Kibana 添加 Cognito 认证
Elasticsearch 支持通过 OIDC(OpenID Connect,开放身份连接)实现认证。通过 OIDC 联动实现认证的优势在于,可将用户管理集中到一个服务中,从而简化管理与运维工作。
因此,最后为 Kibana 添加 Cognito 认证。
基于 Cognito 的 Kibana 认证配置方法
配置 OIDC 认证需执行以下步骤,详细内容请参考官方文档:www.elastic.co
- SSL/TLS 配置
- Token Service启用
- OIDC 认证配置
- role mapping(Kibana 操作权限配置)
在上述步骤中,步骤 1 和步骤 2 在 Elastic Cloud 中默认已配置完成,因此本次操作将从步骤 3 “OIDC 认证配置” 开始。
(1) 创建 AWS Cognito 的用户池,并注册用户
本次将同时使用 Cognito 作为 OP(OpenID Provider)和 RP(Relying Party)。
本文将省略 Cognito 自身的配置与搭建方法。需特别注意的一点是:由于 OIDC 认证配置需要,需在 RP 侧创建客户端密钥(Client Secret)。

(2) 在已创建的 Deployment 管理页面中,点击 “Security”

(3) 在 Elasticsearch keystore区域,点击 “Add settings”

(4) 在 “Setting name” 中输入xpack.security.authc.realms.oidc.oidc1.rp.client_secret,在 “Secret” 中输入步骤 (1) 创建的客户端密钥

(5) 点击 “Save”,将客户端密钥注册到 Elasticsearch keystore 中

(6) 在已创建的 Deployment 管理页面中,点击 “Edit”

(7) 点击 Elasticsearch 右侧的链接 “Manage user settings and extensions”

(8) 为 Elasticsearch 应用 OIDC 配置
配置内容如下:
xpack:
security:
authc:
realms:
oidc:
oidc1:
order: 2
rp.client_id: "<RP客户端ID>"
rp.response_type: code
rp.redirect_uri: https://<Kibana URL>/api/security/oidc/callback
op.issuer: https://cognito-idp.<区域名>.amazonaws.com/<OP用户池ID>
op.authorization_endpoint: https://<OP域名>/oauth2/authorize
op.token_endpoint: https://<OP域名>/oauth2/token
op.userinfo_endpoint: https://<OP域名>/oauth2/userInfo
op.jwkset_path: "https://cognito-idp.<区域名>.amazonaws.com/<OP用户池ID>/.well-known/jwks.json"
claims.principal: sub
(9) 点击页面底部的 “Save”,将配置应用到 Elasticsearch

(10) 点击 Kibana 页面左侧菜单的 “Stack management”,随后点击 “Role mappings”
通过定义 Role mappings,可为经 Cognito(OIDC)认证的用户配置 Kibana 操作权限。

(11) 点击 “Create role mapping”,将权限与 OIDC 账号关联

按以下方式,为通过 OIDC 登录的用户配置权限

登录 Kibana
配置完成后,可使用已注册用户的邮箱地址和密码登录 Kibana。

总结
Elastic Cloud 不仅搭建简便,后续的安全设置与认证设置也十分容易。在使用 Elasticsearch 时,不妨考虑选择 Elastic Cloud。

发表回复