如何使用 SSH 通道從 VPC 外部藉助 Amazon Cognito 身分驗證存取 OpenSearch Dashboards?

3 分的閱讀內容
0

我的 Amazon OpenSearch Service 叢集位於虛擬私有雲端 (VPC) 中。我希望使用 SSH 通道從 VPC 外部藉助 Amazon Cognito 身分驗證存取 OpenSearch Dashboards。

簡短描述

在預設情況下,Amazon Cognito 只會為 VPC 中的 AWS Identity and Access Management (IAM) 使用者提供 OpenSearch Dashboards 的存取權。您可以設定 OpenSearch Service 受管 VPC 端點 (採用 AWS PrivateLink 技術),藉此從另一個 VPC 存取 Amazon OpenSearch Service 網域。您還可以使用 SSH 通道從 VPC 外部存取 OpenSearch Dashboards。

**重要事項:**請確保從 VPC 外部存取 OpenSearch Dashboards 符合貴組織的安全性要求。

使用 SSH 通道從 VPC 外部存取 Dashboards:

1.    建立 Amazon Cognito 使用者集區和身分集區。

2.    在公有子網路中建立 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。此子網路必須與您的 OpenSearch Service 網域位於相同的 VPC 中。

3.    使用瀏覽器附加元件 (例如 FoxyProxy) 來設定 SOCKS 代理。

4.    建立從本機電腦到 EC2 執行個體的 SSH 通道。

**注意:**您也可以使用 NGINX 代理或 Client VPN,透過 Amazon Cognito 身分驗證從 VPC 外部來存取 Dashboards。如需詳細資訊,請參閱如何使用 Amazon Cognito 身分驗證從 VPC 外部存取 OpenSearch Dashboards?

5.    (選用) 如果開啟了精細存取控制 (FGAC),請新增 Amazon Cognito 身分驗證角色。

解決方案

建立 Amazon Cognito 使用者集區和身分集區

1.    建立 Amazon Cognito 使用者集區

2.    設定託管使用者集區網域

3.    在 Amazon Cognito 主控台導覽窗格中,選擇 Users and groups (使用者和群組)。

4.    選擇 Create user (建立使用者),然後完成欄位。請務必輸入電子郵件地址。然後,選取 Mark email as verified (將電子郵件標示為已驗證) 核取方塊。

5.    選擇 Groups (群組) 標籤,然後選擇 Create group (建立群組)。在 Precedence (優先順序) 中輸入 0。如需詳細資訊,請參閱在 AWS 管理主控台中建立新群組

6.    再次開啟 Amazon Cognito 主控台

7.    選擇 Manage Identity Pools (管理身分集區),然後選擇 Create new identity pool (建立新的身分集區)。

8.    輸入身分集區的名稱,選取 Enable access to unauthenticated identities (啟用未驗證身分的存取) 核取方塊。然後選擇 Create Pool (建立集區)。

9.    當系統提示您存取 AWS 資源時,請選擇 Allow (允許)。 這會建立兩個與您的身分集區關聯的預設角色,一個用於未經驗證的使用者,另一個用於驗證的使用者。

10.    設定您的 OpenSearch Service 網域,以便在 OpenSearch Dashboards 中使用 Amazon Cognito 身分驗證
Cognito 使用者集區中,選擇您在步驟 1 建立的使用者集區。
Cognito Identity Pool (Cognito 身分集區) 中,選擇您在步驟 8 建立的身分集區。

