Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
如何使用 SSH 隧道通过 Amazon Cognito 身份验证从 VPC 外部访问 OpenSearch Dashboards?
我的 Amazon OpenSearch Service 域位于虚拟私有云 (VPC) 中。我想使用 SSH 隧道通过 Amazon Cognito 身份验证从 VPC 外部访问 OpenSearch Dashboards。
简短描述
默认情况下,Amazon Cognito 限制 VPC 中的 AWS Identity and Access Management (IAM) 用户访问 OpenSearch Dashboards。要从其他 VPC 访问 OpenSearch Service 域,请为 OpenSearch Service 创建接口 VPC 端点。要公开访问控制面板 URL,请使用 SSH 隧道。
**重要事项:**验证从 VPC 外部访问 OpenSearch Dashboards 是否符合贵组织的安全要求。
要使用 SSH 隧道从 VPC 外部访问 OpenSearch Dashboards,请完成以下步骤:
- 创建 Amazon Cognito 用户池和身份池。
- 在公共子网中创建 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
- 使用浏览器插件配置 SOCKS 代理。
- 创建从本地计算机到 EC2 实例的 SSH 隧道。
**注意:**您还可以使用 NGINX 代理或客户端 VPN 通过 Amazon Cognito 身份验证从 VPC 外部访问 OpenSearch Dashboards。 - (可选)如果您开启精细访问控制,请添加经过 Amazon Cognito 身份验证的角色。
解决方法
创建 Amazon Cognito 用户池和身份池
完成以下步骤:
- 创建 Amazon Cognito 用户池。配置以下设置:
对于 Application type(应用程序类型),选择 Traditional web application(传统 Web 应用程序)。
对于 Name your application(给应用程序命名),输入自定义应用程序名称或保留默认名称。
对于 Options for sign-in identifiers(登录标识符选项),选择 Username(用户名)。
对于 Required attributes for sign-up(注册的必填属性),选择 Email(电子邮件)。 - 打开 Amazon Cognito 控制台。
- 在导航窗格中,选择 User pools(用户池)。
- 选择您的用户池。
- 在导航窗格中的 Branding(品牌)下,选择 Managed Login(托管登录)。配置以下设置:
对于 Domains with managed login branding(启用了托管登录品牌的域),选择 Update version(更新版本)。
对于 Branding version(品牌版本),选择 Hosted UI (classic)(托管 UI(经典))。 - 配置您的用户和组。
- 创建 Amazon Cognito 身份池。配置以下设置:
对于 User Access(用户访问),选择 Authenticated access(经过身份验证的访问)。
对于 Authenticated identity sources(经过身份验证的身份来源),输入 Amazon Cognito 用户池。
对于 IAM role(IAM 角色),选择 Create a new IAM role(创建新的 IAM 角色),然后输入角色名称。
对于 User pool details(用户池详细信息),选择您的用户池 ID,然后选择 AppClient ID(应用程序客户端 ID)。
对于 Role settings(角色设置),选择 Use default authenticated role(使用经过身份验证的默认角色)。
对于 Claim mapping(声明映射),选择 Inactive(非活动)。 - 配置您的 OpenSearch Service 域以使用 Amazon Cognito 身份验证。配置以下设置:
对于 Cognito User Pool(Cognito 用户池),选择您的用户池。
对于 Cognito Identity Pool(Cognito 身份池),选择您的身份池。 - 对于 Domain access policy(域访问策略),输入以下访问策略:
**注意:**将 account-id 替换为您的 AWS 账户,将 identitypool-role 替换为您的身份池角色的名称。将 domain-name 替换为您的 OpenSearch Service 域,将 region 替换为您的域名的 AWS 区域。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/service-role/identitypool-role" }, "Action": "es:*", "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ] }
创建 EC2 实例并配置安全组规则
**重要事项:**该实例的子网必须与您的 OpenSearch Service 域位于同一 VPC 中。
完成以下步骤:
- 在您的 OpenSearch Service 域所在的 VPC 的公有子网中启动实例。
- 在 Configure Instance Details(配置实例详细信息)页面上,验证 Auto-assign Public IP(自动分配公有 IP)是否为 Enable(启用)。
- 向与您的实例关联的安全组添加入站规则。允许流量从本地计算机的 IP 地址流向端口 8157 和 22。
- 向与 OpenSearch Service 域关联的安全组添加入站规则。允许来自您的实例私有 IP 地址的流量。
配置 SOCKS 代理
**注意:**以下说明使用 FoxyProxy 配置 SOCKS 代理。要安装该扩展,请参阅 Chrome 应用商店中的 FoxyProxy。
完成以下步骤:
- 打开 FoxyProxy,然后选择 Options(选项)。
- 在 Proxies(代理)下,选择 Add(添加)。
- 配置以下设置:
对于 Title(标题),输入代理名称。
对于 Hostname(主机名),输入 localhost。
对于 Port(端口),输入 8157。
对于 Type(类型),选择 SOCKS5。 - 要添加模式,请选择加号 (+),然后配置以下设置:
将第一个字段留空。
在 Title(标题),输入模式的名称。
对于 Pattern(模式),输入 OpenSearch Dashboards VPC 端点,例如:https://vpc-mydomain-rg3abcdefghiflge.us-east-1.es.amazonaws.com/_dashboards。
对于 Type(类型),选择 Wildcards(通配符)。
对于 Include(包含),选择 Include(包含)。 - 选择 Save(保存)。
创建 SSH 隧道
完成以下步骤:
-
使用用于访问 OpenSearch Dashboards 的本地计算机运行以下命令:
ssh -i "mykeypair.pem" ec2-user@public_dns_name -ND 8157
**注意:**将 mykeypair.pem 替换为您在启动实例时指定的密钥对的 .pem 文件的名称。将 public_dns_name 替换为您的实例的公有 DNS。有关详细信息,请参阅 VPC 中的 DNS 属性。
-
在浏览器中输入 OpenSearch Dashboards 端点,以打开 OpenSearch Dashboards 的 Amazon Cognito 登录页面。
(可选)如果您开启精细访问控制,请添加 Amazon Cognito 身份池角色
如果您为 OpenSearch Service 集群开启精细访问控制,则可能会收到 missing role(缺少角色)错误。
要解决 missing role(缺少角色)错误,请完成以下步骤:
- 打开 OpenSearch Service 控制台。
- 在导航窗格的 Managed clusters(托管集群)下,选择 Domains(域)。
- 选择您的域,然后选择 Actions(操作)。
- 选择 Edit security configurations(编辑安全配置)。
- 选择 Set IAM ARN as your master user(将 IAM ARN 设置为您的主用户)。
- 对于 IAM ARN,请输入 Amazon Cognito 身份池角色的 ARN。
- 选择 Save(保存)。
有关精细访问控制的详细信息,请参阅教程: 使用 IAM 主用户和 Amazon Cognito 身份验证配置域。
相关信息
