

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

# OpenSearch UI 應用程式的網路存取控制組態參考
<a name="application-network-access-reference"></a>

以下各節提供 OpenSearch UI 支援的每個網路存取控制的政策範例。每個範例都包含要套用的 AWS Command Line Interface (AWS CLI) 命令。如需 OpenSearch UI 如何評估這些政策的說明，以及最常見任務的逐步演練，請參閱 [限制對 OpenSearch UI 應用程式的網路存取](application-network-access.md)。

根據您要保護的範圍和使用者連線的網路路徑，選擇範例：


| Scope (範圍) | 控制項 | 封鎖登入頁面 | 
| --- | --- | --- | 
| 單一主體 | 身分型政策 | 否 | 
| 單一 VPC 端點 | VPC 端點政策 | 否 | 
| 組織中的每個帳戶 | 資源控制政策 (RCP) | 是 | 

**注意**  
只有拒絕 的資源控制政策會在驗證前`opensearch:ViewLoginPage`封鎖網路外使用者。身分型和 VPC 端點政策會在使用者登入後套用。

**Topics**
+ [將委託人限制為 VPC 端點](#application-network-access-identity-vpce)
+ [將委託人限制為 IP 地址範圍](#application-network-access-identity-ip)
+ [使用 VPC 端點政策限制存取](#application-network-access-endpoint-policy)
+ [在整個組織中強制執行 VPC 端點存取](#application-network-access-rcp-vpce)
+ [在整個組織中強制執行 VPC 存取](#application-network-access-rcp-vpc)
+ [在整個組織中強制執行 IP 地址範圍存取](#application-network-access-rcp-ip)

## 將委託人限制為 VPC 端點
<a name="application-network-access-identity-vpce"></a>

下列身分型政策會拒絕使用者或角色存取 OpenSearch UI 應用程式，除非請求透過指定的界面 VPC 端點到達。將它連接到存取應用程式的 IAM 主體。將{{預留位置值}}取代為您自己的 VPC 端點 ID。

**將主體限制為 VPC 端點**

1. 將下列政策儲存至名為 的本機檔案`policy.json`。

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

1. 建立 IAM 政策。

   ```
   aws iam create-policy \
     --policy-name {{DenyOpenSearchUIOutsideVpce}} \
     --description "{{Denies OpenSearch UI access outside the approved VPC endpoint}}" \
     --policy-document file://policy.json
   ```

   回應包含政策 ARN。請記下下一個步驟的這個值。

1. 將政策連接至存取應用程式的 IAM 角色或使用者。

   ```
   aws iam attach-role-policy \
     --role-name {{OpenSearchUIUserRole}} \
     --policy-arn {{arn:aws:iam::111122223333:policy/DenyOpenSearchUIOutsideVpce}}
   ```

政策生效後，主體會在從核准的 VPC 端點外部存取應用程式時收到`403 forbidden`回應。透過端點存取可正常運作。

## 將委託人限制為 IP 地址範圍
<a name="application-network-access-identity-ip"></a>

除非請求來自核准的 IP 地址範圍，例如您公司網路的公有輸出範圍，否則下列身分型政策會拒絕存取。在 CIDR 表示法中將{{預留位置值}}取代為您自己的 IP 地址範圍。

**將委託人限制為 IP 地址範圍**

1. 將下列政策儲存至名為 的本機檔案`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideCorpNetwork",
               "Effect": "Deny",
               "Action": "opensearch:ApplicationAccessAll",
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "NotIpAddress": {
                       "aws:SourceIp": [
                           "{{203.0.113.0/24}}",
                           "{{198.51.100.0/24}}"
                       ]
                   }
               }
           }
       ]
   }
   ```

1. 建立 IAM 政策。

   ```
   aws iam create-policy \
     --policy-name {{DenyOpenSearchUIExternalAccess}} \
     --description "{{Denies OpenSearch UI access from outside corporate IP ranges}}" \
     --policy-document file://policy.json
   ```

1. 將政策連接至存取應用程式的 IAM 角色或使用者。

   ```
   aws iam attach-role-policy \
     --role-name {{OpenSearchUIUserRole}} \
     --policy-arn {{arn:aws:iam::111122223333:policy/DenyOpenSearchUIExternalAccess}}
   ```

**注意**  
當請求透過 VPC 端點抵達時， `aws:SourceIp` 不存在。如果您同時使用私有 (VPC 端點） 和公有 (IP 限制） 存取路徑，請考量政策中的兩個條件金鑰，以免意外拒絕合法的 VPC 端點流量。

## 使用 VPC 端點政策限制存取
<a name="application-network-access-endpoint-policy"></a>

以身分為基礎的政策會管理特定委託人。若要控制使用者可以*透過* VPC 端點到達的應用程式，無論哪個主體連接，請將政策連接到介面 VPC 端點本身。下列端點政策僅允許存取特定應用程式。將{{預留位置值}}取代為您自己的 AWS 區域、帳戶 ID 和應用程式 ID。

**使用 VPC 端點政策限制存取**

1. 將下列政策儲存至名為 的本機檔案`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "AllowOpenSearchUIApplication",
               "Effect": "Allow",
               "Principal": "*",
               "Action": "opensearch:ApplicationAccessAll",
               "Resource": "arn:aws:opensearch:{{region}}:{{account-id}}:application/{{application-id}}"
           }
       ]
   }
   ```

1. 將政策套用至介面 VPC 端點。

   ```
   aws ec2 modify-vpc-endpoint \
     --vpc-endpoint-id {{vpce-1a2b3c4d5e6f7g8h9}} \
     --policy-document file://policy.json
   ```

如需 OpenSearch UI 的 VPC 端點政策的詳細資訊，請參閱 [從 VPC 端點管理對 OpenSearch UI 的存取](application-access-ui-from-vpc-endpoint.md)。

## 在整個組織中強制執行 VPC 端點存取
<a name="application-network-access-rcp-vpce"></a>

身分型政策會限制特定主體，而 VPC 端點政策會限制特定端點。若要在整個組織中的每個帳戶統一強制執行網路存取，並在驗證*前*封鎖網路外使用者，請將資源控制政策 (RCP) 連接至您的 AWS 組織。

除非請求透過指定的 VPC 端點到達，否則下列資源控制政策會拒絕對組織中 OpenSearch UI 應用程式的所有存取。它會同時拒絕驗證前登入頁面 (`opensearch:ViewLoginPage`) 和已驗證的存取 (`opensearch:ApplicationAccessAll`)。核准網路外的使用者無法載入登入頁面，也無法存取應用程式。將{{預留位置值}}取代為您自己的 VPC 端點 ID。

**在整個組織中強制執行 VPC 端點存取**

1. 將下列政策儲存至名為 的本機檔案`policy.json`。

   ```
   {
       "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 {{DenyOpenSearchUIOutsideVpce}} \
     --description "{{Denies OpenSearch UI access outside the approved VPC endpoint}}" \
     --type RESOURCE_CONTROL_POLICY \
     --content file://policy.json
   ```

1. 視您要保護的範圍而定，將政策連接至組織根目錄、組織單位或帳戶。

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

   如需詳細資訊，請參閱《 *AWS Organizations 使用者指南*》中的[連接和分離資源控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps_attach.html)。

政策生效後，核准的 VPC 端點以外的使用者無法存取應用程式。根據應用程式的身分驗證類型和請求的 URL，使用者會收到`403 forbidden`回應而非登入頁面，或重新導向至登入，然後被拒絕存取應用程式。如果您透過 VPC 端點連線，您會到達登入頁面並正常登入。

**注意**  
資源控制政策的變更最多可能需要一分鐘才會生效。如果您在建立、更新或連接政策後立即進行測試，您仍然可能會觀察到先前的行為。

## 在整個組織中強制執行 VPC 存取
<a name="application-network-access-rcp-vpc"></a>

若要核准 VPC 中的每個界面 VPC 端點，而不是命名一個端點，請使用 `aws:SourceVpc`。除非請求透過指定的 VPC 到達，否則下列資源控制政策會拒絕整個組織的存取。將{{預留位置值}}取代為您自己的 VPC ID。

**在整個組織中強制執行 VPC 存取**

1. 將下列政策儲存至名為 的本機檔案`policy.json`。

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

1. 建立並連接資源控制政策。

   ```
   aws organizations create-policy \
     --name {{DenyOpenSearchUIOutsideVpc}} \
     --description "{{Denies OpenSearch UI access outside the approved VPC}}" \
     --type RESOURCE_CONTROL_POLICY \
     --content file://policy.json
   
   aws organizations attach-policy \
     --policy-id {{p-example12345}} \
     --target-id {{111122223333}}
   ```

## 在整個組織中強制執行 IP 地址範圍存取
<a name="application-network-access-rcp-ip"></a>

下列資源控制政策拒絕整個組織的存取，除非請求來自核准的 IP 地址範圍，例如您公司的網路公有輸出範圍。在 CIDR 表示法中將{{預留位置值}}取代為您自己的 IP 地址範圍。

**強制跨組織存取 IP 地址範圍**

1. 將下列政策儲存至名為 的本機檔案`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideCorpNetwork",
               "Effect": "Deny",
               "Principal": "*",
               "Action": [
                   "opensearch:ViewLoginPage",
                   "opensearch:ApplicationAccessAll"
               ],
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "NotIpAddress": {
                       "aws:SourceIp": [
                           "{{203.0.113.0/24}}",
                           "{{198.51.100.0/24}}"
                       ]
                   }
               }
           }
       ]
   }
   ```

1. 建立並連接資源控制政策。

   ```
   aws organizations create-policy \
     --name {{DenyOpenSearchUIExternalAccess}} \
     --description "{{Denies OpenSearch UI access from outside corporate IP ranges}}" \
     --type RESOURCE_CONTROL_POLICY \
     --content file://policy.json
   
   aws organizations attach-policy \
     --policy-id {{p-example12345}} \
     --target-id {{111122223333}}
   ```

**注意**  
如同身分型 IP 範例， `aws:SourceIp` 不會出現在透過 VPC 端點到達的請求上。如果您同時使用私有和公有存取路徑，請考量這兩個條件金鑰，以免意外拒絕合法的 VPC 端點流量。