11.    設定您的 OpenSearch Service 網域,讓它使用的存取政策與下列政策類似。替換下列數值:
以您的 AWS 帳戶 ID 替換 account-id
以您的 Amazon Cognito 身分集區名稱替換 identity-name
以您的網域名稱替換 domain-name
以網域所在的區域,例如 us-east-1 替換 Region

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::account-id:assumed-role/Cognito_identity-nameAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:Region:account-id:domain/domain-name/*"
    }
  ]
}

舉例來說,下列存取政策會使用這些數值:

AWS 帳戶 ID:111122223333
Amazon Cognito 身分集區名稱:MyIdentityPool
網域名稱:MyDomain
**地區:**us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::111122223333:assumed-role/Cognito_MyIdentityPoolAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/MyDomain/*"
    }
  ]
}

建立 EC2 執行個體和設定安全群組規則

1.    在 OpenSearch Services 網域所在的 VPC 的公有子網路上,啟動 EC2 執行個體。在 Configure Instance Details (設定執行個體詳情) 頁面中,確保將 Auto-assign Public IP (自動指派公有 IP) 設定為 Enable (啟用)。
**注意:**在下列步驟中,EC2 執行個體稱為 tunnel_ec2

2.    新增傳入規則至與 tunnel_ec2 執行個體相關聯的安全群組。這些規則必須允許流量從您存取 OpenSearch Service Dashboards 的電腦 IP 地址,傳輸至 8157 和 22 連接埠。

3.    新增傳入規則至與 OpenSearch Service 網域相關聯的安全群組。此規則必須允許流量從 tunnel_ec2 執行個體的私有 IP 地址流入。

設定 SOCKS 代理

1.    將 FoxyProxy 標準加入 Google Chrome

2.    開啟 FoxyProxy,然後選擇 Options (選項)。

3.    在 Proxy mode (代理模式) 的下拉式清單中,選擇 Use proxies based on their pre-defined patterns and priorities (根據預先定義的模式和優先順序使用代理)。

4.    選擇 Add New Proxy (新增代理)。

5.    選取 General (一般) 標籤,然後輸入 Proxy Name (代理名稱),例如 "Dashboards Proxy"。

6.    在 Proxy Details (代理詳情) 標籤中,確定已選取 Manual Proxy Configuration (手動設定代理),然後完成下列欄位:
Host or IP Address (主機或 IP 地址) 中,輸入 localhost
Port (連接埠) 中,輸入 8157
選擇 SOCKS proxy (SOCKS 代理)
選擇 SOCKS v5

7.    選擇 URL Patterns (URL 模式) 標籤。

8.    選擇 Add new pattern (新增模式),然後完成下列欄位:
Pattern Name (模式名稱) 中,輸入如 "VPC Endpoint" (VPC 端點) 之類的名稱。
URL pattern (URL 模式) 中,輸入儀表板的 VPC 端點。確保允許存取該 URL。確定已選取 Wildcards (萬用字元)。

9.     選擇 Save (儲存)。

建立 SSH 通道

1.    在您將會用於存取 Dashboards 儀表板的本機電腦上執行此命令。取代這些項目:
mykeypair.pem:在您啟動 tunnel_ec2 EC2 執行個體時,指定金鑰對的 .pem 檔案名稱。
public_dns_nametunnel_ec2 EC2 執行個體的公有 DNS。如需詳細資訊,請參閱檢視 EC2 執行個體的 DNS 主機名稱

ssh -i "mykeypair.pem"  ec2-user@public_dns_name -ND 8157

2.    在瀏覽器中輸入 Dashboards 端點。螢幕隨即顯示儀表板的 Amazon Cognito 登入頁面。

(選用) 如果開啟了 FGAC,請新增 Amazon Cognito 身分驗證的角色

如果您在 OpenSearch Service 叢集上啟用了精細存取控制 (FGAC),您可能會遇到 "missing role" (沒有角色) 的錯誤。若要解決 "missing role" (沒有角色) 的錯誤,請執行下列步驟:

1.    開啟 OpenSearch Service 主控台。

2.    從導覽窗格的 Managed clusters (受管理的叢集) 下,選擇 Domains (網域)。

3.    選擇 Actions (動作)。

4.    選擇修改主要使用者

5.    選擇設定 IAM ARN 作為您的主要使用者

6.    在 IAM ARN 欄位中,新增通過 Amazon Cognito 身分驗證的 ARN 角色。

7.    選擇提交

如需有關精細存取控制的詳細資訊,請參閱教學:IAM 主要使用者和 Amazon Cognito


相關資訊

設定適用於 OpenSearch Dashboards 的 Amazon Cognito 身分驗證

使用 VPC 啟動 Amazon OpenSearch Service 網域

AWS 官方
AWS 官方已更新 1 年前