

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 限制對 OpenSearch UI 應用程式的網路存取
<a name="application-network-access"></a>

根據預設，OpenSearch UI 應用程式會公開接受來自任何網路位置之請求的公有端點。您的使用者仍然需要進行身分驗證 (IAM 或 AWS IAM Identity Center) 和授權，但公有網際網路上的任何人都可以*存取*應用程式及其 APIs。

如果您需要對 OpenSearch UI 的存取僅來自核准的網路，您可以使用您已使用的 AWS Identity and Access Management (IAM) 政策工具強制執行此操作。例如，您可以要求存取只能透過界面 VPC 端點 (AWS PrivateLink) 或從一系列公司 IP 地址抵達。由於 OpenSearch UI 會使用標準 IAM 請求條件金鑰評估存取權，因此您可以使用與您在別處使用的相同政策語言和條件金鑰 (`aws:SourceVpc`、 `aws:SourceVpce`和 `aws:SourceIp`) AWS。您不需要學習服務特定的政策格式。

您可以將存取權限制在三個層級，從最有目標到最廣泛的：
+ **身分型政策**會限制特定委託人 （使用者或角色）。
+ **VPC 端點政策**會限制使用者可以透過特定端點存取的應用程式。
+ **資源控制政策 (RCP)** 會在組織中的每個帳戶統一強制執行存取，並在驗證*之前*封鎖網路外使用者。

本主題說明 OpenSearch UI 如何評估網路存取並逐步解說最常見的任務，封鎖已核准網路外使用者的登入頁面。如需三個控制項類型的政策範例和 AWS CLI 命令，請參閱 [OpenSearch UI 應用程式的網路存取控制組態參考](application-network-access-reference.md)。如需建立私有連線本身的詳細資訊，請參閱 [從 VPC 端點管理對 OpenSearch UI 的存取](application-access-ui-from-vpc-endpoint.md)。

