

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# OpenSearch UI 应用程序的网络访问控制配置参考
<a name="application-network-access-reference"></a>

以下部分提供了 OpenSearch UI 支持的每种网络访问控制的策略示例。每个示例都包含用于应用它的 AWS Command Line Interface (AWS CLI) 命令。有关 OpenSearch UI 如何评估这些策略的解释以及最常见任务的分步演练，请参阅。[限制 OpenSearch 用户界面应用程序的网络访问权限](application-network-access.md)

根据您要保护的范围和用户连接的网络路径选择示例：


| Scope | 控件 | 屏蔽登录页面 | 
| --- | --- | --- | 
| 单一校长 | Identity-based 政策 | 否 | 
| 单个 VPC 终端节点 | VPC 端点策略 | 否 | 
| 组织中的每个账户 | 资源控制策略（RCP） | 是 | 

**注意**  
只有拒绝的资源控制策略才能在网络外用户进行身份验证之前`opensearch:ViewLoginPage`阻止他们。 Identity-based 和 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 委托人。{{placeholder value}}用您自己的 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 地址范围，例如您公司网络的公共出口范围。{{placeholder values}}以 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-restricted）访问路径，请在策略中考虑这两个条件密钥，这样您就不会无意中拒绝合法的 VPC 终端节点流量。

## 使用 VPC 终端节点策略限制访问
<a name="application-network-access-endpoint-policy"></a>

基于身份的策略管理特定的委托人。要控制用户可以*通过 * VPC 终端节点访问哪些应用程序，无论哪个主体连接，请将策略附加到接口 VPC 终端节点本身。以下端点策略仅允许访问特定的应用程序。将{{placeholder values}}替换为您自己的 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 用户界面的访问](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`)。经批准的网络之外的用户既无法加载登录页面，也无法访问应用程序。{{placeholder value}}用您自己的 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 组织用户指南》[中的](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 到达，否则以下资源控制策略会拒绝整个组织的访问。{{placeholder value}}用您自己的 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 地址范围，例如公司网络的公共出口范围，否则以下资源控制策略会拒绝整个组织的访问。{{placeholder values}}以 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 终端节点流量。