

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

# Amazon OpenSearch Serverless 的网络访问
<a name="serverless-network"></a>

Amazon OpenSearch Serverless 馆藏的网络设置决定了该馆藏是否可以从公共网络通过互联网访问，还是必须以私密方式访问。

私有访问适用于以下一种或两种情形：
+ OpenSearch 无服务器托管的 VPC 终端节点
+ 支持， AWS 服务 例如 Amazon Bedrock

您可以分别为集合的*OpenSearch*端点及其对应的*OpenSearch 仪表板*端点配置网络访问权限。

网络访问权限是允许从不同源网络进行访问的隔离机制。例如，如果集合的 OpenSearch Dashboards 端点可以公开访问，但 OpenSearch API 端点不可访问，则用户在从公共网络连接时只能通过仪表板访问集合数据。如果他们尝试 OpenSearch APIs直接从公共网络呼叫，他们将被屏蔽。网络设置可以用于源类型到资源类型的此类排列。Amazon OpenSearch Serverless 同时支持 IPv4 和 IPv6连接。

**Topics**
+ [网络策略](#serverless-network-policies)
+ [注意事项](#serverless-network-considerations)
+ [配置网络策略所需的权限](#serverless-network-permissions)
+ [策略优先顺序](#serverless-network-precedence)
+ [创建网络策略（控制台）](#serverless-network-console)
+ [创建网络策略（AWS CLI）](#serverless-network-cli)
+ [查看网络策略](#serverless-network-list)
+ [更新网络策略](#serverless-network-update)
+ [删除网络策略](#serverless-network-delete)

## 网络策略
<a name="serverless-network-policies"></a>

网络策略使您能够通过为符合策略中定义的规则的集合自动分配网络访问权限设置，从而大规模管理许多集合。

在网络策略中，您可以指定一系列*规则*。这些规则定义了对集合端点和 OpenSearch 仪表板端点的访问权限。每条规则都由访问类型（公共或私有）和资源类型（集合和/或 OpenSearch 仪表板端点）组成。对于每种资源类型（`collection` 和 `dashboard`），您可以指定一系列规则，用于定义策略将适用于哪些集合。

在此示例策略中，第一条规则针对以 `marketing*` 一词开头的所有集合，指定了对集合端点和控制面板端点的 VPC 端点访问权限。此外还指定了 Amazon Bedrock 访问权限。

**注意**  
 AWS 服务 诸如 Amazon Bedrock 之类的私有访问权限*仅*适用于集合的 OpenSearch 终端节点，不适用于 OpenSearch 控制面板终端节点。即使`ResourceType`是`dashboard`，也 AWS 服务 无法授予对 OpenSearch 仪表板的访问权限。

第二条规则指定针对 `finance` 集合的公共访问权限，但仅适用于集合端点（无控制面板访问权限）。

```
[
   {
      "Description":"Marketing access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/marketing*"
            ]
         },
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/marketing*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   },
   {
      "Description":"Sales access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

此政策仅为以 “财务” 开头的集合提供对 OpenSearch 仪表板的公开访问权限。任何直接访问 OpenSearch API 的尝试都将失败。

```
[
  {
    "Description": "Dashboards access",
    "Rules": [
      {
        "ResourceType": "dashboard",
        "Resource": [
          "collection/finance*"
        ]
      }
    ],
    "AllowFromPublic": true
  }
]
```

网络策略可以应用于现有集合以及未来集合。例如，您可以创建一个集合，然后使用与集合名称相匹配的规则创建网络策略。在创建集合之前，无需创建网络策略。

## 注意事项
<a name="serverless-network-considerations"></a>

在为集合配置网络访问权限时，请考虑以下事项：
+ 如果您计划为集合配置 VPC 终端节点访问权限，则必须先创建至少一个[OpenSearch 无服务器托管的 VPC](serverless-vpc.md) 终端节点。
+ 对的私有访问权限 AWS 服务 仅适用于集合的 OpenSearch端点，不适用于 OpenSearch 仪表板端点。即使`ResourceType`是`dashboard`，也 AWS 服务 无法授予对 OpenSearch 仪表板的访问权限。
+ 如果集合可以从公共网络访问，则也可以从所有 OpenSearch 无服务器托管的 VPC 终端节点和所有终端节点访问该集合。 AWS 服务
+ 多个网络策略可以应用于一个集合。有关更多信息，请参阅 [策略优先顺序](#serverless-network-precedence)。

## 配置网络策略所需的权限
<a name="serverless-network-permissions"></a>

 OpenSearch 无服务器的网络访问使用以下 AWS Identity and Access Management (IAM) 权限。您可以指定 IAM 条件，以将用户限制到与特定集合相关的网络策略。
+ `aoss:CreateSecurityPolicy`：创建网络访问策略。
+ `aoss:ListSecurityPolicies`：列出当前账户中的所有网络策略。
+ `aoss:GetSecurityPolicy`：查看网络访问策略规范。
+ `aoss:UpdateSecurityPolicy`：修改给定的网络访问策略，并更改 VPC ID 或公共访问指定。
+ `aoss:DeleteSecurityPolicy`：删除网络访问策略（将其与所有集合分离后）。

以下基于身份的访问策略允许用户查看所有网络策略，并使用资源模式 `collection/application-logs` 更新策略：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aoss:UpdateSecurityPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": "application-logs"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:ListSecurityPolicies",
                "aoss:GetSecurityPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
此外， OpenSearch Serverless 需要`aoss:APIAccessAll`和`aoss:DashboardsAccessAll`权限才能使用集合资源。有关更多信息，请参阅 [使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 策略优先顺序
<a name="serverless-network-precedence"></a>

在某些情况下，网络策略规则可能会在策略内部或策略之间重叠。发生这种情况时，对于以下*两条*规则共用的任何集合，指定公有访问权限的规则将覆盖指定私有访问权限的规则。

例如，在以下策略中，两条规则都指定针对 `finance` 集合的网络访问权限，但一条规则指定 VPC 访问权限，而另一条规则指定公共访问权限。在这种情况下，公共访问权限*仅会针对“finance”（财务）集合*（因为该集合同时存在于两条规则中）覆盖 VPC 访问权限，因此可以从公共网络访问“finance”（财务）集合。“sales”（销售）集合将具有从指定端点进行 VPC 访问的权限。

```
[
   {
      "Description":"Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/sales",
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ]
   },
   {
      "Description":"Rule 2",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

如果不同规则中的多个 VPC 端点适用于一个集合，则这些规则具有累加性，可以从所有指定端点访问该集合。如果您设置`AllowFromPublic`为`true`但同时提供一个或多个`SourceVPCEs`或`SourceServices`，则 OpenSearch Serverless 会忽略 VPC 终端节点和服务标识符，关联的集合将具有公开访问权限。

## 创建网络策略（控制台）
<a name="serverless-network-console"></a>

网络策略可以应用于现有集合以及未来集合。建议您在开始创建集合之前，先创建网络策略。

**创建 OpenSearch 无服务器网络策略**

1. 在[https://console.aws.amazon.com/aos/家](https://console.aws.amazon.com/aos/home )中打开亚马逊 OpenSearch 服务控制台。

1. 在左侧导航面板上，展开 **Serverless**（无服务器），然后选择 **Network policies**（网络策略）。

1. 选择 **Create network policy**（创建网络策略）。

1. 为策略提供名称和描述。

1. 提供一条或多条*规则*。这些规则定义了您的 OpenSearch 无服务器集合及其 OpenSearch 仪表板端点的访问权限。

   每个规则包含以下元素：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/serverless-network.html)

   对于您选择的每种资源类型，您可以选择要应用策略设置的现有集合， and/or 创建一个或多个资源模式。资源模式由前缀和通配符 (\$1) 组成，用于定义策略设置将应用于哪些集合。

   例如，如果您包括名为 `Marketing*` 的模式，则名称以“Marketing”（营销）开头的任何新建或现有集合都将自动应用此策略中的网络设置。一个通配符 (`*`) 可将策略应用于所有当前和未来集合。

   此外，您可以指定不带通配符的 f *ut* ure 集合的名称，例如`Finance`。 OpenSearch Serverless 会将策略设置应用于任何新创建的具有该名称的集合。

1. 当您对策略配置感到满意时，选择 **Create**（创建）。

## 创建网络策略（AWS CLI）
<a name="serverless-network-cli"></a>

要使用 OpenSearch 无服务器 API 操作创建网络策略，您需要以 JSON 格式指定规则。该[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html)请求接受内联策略和.json 文件。所有集合和模式都必须采用 `collection/<collection name|pattern>` 形式。

**注意**  
资源类型`dashboards`仅允许访问 OpenSearch 仪表板的权限，但是为了使 OpenSearch 仪表板正常运行，您还必须允许来自相同来源的集合访问权限。有关示例，请参阅下面的第二个策略。

要指定私有访问，请包含以下一个或两个元素：
+ `SourceVPCEs`— 指定一个或多个 OpenSearch 无服务器托管 VPC 终端节点。
+ `SourceServices`— 指定一个或多个支持的标识符 AWS 服务。目前支持以下服务的标识符：
  + `bedrock.amazonaws.com` – Amazon Bedrock

以下示例网络策略向一个 VPC 端点和 Amazon Bedrock 授予了对集合端点的私有访问权限，但仅限以前缀 `log*` 开头的集合。经过身份验证的用户无法登录 OpenSearch 控制面板；他们只能通过编程方式访问集合端点。

```
[
   {
      "Description":"Private access for log collections",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/log*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   }
]
```

以下策略为名为的单个集合提供对 OpenSearch 终端节点*和* OpenSearch 仪表板的公共访问权限`finance`。如果集合不存在，则网络设置将在创建该集合时应用于该集合。

```
[
   {
      "Description":"Public access for finance collection",
      "Rules":[
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/finance"
            ]
         },
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

以下请求将创建上述网络策略：

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type network \
    --policy "[{\"Description\":\"Public access for finance collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/finance\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/finance\"]}],\"AllowFromPublic\":true}]"
```

要在 JSON 文件中提供策略，请使用 `--policy file://my-policy.json` 格式

## 查看网络策略
<a name="serverless-network-list"></a>

在创建集合之前，您可能想预览账户中的现有网络策略，以查看哪个网络策略的资源模式与您的集合名称相匹配。以下[ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html)请求列出了您账户中的所有网络政策：

```
aws opensearchserverless list-security-policies --type network
```

该请求将返回有关所有已配置的网络策略的信息。要查看某一具体策略中定义的模式规则，请在响应的 `securityPolicySummaries` 元素内容中查找策略信息。请注意本政策`type`的`name`和，并在[GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html)请求中使用这些属性来接收包含以下策略详细信息的响应：

```
{
    "securityPolicyDetail": [
        {
            "type": "network",
            "name": "my-policy",
            "policyVersion": "MTY2MzY5MTY1MDA3Ml8x",
            "policy": "[{\"Description\":\"My network policy rule\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection/*\"]}],\"AllowFromPublic\":true}]",
            "createdDate": 1663691650072,
            "lastModifiedDate": 1663691650072
        }
    ]
}
```

要查看有关特定策略的详细信息，请使用[GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html)命令。

## 更新网络策略
<a name="serverless-network-update"></a>

当您修改针对网络的 VPC 端点或公共访问权限指定时，所有相关集合都会受到影响。要在 OpenSearch Serverless 控制台中更新网络策略，请展开**网络策略**，选择要修改的策略，然后选择**编辑**。进行更改，然后选择**保存**。

要使用 OpenSearch 无服务器 API 更新网络策略，请使用[UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html)命令。您必须在请求中包括策略版本。您可以使用 `ListSecurityPolicies` 或 `GetSecurityPolicy` 命令检索策略版本。包括最新策略版本可以确保您不会无意中覆盖其他人所做的更改。

以下请求将使用新策略 JSON 文档更新网络策略：

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type network \
    --policy-version MTY2MzY5MTY1MDA3Ml8x \
    --policy file://my-new-policy.json
```

## 删除网络策略
<a name="serverless-network-delete"></a>

必须先将网络策略与所有集合分离，然后才能删除网络策略。要在 OpenSearch 无服务器控制台中删除策略，请选择该策略并选择**删除**。

你也可以使用以下[DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html)命令：

```
aws opensearchserverless delete-security-policy --name my-policy --type network
```