**Topics**
+ [OpenSearch UI 如何評估網路存取](#application-network-access-how)
+ [先決條件](#application-network-access-prereqs)
+ [從核准的網路外部封鎖登入頁面存取](#application-network-access-block-login-page)
+ [考量事項](#application-network-access-considerations)
+ [OpenSearch UI 應用程式的網路存取控制組態參考](application-network-access-reference.md)

## OpenSearch UI 如何評估網路存取
<a name="application-network-access-how"></a>

OpenSearch UI 會以兩個階段評估存取權，每個階段會針對應用程式資源授權不同的 IAM 動作。
+ **`opensearch:ViewLoginPage`**。 當瀏覽器第一次請求應用程式登入頁面時，在使用者登入*之前*授權。使用者還沒有 AWS 登入資料，因此此請求是匿名的。由於 OpenSearch UI 會在驗證之前評估此動作，因此拒絕網路外請求的資源控制政策會防止網路外使用者到達登入頁面。此拒絕統一適用於 IAM 和 AWS IAM Identity Center 使用者。
+ **`opensearch:ApplicationAccessAll`**。 在使用者登入*後*授權，以存取應用程式及其 APIs。您可以使用身分型政策、VPC 端點政策或 RCP 來限制此動作。

OpenSearch UI 會針對應用程式資源 ARN 授權這兩個動作：

```
arn:aws:opensearch:{{region}}:{{account-id}}:application/{{application-id}}
```

當請求送達時，OpenSearch UI 會從連線的信任網路中繼資料填入下列 IAM 請求條件索引鍵，讓您可以在政策條件中參考它們：
+ `aws:SourceVpce`。 如果有的話，請求透過介面 VPC 端點到達的 ID。
+ `aws:SourceVpc`。 請求到達的 VPC ID，如果有的話。
+ `aws:SourceIp`。 請求的公有來源 IP 地址，適用於未透過 VPC 端點到達的請求。

## 先決條件
<a name="application-network-access-prereqs"></a>
+ 若要限制特定委託人，您必須擁有為存取應用程式的使用者或角色管理 IAM 政策的許可。若要限制端點，您必須具有管理用於到達端點之 VPC 端點政策的許可。
+ 若要使用資源控制政策強制整個組織的存取，您的帳戶必須是已啟用所有功能 AWS 的組織成員，而且您必須具有管理資源控制政策的許可。如需詳細資訊，請參閱 *AWS Organizations 使用者指南*中的[資源控制政策 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
**注意**  
資源控制政策不會影響組織管理帳戶中的資源。若要使用 RCP 限制對 OpenSearch UI 應用程式的網路存取，應用程式必須位於成員帳戶中。
+ 若要限制對 VPC 端點的存取，請先為 OpenSearch UI 建立介面 VPC 端點。如需詳細資訊，請參閱[從 VPC 端點管理對 OpenSearch UI 的存取](application-access-ui-from-vpc-endpoint.md)。
+ 若要執行本主題中的 AWS Command Line Interface (AWS CLI) 範例，請安裝並設定 AWS CLI。如需詳細資訊，請參閱 *AWS Command Line Interface 使用者指南*中的 [AWS Command Line Interface入門](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

## 從核准的網路外部封鎖登入頁面存取
<a name="application-network-access-block-login-page"></a>

下列程序會封鎖已核准網路外使用者的登入頁面。它適用於使用 IAM 或 AWS IAM Identity Center 身分驗證的應用程式，因為 OpenSearch UI 會在使用者登入`opensearch:ViewLoginPage`之前，在請求仍為匿名時授權 。

**封鎖已核准網路外部的登入頁面存取**

1. 確認您的應用程式位於您組織的成員 AWS 帳戶中，且已為您的組織啟用資源控制政策。如需詳細資訊，請參閱《 *AWS Organizations 使用者指南*》中的[啟用政策類型](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_enable-disable.html)。

1. 判斷使用者連線的核准網路路徑，然後選擇相符的條件金鑰。將 `aws:SourceVpce`用於介面 VPC 端點、`aws:SourceVpc`將 用於 VPC，或將 `aws:SourceIp`用於一系列公有 IP 地址，例如您公司網路的輸出範圍。

1. 儲存拒絕的資源控制政策，`opensearch:ViewLoginPage``opensearch:ApplicationAccessAll`除非請求將核准的網路與名為 的本機檔案相符`policy.json`。下列範例會核准單一界面 VPC 端點。如需其他條件索引鍵，請參閱 [OpenSearch UI 應用程式的網路存取控制組態參考](application-network-access-reference.md)。將{{預留位置值}}取代為您自己的 VPC 端點 ID。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideVpce",
               "Effect": "Deny",
               "Principal": "*",
               "Action": [
                   "opensearch:ViewLoginPage",
                   "opensearch:ApplicationAccessAll"
               ],
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "StringNotEqualsIfExists": {
                       "aws:SourceVpce": "{{vpc-endpoint-id}}"
                   }
               }
           }
       ]
   }
   ```

1. 建立資源控制政策。從組織的管理帳戶或從委派管理員帳戶執行下列命令。

   ```
   aws organizations create-policy \
     --name {{DenyOpenSearchUIOffNetwork}} \
     --description "{{Denies OpenSearch UI access from outside the approved network}}" \
     --type RESOURCE_CONTROL_POLICY \
     --content file://policy.json
   ```

   回應包含以 開頭的政策 ID`p-`。請記下下一個步驟的這個值。

1. 將政策連接至組織根目錄、組織單位或包含應用程式的帳戶。若要限制第一次變更的範圍，請將它連接到單一帳戶，並在驗證行為之後展開範圍。

   ```
   aws organizations attach-policy \
     --policy-id {{p-example12345}} \
     --target-id {{111122223333}}
   ```

1. 最多等待一分鐘，政策才會生效。

1. 從核准的網路外請求應用程式登入頁面，網址為 `https://{{application-endpoint}}/_login/`。您會收到`403 forbidden`回應，而不是登入頁面。
**注意**  
請求`/_login/`路徑以確認政策拒絕登入頁面。如果您在沒有路徑的情況下開啟應用程式 URL，您的瀏覽器可能會在請求登入頁面之前重新導向至登入。在這種情況下， `opensearch:ApplicationAccessAll` 會在您登入後拒絕存取。

1. 從核准的網路內請求相同的 URL。登入頁面會轉譯，您可以正常登入。

**注意**  
對於使用 AWS IAM Identity Center 身分驗證的應用程式，請限制使用者登入的網路路徑。OpenSearch UI 會在驗證每個應用程式`opensearch:ViewLoginPage`之前進行評估，因此拒絕它會阻止網路外使用者登入。若要同時限制來自已持有有效工作階段之 IAM Identity Center 使用者的請求，請讓這些使用者透過 VPC 端點到達應用程式。

## 考量事項
<a name="application-network-access-considerations"></a>

設定網路存取控制時，請記住下列事項：
+ **選擇控制項**。使用身分型政策來限制特定主體、使用 VPC 端點政策來控制使用者可透過端點存取的應用程式，以及使用資源控制政策來強制執行整個組織的存取。您可以結合它們進行深度防禦。
+ **預先驗證與已驗證的存取**。只有使用 RCP 強制執行的 會在網路外使用者登入前封鎖他們`opensearch:ViewLoginPage`，並統一套用至 IAM 和 AWS IAM Identity Center 使用者。僅適用於`opensearch:ApplicationAccessAll`限制已驗證主體可從何處存取應用程式的條件。
+ **政策評估**。明確`Deny`一律會覆寫 `Allow`。資源控制政策會設定組織中資源的最大可用許可，而且身分型政策無法覆寫 RCP `Deny`中的明確許可。在廣泛套用之前，針對非生產應用程式測試您的政策。
+ **監控**。使用 AWS CloudTrail 和 IAM Access Analyzer 來檢閱網路條件對存取的影響。