

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

# Amazon OpenSearch Serverless 中的安全概述
<a name="serverless-security"></a>

Amazon OpenSearch Serverless 中的安全与亚马逊 OpenSearch 服务中的安全有根本的区别，具体体现在以下方面：


| 功能 | OpenSearch 服务 | OpenSearch 无服务器 | 
| --- | --- | --- | 
| 数据访问控制 | 数据访问权限由 IAM policy 和精细访问控制决定。 | 数据访问权限由数据访问策略决定。 | 
| 静态加密 | 对于域，静态加密是可选的。 | 对于集合，静态加密是必需的。 | 
| 安全设置和管理 | 必须为每个域单独配置网络、加密和数据访问权限。 | 您可以使用安全策略大规模管理多个集合的安全设置。 | 

下图说明了构成功能集合的安全组件。集合必须具有已分配的加密密钥、网络访问权限设置，以及相匹配的数据访问策略，该策略授予针对其资源的权限。

![\[Diagram showing encryption, network, data access, and authentication policies for a collection.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-security.png)


**Topics**
+ [加密策略](#serverless-security-encryption)
+ [网络策略](#serverless-security-network)
+ [数据访问策略](#serverless-security-data-access)
+ [IAM 和 SAML 身份验证](#serverless-security-authentication)
+ [基础结构安全性](#serverless-infrastructure-security)
+ [Amazon OpenSearch Serverless 中的安全入门](serverless-tutorials.md)
+ [适用于 Amazon OpenSearch Serverless 的身份和访问管理](security-iam-serverless.md)
+ [Amazon OpenSearch 无服务器中的加密](serverless-encryption.md)
+ [Amazon OpenSearch Serverless 的网络访问](serverless-network.md)
+ [亚马逊 OpenSearch 无服务器中的 FIPS 合规性](fips-compliance-opensearch-serverless.md)
+ [Amazon OpenSearch 无服务器的数据访问控制](serverless-data-access.md)
+ [通过以下方式访问数据平面 AWS PrivateLink](serverless-vpc.md)
+ [通过控制飞机访问 AWS PrivateLink](serverless-vpc-cp.md)
+ [适用于 Amazon 无服务器的 SAM OpenSearch L 身份验证](serverless-saml.md)
+ [Amazon OpenSearch Serverless 合规性验证](serverless-compliance-validation.md)

## 加密策略
<a name="serverless-security-encryption"></a>

[加密策略](serverless-encryption.md)定义了您的馆藏是使用还是使用客户托管密钥进行加密。 AWS 拥有的密钥 加密策略由两个组件组成：**资源模式**和**加密密钥**。资源模式将定义该策略适用于哪个或哪些集合。加密密钥决定如何保护关联的集合。

要将一个策略应用于多个集合，请在策略规则中包含通配符 (\$1)。例如，以下策略适用于名称以“logs”（日志）开头的所有集合。

![\[Input field for specifying a prefix term or collection name, with "logs*" entered.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-security-encryption.png)


加密策略可以简化创建和管理集合的过程，尤其是当您以编程方式创建和管理集合时。指定名称即可创建集合，并在创建时自动为其分配加密密钥。

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

[网络策略](serverless-network.md)定义您的集合是必须以私有方式访问，还是可以通过互联网从公共网络访问。*私有馆藏可以通过 OpenSearch 无服务器托管的 VPC 终端节点进行访问，也可以通过诸如 Amazon Bedrock AWS 服务 之类的 AWS 服务 特定终端节点使用私有访问权限进行访问。*就像加密策略一样，网络策略也可以应用于多个集合，这使您可以大规模管理很多集合的网络访问权限。

网络策略由两个组件组成：**访问权限类型**和**资源类型**。访问类型可以是公有也可以是私有。资源类型决定了您选择的访问权限是适用于集合端点、 OpenSearch 仪表板端点还是两者兼而有之。

![\[Access type and resource type options for configuring network policies in OpenSearch.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-security-network.png)


如果您计划在网络策略中配置 VPC 访问权限，则必须先创建一个或多个[OpenSearch 无服务器托管的 VPC](serverless-vpc.md) 终端节点。这些终端节点允许您像访问您的 VPC 一样访问 OpenSearch 无服务器，无需使用互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。

对的私有访问权限 AWS 服务 只能应用于集合的 OpenSearch端点，不能应用于 OpenSearch 仪表板端点。 AWS 服务 无法被授予对 OpenSearch 仪表板的访问权限。

## 数据访问策略
<a name="serverless-security-data-access"></a>

[数据访问策略](serverless-data-access.md)定义您的用户如何访问您的集合中的数据。数据访问策略通过自动为匹配特定模式的集合和索引分配访问权限，帮助您大规模管理集合。多个策略可应用于一个资源。

数据访问策略由一组规则组成，每条规则包含三个组件：**资源类型**、**授予的资源**和一组**权限**。资源类型可以是集合或索引。授予的资源可以是带有通配符 (\$1) 的 collection/index 名称或模式。权限列表指定了策略向哪[OpenSearch 些 API 操作](serverless-genref.md#serverless-operations)授予访问权限。此外，策略还包含**主体**列表，用于指定要向其授予访问权限的 IAM 角色、用户和 SAML 身份。

![\[Selected principals and granted resources with permissions for collection and index access.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-data-access.png)


有关数据访问策略格式的更多信息，请参阅[策略语法](serverless-data-access.md#serverless-data-access-syntax)。

在创建数据访问策略之前，您必须拥有一个或多个 IAM 角色、用户或 SAML 身份，才能在策略中为其提供访问权限。有关详细信息，请参阅下一节。

**注意**  
将您的集合从公共访问切换到私有访问权限将移除 OpenSearch 无服务器集合控制台中的 “索引” 选项卡。

## IAM 和 SAML 身份验证
<a name="serverless-security-authentication"></a>

 IAM 主体和 SAML 身份是数据访问策略的构建基块之一。在访问策略的 `principal` 语句中，您可以包含 IAM 角色、用户和 SAML 身份。然后，向这些主体授予您在关联的策略规则中指定的权限。

```
[
   {
      "Rules":[
         {
            "ResourceType":"index",
            "Resource":[
               "index/marketing/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie"
      ]
   }
]
```

您可以直接在 OpenSearch 无服务器中配置 SAML 身份验证。有关更多信息，请参阅 [适用于 Amazon 无服务器的 SAM OpenSearch L 身份验证](serverless-saml.md)。

## 基础结构安全性
<a name="serverless-infrastructure-security"></a>

Amazon OpenSearch Serverless 受 AWS 全球网络安全的保护。有关 AWS 安全服务以及如何 AWS 保护基础设施的信息，请参阅[AWS 云安全](https://aws.amazon.com/security/)。要使用基础设施安全的最佳实践来设计您的 AWS 环境，请参阅 S * AWS ecurity Pillar Well-Architected Fram* ework 中的[基础设施保护](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 已发布的 API 调用通过网络访问 Amazon OpenSearch Serverless。客户端必须支持传输层安全性（TLS）。我们要求使用 TLS 1.2，建议使用 TLS 1.3。有关 TLS 1.3 支持的密码列表，请参阅《弹性负载均衡文档》中的 [TLS protocols and ciphers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#tls-protocols-ciphers)。

此外，必须使用访问密钥 ID 和与 IAM 主体关联的秘密访问密钥来对请求进行签名。或者，您可以使用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)（AWS STS）生成临时安全凭证来对请求进行签名。

# Amazon OpenSearch Serverless 中的安全入门
<a name="serverless-tutorials"></a>

以下教程可帮助您开始使用 Amazon OpenSearch Serverless。这两个教程将完成相同的基本步骤，但一个使用控制台，另一个则使用 AWS CLI。

请注意，这些教程中的应用场景已简化。网络和安全策略非常开放。在生产工作负载中，建议您配置更强大的安全功能，如 SAML 身份验证、VPC 访问权限和限制性数据访问策略。

**Topics**
+ [教程：Amazon OpenSearch Serverless（控制台）安全入门](gsg-serverless.md)
+ [教程：亚马逊 OpenSearch 无服务器 (CLI) 安全入门](gsg-serverless-cli.md)

# 教程：Amazon OpenSearch Serverless（控制台）安全入门
<a name="gsg-serverless"></a>

本教程将引导您完成使用 Amazon OpenSearch Serverless 控制台创建和管理安全策略的基本步骤。

在本教程中，您将完成以下步骤：

1. [配置权限](#gsgpermissions)

1. [创建加密策略](#gsg-encryption)

1. [创建网络策略](#gsg-network)

1. [配置数据访问策略](#gsg-data-access)

1. [创建集合](#gsgcreate-collection)

1. [上传和搜索数据](#gsgindex-collection)

本教程将引导您完成使用设置收藏夹的过程 AWS 管理控制台。有关使用中的相同步骤 AWS CLI，请参阅[教程：亚马逊 OpenSearch 无服务器 (CLI) 安全入门](gsg-serverless-cli.md)。

## 步骤 1：配置权限
<a name="gsgpermissions"></a>

**注意**  
如果您已经在使用更广泛的基于身份的策略，如 `Action":"aoss:*"` 或 `Action":"*"`，则可以跳过此步骤。但在生产环境中，建议您遵循最低权限原则，仅分配完成任务所需的最低权限。

要完成本教程，您必须拥有正确的 IAM 权限。您的用户或角色必须已经附加[基于身份的策略](security-iam-serverless.md#security-iam-serverless-id-based-policies)，并且具有以下最低权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "aoss:ListCollections",
        "aoss:BatchGetCollection",
        "aoss:CreateCollection",
        "aoss:CreateSecurityPolicy",
        "aoss:GetSecurityPolicy",
        "aoss:ListSecurityPolicies",
        "aoss:CreateAccessPolicy",
        "aoss:GetAccessPolicy",
        "aoss:ListAccessPolicies"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

有关 OpenSearch 无服务器权限的完整列表，请参阅[适用于 Amazon OpenSearch Serverless 的身份和访问管理](security-iam-serverless.md)。

## 步骤 2：创建加密策略
<a name="gsg-encryption"></a>

[加密策略](serverless-encryption.md)指定了 AWS KMS OpenSearch Serverless 用于加密集合的密钥。您可以使用 AWS 托管式密钥 或不同的密钥对集合进行加密。在本教程中，为简单起见，我们将使用 AWS 托管式密钥对集合进行加密。

**创建加密策略**

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

1. 展开左侧导航窗格中的 **Serverless**（无服务器），然后选择 **Encryption policies**（加密策略）。

1. 选择 **Create encryption policy**（创建加密策略）。

1. 将该策略命名为 **books-policy**。对于描述，请输入 **Encryption policy for books collection**（适用于书籍集合的加密策略）。

1. 在 **Resources**（资源）下，输入 **books**（书籍），您将使用它为您的集合命名。如果您想扩大范围，可以添加星号 (`books*`)，以使该策略适用于以“books”（书籍）一词开头的所有集合。

1. 对于**加密**，保持选中 “**使用 AWS 自有密钥**”。

1. 选择**创建**。

## 步骤 3：创建网络策略
<a name="gsg-network"></a>

[网络策略](serverless-network.md)决定您的馆藏是否可通过互联网从公共网络访问，或者是否必须通过 OpenSearch 无服务器托管的 VPC 终端节点进行访问。在本教程中，我们将配置公共访问权限。

**创建网络策略**

1. 选择左侧导航窗格中的 **Network policies**（网络策略），然后选择 **Create network policy**（创建网络策略）。

1. 将该策略命名为 **books-policy**。对于描述，请输入 **Network policy for books collection**（适用于书籍集合的网络策略）。

1. 在 **Rule 1**（规则 1）下，将规则命名为 **Public access for books collection**（针对书籍集合的公共访问权限）。

1. 在本教程中，为简单起见，我们将配置针对 *books*（书籍）集合的公共访问权限。对于访问权限类型，选择 **Public**（公共）。

1. 我们将从 OpenSearch 仪表板访问该集合。为此，您需要为仪表板*和* OpenSearch 端点配置网络访问权限，否则仪表板将无法运行。

   对于资源类型，启用** OpenSearch终端节点访问权限**和** OpenSearch控制面板访问权限**。

1. 在两个输入框中，输入 **Collection Name = books**（集合名称 = 书籍）。此设置将缩小该策略的范围，使其仅适用于单个集合 (`books`)。您的规则应如下所示：  
![\[Search interface showing two input fields for collection or prefix term selection, both set to "books".\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-tutorial-network.png)

1. 选择**创建**。

## 步骤 4：创建数据访问策略
<a name="gsg-data-access"></a>

您的集合数据将不可访问，直到您配置数据访问权限为止。[数据访问策略](serverless-data-access.md)与您在步骤 1 中配置的 IAM 基于身份的策略是分开的。它们允许用户访问集合中的实际数据。

在本教程中，我们将为单个用户提供将数据索引到 *books*（书籍）集合所需的权限。

**创建数据访问策略**

1. 选择左侧导航窗格中的 **Data access policies**（数据访问策略），然后选择 **Create access policy**（创建访问策略）。

1. 将该策略命名为 **books-policy**。对于描述，请输入 **Data access policy for books collection**（适用于书籍集合的数据访问策略）。

1. 为策略定义方法选择 **JSON**，然后将以下策略粘贴到 JSON 编辑器中。

   将委托人 ARN 替换为用于登录 OpenSearch 控制面板和索引数据的账户的 ARN。

   ```
   [
      {
         "Rules":[
            {
               "ResourceType":"index",
               "Resource":[
                  "index/books/*"
               ],
               "Permission":[
                  "aoss:CreateIndex",
                  "aoss:DescribeIndex", 
                  "aoss:ReadDocument",
                  "aoss:WriteDocument",
                  "aoss:UpdateIndex",
                  "aoss:DeleteIndex"
               ]
            }
         ],
         "Principal":[
            "arn:aws:iam::123456789012:user/my-user"
         ]
      }
   ]
   ```

   此策略将为单个用户提供在 *books*（书籍）集合中创建索引、索引某些数据和以及搜索这些数据所需的最低权限。

1. 选择**创建**。

## 步骤 5：创建集合
<a name="gsgcreate-collection"></a>

您已经配置了加密和网络策略，现在您可以创建相匹配的集合，安全设置将自动应用于该集合。

**创建 OpenSearch 无服务器集合**

1. 选择左侧导航窗格中的 **Collections**（集合），然后选择 **Create collection**（创建集合）。

1. 将该集合命名为 **books**（书籍）。

1. 对于集合类型，选择 **Search**（搜索）。

1. 在 “**加密**” 下， OpenSearch Serverless 会通知您集合名称与`books-policy`加密策略匹配。

1. 在 “**网络访问设置”** 下， OpenSearch Serverless 会通知您集合名称与`books-policy`网络策略匹配。

1. 选择**下一步**。

1. 在**数据访问策略选项**下， OpenSearch Serverless 会通知您集合名称与`books-policy`数据访问策略相匹配。

1. 选择**下一步**。

1. 查看集合配置并选择 **Submit**（提交）。集合通常需要不到一分钟的时间来初始化。

## 步骤 6：上传和搜索数据
<a name="gsgindex-collection"></a>

您可以使用 Postman 或 curl 将数据上传到 OpenSearch 无服务器集合。为简洁起见，这些示例使用 OpenSearch 仪表板控制台中的**开发工具**。

**索引和搜索集合中的数据**

1. 选择左侧导航窗格中的 **Collections**（集合），然后选择 **books**（书籍）集合以打开其详细信息页面。

1. 为该集合选择 OpenSearch 仪表板 URL。该 URL 采用 `https://collection-id.us-east-1.aoss.amazonaws.com/_dashboards` 格式。

1. 使用您在数据[AWS 访问策略中指定的委托人的访问权限和密钥](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html)登录控制面 OpenSearch 板。

1. 在 OpenSearch 仪表板中，打开左侧导航菜单并选择**开发工具**。

1. 要创建名为 *books-index* 的单个索引，请运行以下命令：

   ```
   PUT books-index 
   ```  
![\[OpenSearch Dashboards console showing PUT request for books-index with JSON response.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-createindex.png)

1. 要将单个文档索引到 *books-index* 中，请运行以下命令：

   ```
   PUT books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

1. 要在 OpenSearch 仪表板中搜索数据，您需要配置至少一种索引模式。 OpenSearch 使用这些模式来确定要分析的索引。打开控制面板主菜单，选择**堆栈管理**，选择**索引模式**，然后选择**创建索引模式**。对于本教程，请输入 *books-index*。

1. 选择**下一步**，然后选择**创建索引模式**。创建模式后，您可以查看各种文档字段，例如 `author` 和 `title`。

1. 要开始搜索您的数据，请再次打开主菜单，然后选择 **Discover**（发现），或者使用[搜索 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/)。

# 教程：亚马逊 OpenSearch 无服务器 (CLI) 安全入门
<a name="gsg-serverless-cli"></a>

为了安全起见，本教程将引导您完成[控制台入门教程](gsg-serverless.md)中描述的步骤，但使用 AWS CLI 的是而不是 OpenSearch 服务控制台。

在本教程中，您将完成以下步骤：

1. 创建 IAM 权限策略

1. 将 IAM policy 附到 IAM 角色上

1. 创建加密策略

1. 创建网络策略

1. 创建集合

1. 配置数据访问策略

1. 检索集合端点

1. 将数据上载到您的连接

1. 在您的连接中搜索数据

本教程的目标是使用相当简单的加密、网络和数据访问设置来设置单个 OpenSearch Serverless 集合。例如，我们将配置公共网络访问权限，一个 AWS 托管式密钥 用于加密，以及一个向单个用户授予最低权限的简化数据访问策略。

在生产场景中，应考虑实施更强大的配置，包括 SAML 身份验证、自定义加密密钥和 VPC 访问权限。

**开始使用 OpenSearch 无服务器中的安全策略**

1. 
**注意**  
如果您已经在使用更广泛的基于身份的策略，如 `Action":"aoss:*"` 或 `Action":"*"`，则可以跳过此步骤。但在生产环境中，建议您遵循最低权限原则，仅分配完成任务所需的最低权限。

   首先，创建一个具有执行本教程中步骤所需的最低权限的 AWS Identity and Access Management 策略。我们将该策略命名为 `TutorialPolicy`：

   ```
   aws iam create-policy \
     --policy-name TutorialPolicy \
     --policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Action\": [\"aoss:ListCollections\",\"aoss:BatchGetCollection\",\"aoss:CreateCollection\",\"aoss:CreateSecurityPolicy\",\"aoss:GetSecurityPolicy\",\"aoss:ListSecurityPolicies\",\"aoss:CreateAccessPolicy\",\"aoss:GetAccessPolicy\",\"aoss:ListAccessPolicies\"],\"Effect\": \"Allow\",\"Resource\": \"*\"}]}"
   ```

   **示例响应**

   ```
   {
       "Policy": {
           "PolicyName": "TutorialPolicy",
           "PolicyId": "ANPAW6WRAECKG6QJWUV7U",
           "Arn": "arn:aws:iam::123456789012:policy/TutorialPolicy",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "PermissionsBoundaryUsageCount": 0,
           "IsAttachable": true,
           "CreateDate": "2022-10-16T20:57:18+00:00",
           "UpdateDate": "2022-10-16T20:57:18+00:00"
       }
   }
   ```

1. 将 `TutorialPolicy` 附加到 IAM 角色，该角色将在集合中索引并搜索数据。我们将该用户命名为 `TutorialRole`：

   ```
   aws iam attach-role-policy \
     --role-name TutorialRole \
     --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
   ```

1. 在创建集合之前，您需要创建[加密策略](serverless-encryption.md)，该策略要将 AWS 拥有的密钥 分配给您会在后续步骤中创建的 *books*（书籍）集合。

   发送以下请求，为 *books*（书籍）集合创建加密策略：

   ```
   aws opensearchserverless create-security-policy \
     --name books-policy \
     --type encryption --policy "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AWSOwnedKey\":true}"
   ```

   **示例响应**

   ```
   {
       "securityPolicyDetail": {
           "type": "encryption",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDAwNTk5MF8x",
           "policy": {
               "Rules": [
                   {
                       "Resource": [
                           "collection/books"
                       ],
                       "ResourceType": "collection"
                   }
               ],
               "AWSOwnedKey": true
           },
           "createdDate": 1669240005990,
           "lastModifiedDate": 1669240005990
       }
   }
   ```

1. 创建[网络策略](serverless-network.md)，该策略将提供针对 *books*（书籍）集合的公共访问权限：

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

   **示例响应**

   ```
   {
       "securityPolicyDetail": {
           "type": "network",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDI1Njk1NV8x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "dashboard"
                       },
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "AllowFromPublic": true,
                   "Description": "Public access for books collection"
               }
           ],
           "createdDate": 1669240256955,
           "lastModifiedDate": 1669240256955
       }
   }
   ```

1. 创建 *books*（书籍）集合：

   ```
   aws opensearchserverless create-collection --name books --type SEARCH
   ```

   **示例响应**

   ```
   {
       "createCollectionDetail": {
           "id": "8kw362bpwg4gx9b2f6e0",
           "name": "books",
           "status": "CREATING",
           "type": "SEARCH",
           "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
           "kmsKeyArn": "auto",
           "createdDate": 1669240325037,
           "lastModifiedDate": 1669240325037
       }
   }
   ```

1. 创建[数据访问策略](serverless-data-access.md)，该策略将提供索引和搜索 *books*（书籍）集合中的数据的最低权限。将主体 ARN 替换为步骤 1 中 `TutorialRole` 的 ARN：

   ```
   aws opensearchserverless create-access-policy \
     --name books-policy \
     --type data \
     --policy "[{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index\/books\/books-index\"],\"Permission\":[\"aoss:CreateIndex\",\"aoss:DescribeIndex\",\"aoss:ReadDocument\",\"aoss:WriteDocument\",\"aoss:UpdateIndex\",\"aoss:DeleteIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:role\/TutorialRole\"]}]"
   ```

   **示例响应**

   ```
   {
       "accessPolicyDetail": {
           "type": "data",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDM5NDY1M18x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "index/books/books-index"
                           ],
                           "Permission": [
                               "aoss:CreateIndex",
                               "aoss:DescribeIndex",
                               "aoss:ReadDocument",
                               "aoss:WriteDocument",
                               "aoss:UpdateDocument",
                               "aoss:DeleteDocument"
                           ],
                           "ResourceType": "index"
                       }
                   ],
                   "Principal": [
                       "arn:aws:iam::123456789012:role/TutorialRole"
                   ]
               }
           ],
           "createdDate": 1669240394653,
           "lastModifiedDate": 1669240394653
       }
   }
   ```

   现在，`TutorialRole` 应该能够索引和搜索 *books*（书籍）集合中的文档。

1. 要调用 OpenSearch API，您需要收集端点。发送以下请求以检索 `collectionEndpoint` 参数：

   ```
   aws opensearchserverless batch-get-collection --names books  
   ```

   **示例响应**

   ```
   {
       "collectionDetails": [
           {
               "id": "8kw362bpwg4gx9b2f6e0",
               "name": "books",
               "status": "ACTIVE",
               "type": "SEARCH",
               "description": "",
               "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
               "createdDate": 1665765327107,
               "collectionEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com",
               "dashboardEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/_dashboards"
           }
       ],
       "collectionErrorDetails": []
   }
   ```
**注意**  
在集合状态更改为 `ACTIVE` 之前，您将无法看到集合端点。在成功创建集合之前，可能需要进行多次调用以检查状态。

1. 使用 [Postman](https://www.getpostman.com/) 或 curl 等 HTTP 工具，将数据索引到 *books*（书籍）集合中。我们将创建一个名为 *books-index* 的索引，并添加一个文档。

   使用 `TutorialRole` 的凭证，将以下请求发送到您在上一步中检索到的集合端点。

   ```
   PUT https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

   **示例响应**

   ```
   {
     "_index" : "books-index",
     "_id" : "1",
     "_version" : 1,
     "result" : "created",
     "_shards" : {
       "total" : 0,
       "successful" : 0,
       "failed" : 0
     },
     "_seq_no" : 0,
     "_primary_term" : 0
   }
   ```

1. 要开始搜索您的集合中的数据，请使用[搜索 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/)。以下查询将执行基本搜索：

   ```
   GET https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_search
   ```

   **示例响应**

   ```
   {
       "took": 405,
       "timed_out": false,
       "_shards": {
           "total": 6,
           "successful": 6,
           "skipped": 0,
           "failed": 0
       },
       "hits": {
           "total": {
               "value": 2,
               "relation": "eq"
           },
           "max_score": 1.0,
           "hits": [
               {
                   "_index": "books-index:0::3xJq14MBUaOS0wL26UU9:0",
                   "_id": "F_bt4oMBLle5pYmm5q4T",
                   "_score": 1.0,
                   "_source": {
                       "title": "The Shining",
                       "author": "Stephen King",
                       "year": 1977
                   }
               }
           ]
       }
   }
   ```

# 适用于 Amazon OpenSearch Serverless 的身份和访问管理
<a name="security-iam-serverless"></a>

AWS Identity and Access Management (IAM) AWS 服务 可帮助管理员安全地控制对 AWS 资源的访问权限。IAM 管理员控制谁可以*进行身份验证*（登录）和*授权（有权*限）使用 OpenSearch 无服务器资源。您可以使用 IAM AWS 服务 ，无需支付额外费用。

**Topics**
+ [无服务器基于身份的策略 OpenSearch](#security-iam-serverless-id-based-policies)
+ [OpenSearch 无服务器的策略操作](#security-iam-serverless-id-based-policies-actions)
+ [OpenSearch 无服务器策略资源](#security-iam-serverless-id-based-policies-resources)
+ [Amazon OpenSearch Serverless 的策略条件密钥](#security_iam_serverless-conditionkeys)
+ [带有无服务器功能的 ABA OpenSearch C](#security_iam_serverless-with-iam-tags)
+ [在 OpenSearch 无服务器中使用临时证书](#security_iam_serverless-tempcreds)
+ [无服务器的服务相关角色 OpenSearch](#security_iam_serverless-slr)
+ [其他策略类型](#security_iam_access-manage-other-policies)
+ [无服务器基于身份的策略示例 OpenSearch](#security_iam_serverless_id-based-policy-examples)
+ [对 Amazon OpenSearch 无服务器的 IAM 身份中心支持](serverless-iam-identity-center.md)

## 无服务器基于身份的策略 OpenSearch
<a name="security-iam-serverless-id-based-policies"></a>

**支持基于身份的策略：**是

基于身份的策略是可附加到身份（如 IAM 用户、用户组或角色）的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

通过使用 IAM 基于身份的策略，您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。要了解可在 JSON 策略中使用的所有元素，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素引用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### 无服务器基于身份的策略示例 OpenSearch
<a name="security_iam_id-based-policy-examples"></a>

要查看基于身份的 OpenSearch 无服务器策略的示例，请参阅。[无服务器基于身份的策略示例 OpenSearch](#security_iam_serverless_id-based-policy-examples)

## OpenSearch 无服务器的策略操作
<a name="security-iam-serverless-id-based-policies-actions"></a>

**支持策略操作：**是

JSON 策略的 `Action` 元素描述可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 AWS API 操作同名。有一些例外情况，例如没有匹配 API 操作的*仅限权限* 操作。还有一些操作需要在策略中执行多个操作。这些附加操作称为*相关操作*。

在策略中包含操作以授予执行关联操作的权限。

 OpenSearch Serverless 中的策略操作在操作前使用以下前缀：

```
aoss
```

要在单个语句中指定多项操作，请使用逗号将它们隔开。

```
"Action": [
      "aoss:action1",
      "aoss:action2"
         ]
```

您可以使用通配符 (\$1) 指定多个操作。例如，要指定以单词 `Describe` 开头的所有操作，包括以下操作：

```
"Action": "aoss:List*"
```

要查看基于身份的 OpenSearch 无服务器策略的示例，请参阅。[无服务器基于身份的策略示例 OpenSearch](#security_iam_id-based-policy-examples)

## OpenSearch 无服务器策略资源
<a name="security-iam-serverless-id-based-policies-resources"></a>

**支持策略资源：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于不支持资源级权限的操作，请使用通配符 (\$1) 指示语句应用于所有资源。

```
"Resource": "*"
```

## Amazon OpenSearch Serverless 的策略条件密钥
<a name="security_iam_serverless-conditionkeys"></a>

**支持特定于服务的策略条件键：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Condition` 元素根据定义的条件指定语句何时执行。您可以创建使用[条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（例如，等于或小于）的条件表达式，以使策略中的条件与请求中的值相匹配。要查看所有 AWS 全局条件键，请参阅 *IAM 用户指南*中的[AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

除了基于属性的访问控制 (ABAC) 之外， OpenSearch Serverless 还支持以下条件键：
+ `aoss:collection`
+ `aoss:CollectionId`
+ `aoss:index`

即使在为访问策略和安全策略提供权限时，您也可以使用这些条件键。例如：

```
[
   {
      "Effect":"Allow",
      "Action":[
         "aoss:CreateAccessPolicy",
         "aoss:CreateSecurityPolicy"
      ],
      "Resource":"*",
      "Condition":{
         "StringLike":{
            "aoss:collection":"log"
         }
      }
   }
]
```

在此示例中，该条件适用于此类策略：包含与集合名称或模式相匹配的*规则*。这些条件具有以下行为：
+ `StringEquals`：适用于此类策略：具有包含*确切*的资源字符串“log”（即 `collection/log`）的规则。
+ `StringLike`：适用于此类策略：具有包含资源字符串的规则，该资源字符串*包括*字符串“log”（即 `collection/log`，但也包括 `collection/logs-application` 或 `collection/applogs123`）。

**注意**  
*Collection*（集合）条件键不适用于索引级别。例如，在上述策略中，该条件不适用于包含资源字符串 `index/logs-application/*` 的访问或安全策略。

要查看 OpenSearch 无服务器条件密钥列表，请参阅《*服务授权*参考》中的 [Amazon OpenSearch Serverless 条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-policy-keys)。要了解您可以使用哪些操作和资源使用条件密钥，请参阅 [Amazon OpenSearch Serverless 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-actions-as-permissions)。

## 带有无服务器功能的 ABA OpenSearch C
<a name="security_iam_serverless-with-iam-tags"></a>

**支持 ABAC（策略中的标签）：**是

基于属性的访问权限控制（ABAC）是一种授权策略，该策略基于称为标签的属性来定义权限。您可以将标签附加到 IAM 实体和 AWS 资源，然后设计 ABAC 策略以允许在委托人的标签与资源上的标签匹配时进行操作。

要基于标签控制访问，您需要使用 `aws:ResourceTag/key-name``aws:RequestTag/key-name` 或 `aws:TagKeys` 条件键在策略的[条件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中提供标签信息。

如果某个服务对于每种资源类型都支持所有这三个条件键，则对于该服务，该值为**是**。如果某个服务仅对于部分资源类型支持所有这三个条件键，则该值为**部分**。

有关 ABAC 的更多信息，请参阅《IAM 用户指南》**中的[使用 ABAC 授权定义权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。要查看设置 ABAC 步骤的教程，请参阅《IAM 用户指南》**中的[使用基于属性的访问权限控制（ABAC）](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

有关标记 OpenSearch 无服务器资源的更多信息，请参阅。[为 Amazon OpenSearch 无服务器集合加标签](tag-collection.md)

## 在 OpenSearch 无服务器中使用临时证书
<a name="security_iam_serverless-tempcreds"></a>

**支持临时凭证：**是

临时证书提供对 AWS 资源的短期访问权限，并且是在您使用联合身份或切换角色时自动创建的。 AWS 建议您动态生成临时证书，而不是使用长期访问密钥。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)和[使用 IAM 的。AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)

## 无服务器的服务相关角色 OpenSearch
<a name="security_iam_serverless-slr"></a>

**支持服务关联角色：**是

 服务相关角色是一种与服务相关联的 AWS 服务服务角色。服务可以代入代表您执行操作的角色。服务相关角色出现在您的中 AWS 账户 ，并且归服务所有。IAM 管理员可以查看但不能编辑服务关联角色的权限。

有关创建和管理 OpenSearch 无服务器服务相关角色的详细信息，请参阅。[使用服务相关角色创建 OpenSearch 无服务器集合](serverless-service-linked-roles.md)

## 其他策略类型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支持其他不太常见的策略类型。这些策略类型可以设置更常用的策略类型向您授予的最大权限。
+ **服务控制策略 (SCPs)**- SCPs 是指定组织或组织单位 (OU) 的最大权限的 JSON 策略 AWS Organizations。 AWS Organizations 是一项用于对您的企业拥有的多个 AWS 账户进行分组和集中管理的服务。如果您启用组织中的所有功能，则可以将服务控制策略 (SCPs) 应用于您的任何或所有帐户。SCP 限制成员账户中实体的权限，包括每个 AWS 账户的根用户。有关 Organization SCPs s 和的更多信息，请参阅《*AWS Organizations 用户指南*》中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **资源控制策略 (RCPs)** — RCPs 是 JSON 策略，您可以使用它来设置账户中资源的最大可用权限，而无需更新附加到您拥有的每个资源的 IAM 策略。RCP 限制了成员账户中资源的权限，并可能影响身份（包括 AWS 账户根用户）的有效权限，无论这些身份是否属于您的组织。有关 Organizations 的更多信息 RCPs，包括支持的 AWS 服务列表 RCPs，请参阅*《AWS Organizations 用户指南*》中的[资源控制策略 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。

## 无服务器基于身份的策略示例 OpenSearch
<a name="security_iam_serverless_id-based-policy-examples"></a>

默认情况下，用户和角色无权创建或修改 OpenSearch 无服务器资源。要授予用户对所需资源执行操作的权限，IAM 管理员可以创建 IAM 策略。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略，请参阅《IAM 用户指南》**中的[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

有关 Amazon OpenSearch Serverless 定义的操作和资源类型（包括每种资源类型的格式）的详细信息，请参阅《*服务授权*参考》中的 [Amazon OpenSearch Serverless 的操作、资源和条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html)。 ARNs 

**Topics**
+ [策略最佳实践](#security_iam_serverless-policy-best-practices)
+ [在控制台中使用 OpenSearch 无服务器](#security_iam_serverless_id-based-policy-examples-console)
+ [管理 OpenSearch 无服务器集合](#security_iam_id-based-policy-examples-collection-admin)
+ [查看 OpenSearch 无服务器集合](#security_iam_id-based-policy-examples-view-collections)
+ [使用 OpenSearch API 操作](#security_iam_id-based-policy-examples-data-plane)
+ [用于 OpenSearch API 操作的 ABAC](#security_iam_id-based-policy-examples-data-plane-abac)

### 策略最佳实践
<a name="security_iam_serverless-policy-best-practices"></a>

基于身份的策略非常强大。它们决定是否有人可以在您的账户中创建、访问或删除 OpenSearch 无服务器资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：

基于身份的策略决定了某人是否可以在您的账户中创建、访问或删除 OpenSearch 无服务器资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+ **开始使用 AWS 托管策略并转向最低权限权限** — 要开始向用户和工作负载授予权限，请使用为许多常见用例授予权限的*AWS 托管策略*。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[工作职能的AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为*最低权限许可*。有关使用 IAM 应用权限的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果服务操作是通过特定 AWS 服务的（例如）使用的，则也可以使用条件来授予对服务操作的访问权限 CloudFormation。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 验证您的 IAM 策略，以确保权限的安全性和功能性**：IAM Access Analyzer 会验证新策略和现有策略，以确保策略符合 IAM 策略语言（JSON）和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM Access Analyzer 验证策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重身份验证 (MFA**)-如果 AWS 账户您的场景需要 IAM 用户或根用户，请启用 MFA 以提高安全性。若要在调用 API 操作时需要 MFA，请将 MFA 条件添加到您的策略中。有关更多信息，请参阅《IAM 用户指南》**中的[使用 MFA 保护 API 访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

有关 IAM 中的最佳实操的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

### 在控制台中使用 OpenSearch 无服务器
<a name="security_iam_serverless_id-based-policy-examples-console"></a>

要在 OpenSearch 服务控制台中访问 OpenSearch Serverless，您必须拥有一组最低权限。这些权限必须允许您列出和查看有关您 AWS 账户中 OpenSearch 无服务器资源的详细信息。如果您创建的基于身份的策略比所需的最低权限更严格，则无法为具有该策略的实体（如 IAM 角色）正常运行控制台。

对于仅调用 AWS CLI 或 AWS API 的用户，您无需为其设置最低控制台权限。相反，只允许访问与您尝试执行的 API 操作相匹配的操作。

以下策略允许用户在 OpenSearch 服务控制台中访问 OpenSearch Serverless：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Effect": "Allow",
            "Action": [
                "aoss:ListCollections",
                "aoss:BatchGetCollection",
                "aoss:ListAccessPolicies",
                "aoss:ListSecurityConfigs",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:ListVpcEndpoints",
                "aoss:GetAccessPolicy",
                "aoss:GetAccountSettings",
                "aoss:GetSecurityConfig",
                "aoss:GetSecurityPolicy"
            ]
        }
    ]
}
```

------

### 管理 OpenSearch 无服务器集合
<a name="security_iam_id-based-policy-examples-collection-admin"></a>

此政策是 “馆藏管理员” 策略的一个示例，该策略允许用户管理和管理 Amazon OpenSearch Serverless 馆藏。用户可以创建、查看和删除集合。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/*",
            "Action": [
                "aoss:CreateCollection",
                "aoss:DeleteCollection",
                "aoss:UpdateCollection"
            ],
            "Effect": "Allow"
        },
        {
            "Resource": "*",
            "Action": [
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "aoss:CreateAccessPolicy",
                "aoss:CreateSecurityPolicy"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### 查看 OpenSearch 无服务器集合
<a name="security_iam_id-based-policy-examples-view-collections"></a>

此示例策略允许用户查看其账户中所有 Amazon OpenSearch Serverless 集合的详细信息。用户无法修改集合或任何相关联的安全策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:ListCollections",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:BatchGetCollection"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### 使用 OpenSearch API 操作
<a name="security_iam_id-based-policy-examples-data-plane"></a>

数据平面 API 操作由你在 OpenSearch Serverless 中使用的函数组成，这些函数用于从服务中获取实时价值。控制面板 API 操作由用于设置环境的函数组成。

要通过浏览器访问 Amazon OpenSearch Serverless 数据平面 APIs 和 OpenSearch 控制面板，您需要为集合资源添加两个 IAM 权限。这些权限是 `aoss:APIAccessAll` 和 `aoss:DashboardsAccessAll`。

**注意**  
从 2023 年 5 月 10 日起， OpenSearch Serverless 需要这两个新的 IAM 权限才能使用集合资源。该`aoss:APIAccessAll`权限允许访问数据平面，该`aoss:DashboardsAccessAll`权限允许通过浏览器访问 OpenSearch 仪表板。未能添加这两个新 IAM 权限会导致出现 403 错误。

此示例策略允许用户访问其账户中指定集合的数据平面 APIs ，以及访问其账户中所有集合的 OpenSearch 控制面板。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
         {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        },
        {
            "Effect": "Allow",
            "Action": "aoss:DashboardsAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:dashboards/default"
        }
    ]
}
```

------

两者兼而有之，`aoss:APIAccessAll`并`aoss:DashboardsAccessAll`授予对集合资源的完整 IAM 权限，而 Dashboards 权限还提供 OpenSearch 仪表板访问权限。每个权限都彼此独立，因此明确拒绝 `aoss:APIAccessAll` 不会妨碍对资源（包括开发工具）的 `aoss:DashboardsAccessAll`访问。否认也是如此`aoss:DashboardsAccessAll`。 OpenSearch Serverless 支持以下全局条件键：
+ `aws:CalledVia`
+ `aws:CalledViaAWSService`
+ `aws:CalledViaFirst`
+ `aws:CalledViaLast`
+ `aws:CurrentTime`
+ `aws:EpochTime`
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipallsAWSService`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:PrincipalType`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:ResourceAccount`
+ `aws:ResourceOrgID`
+ `aws:ResourceOrgPaths`
+ `aws:RequestedRegion`
+ `aws:ResourceTag`
+ `aws:SourceIp`
+ `aws:SourceVpce`
+ `aws:SourceVpc`
+ `aws:userid`
+ `aws:username`
+ `aws:VpcSourceIp`

以下是在数据面板调用的主体 IAM 策略的条件块中使用 `aws:SourceIp` 的示例：

```
"Condition": {
    "IpAddress": {
         "aws:SourceIp": "203.0.113.0"
    }
}
```

以下是在数据面板调用的主体 IAM 策略的条件块中使用 `aws:SourceVpc` 的示例：

```
"Condition": {
    "StringEquals": {
        "aws:SourceVpc": "vpc-0fdd2445d8EXAMPLE"
    }
}
```

此外，还支持以下 OpenSearch 无服务器特定的密钥：
+ `aoss:CollectionId`
+ `aoss:collection`

以下是在数据面板调用的主体 IAM 策略的条件块中使用 `aoss:collection` 的示例：

```
"Condition": {
    "StringLike": {
         "aoss:collection": "log-*"
    }
}
```

### 用于 OpenSearch API 操作的 ABAC
<a name="security_iam_id-based-policy-examples-data-plane-abac"></a>

基于身份的策略允许您使用标签来控制对 Amazon OpenSearch Serverless 数据平面的访问。 APIs APIs 如果集合带有`team:devops`标签，则以下策略允许附加的委托人访问数据平面：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/team": "devops"
                }
            }
        }
    ]
}
```

------

以下策略是拒绝附加委托人访问数据平面 APIs 和仪表板访问的示例（如果集合带有`environment:production`标签）：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:APIAccessAll",
                "aoss:DashboardsAccessAll"
            ],
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        }
    ]
}
```

------

Amazon OpenSearch Serverless 不支持数据平面`RequestTag` APIs和`TagKeys`全局条件密钥。

# 对 Amazon OpenSearch 无服务器的 IAM 身份中心支持
<a name="serverless-iam-identity-center"></a>

## 对 Amazon OpenSearch 无服务器的 IAM 身份中心支持
<a name="serverless-iam-identity-support"></a>

您可以使用 IAM 身份中心委托人（用户和群组）通过亚马逊应用程序访问亚马逊 OpenSearch 无服务器数据。 OpenSearch 要启用 Amazon OpenSearch Serverless 的 IAM 身份中心支持，您需要启用 IAM 身份中心。要了解有关如何执行此操作的更多信息，请参阅 [What is IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)

**注意**  
要使用 IAM 身份中心用户或群组访问 Amazon OpenSearch Serverless 集合，您必须使用 OpenSearch UI（应用程序）功能。不支持使用 IAM 身份中心凭证直接访问 OpenSearch 无服务器控制面板。有关更多信息，请参阅[ OpenSearch 用户界面入门](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/application.html)。

创建 IAM 身份中心实例后，客户账户管理员需要为 Amazon OpenSearch Serverless 服务创建 IAM 身份中心应用程序。这可以通过调用[CreateSecurityConfig:](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html)来完成。客户账户管理员可指定用于授权请求的属性。使用的默认属性是 `UserId` 和 `GroupId.`

Amazon OpenSearch Serverless 的 IAM 身份中心集成使用以下 AWS IAM 身份中心 (IAM) 权限：
+ `aoss:CreateSecurityConfig`：创建 IAM Identity Center 提供程序
+ `aoss:ListSecurityConfig`：列出当前账户中的所有 IAM Identity Center 提供程序。
+ `aoss:GetSecurityConfig`：查看 IAM Identity Center 提供程序信息。
+ `aoss:UpdateSecurityConfig`：修改给定的 IAM Identity Center 配置
+ `aoss:DeleteSecurityConfig`：删除 IAM Identity Center 提供程序。

以下基于身份的访问策略可用于管理所有 IAM Identity Center 配置：

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

****  

```
{
"Version": "2012-10-17",
    "Statement": [
        {
"Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
`Resource` 元素必须是通配符。

## 创建 IAM Identity Center 提供程序（控制台）
<a name="serverless-iam-console"></a>

您可以创建 IAM 身份中心提供商以启用 OpenSearch应用程序身份验证。要为 OpenSearch 控制面板启用 IAM 身份中心身份验证，请执行以下步骤：

1. 登录[亚马逊 OpenSearch 服务控制台](https://console.aws.amazon.com/aos/home.)。

1. 在左侧导航面板上，展开**无服务器**，然后选择**身份验证**。

1. 选择 **IAM Identity Center 身份验证**。

1. 选择**编辑**。

1. 选中“使用 IAM Identity Center 进行身份验证”旁边的复选框。

1. 从下拉菜单中选择**用户和组**属性键。用户属性将用于根据 `UserName`、`UserId` 和 `Email` 对用户进行授权。组属性将用于根据 `GroupName` 和 `GroupId` 对用户进行身份验证。

1. 选择 **IAM Identity Center** 实例。

1. 选择**保存**

## 创建 IAM Identity Center 提供程序（AWS CLI）
<a name="serverless-iam-identity-center-cli"></a>

要使用 AWS Command Line Interface (AWS CLI) 创建 IAM 身份中心提供商，请使用以下命令：

```
aws opensearchserverless create-security-config \
--region us-east-2 \
--name "iamidentitycenter-config" \
--description "description" \
--type "iamidentitycenter" \
--iam-identity-center-options '{
    "instanceArn": "arn:aws:sso:::instance/ssoins-99199c99e99ee999",
    "userAttribute": "UserName",                  
    "groupAttribute": "GroupId"
}'
```

启用 IAM Identity Center 后，客户仅可修改**用户和组**属性。

```
aws opensearchserverless update-security-config \
--region us-east-1 \
--id <id_from_list_security_configs> \
--config-version <config_version_from_get_security_config> \
--iam-identity-center-options-updates '{
    "userAttribute": "UserId",
    "groupAttribute": "GroupId"
}'
```

要使用查看 IAM 身份中心提供商 AWS Command Line Interface，请使用以下命令：

```
aws opensearchserverless list-security-configs --type iamidentitycenter
```

## 删除 IAM Identity Center 提供程序
<a name="serverless-iam-identity-center-deleting"></a>

 IAM Identity Center 提供两个提供程序实例，一个用于组织账户，另一个用于成员账户。如果要更改 IAM Identity Center 实例，则需通过 `DeleteSecurityConfig` API 删除安全配置，并使用新的 IAM Identity Center 实例创建新的安全配置。要删除 IAM Identity Center 提供程序，可使用以下命令：

```
aws opensearchserverless delete-security-config \
--region us-east-1 \
--id <id_from_list_security_configs>
```

## 授予 IAM Identity Center 访问集合数据的权限
<a name="serverless-iam-identity-center-collection-data"></a>

启用 IAM Identity Center 提供程序后，您可以更新集合数据访问策略，以包含 IAM Identity Center 主体。需要按以下格式更新 IAM Identity Center 主体：

```
[
   {
"Rules":[
       ...  
      ],
      "Principal":[
         "iamidentitycenter/<iamidentitycenter-instance-id>/user/<UserName>",
         "iamidentitycenter/<iamidentitycenter-instance-id>/group/<GroupId>"
      ]
   }
]
```

**注意**  
Amazon OpenSearch Serverless 仅支持一个用于所有客户集合的 IAM 身份中心实例，并且单个用户最多可以支持 100 个群组。如果尝试使用超过允许的实例数量，您将遇到与数据访问策略授权处理不一致的情况，并收到 `403` 错误消息。

您可以授予针对集合、索引或两者的访问权限。如果您希望不同用户拥有不同权限，您将需要创建多条规则。有关可用权限的列表，请参阅[亚马逊 OpenSearch 服务中的 Identity and Access 管理](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html)。有关如何设置访问策略格式的信息，请参阅[授予 SAML 身份访问集合数据的权限](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html#serverless-saml-policies)。

# Amazon OpenSearch 无服务器中的加密
<a name="serverless-encryption"></a>

## 静态加密
<a name="serverless-encryption-at-rest"></a>

您创建的每个 Amazon OpenSearch Serverless 集合都受到静态数据加密的保护，这是一项有助于防止未经授权访问您的数据的安全功能。静态加密使用 AWS Key Management Service (AWS KMS) 来存储和管理您的加密密钥。它使用具有 256 位密钥（AES-256）的高级加密标准算法执行加密。

**Topics**
+ [加密策略](#serverless-encryption-policies)
+ [注意事项](#serverless-encryption-considerations)
+ [所需权限](#serverless-encryption-permissions)
+ [客户托管密钥的密钥策略](#serverless-customer-cmk-policy)
+ [OpenSearch 无服务器如何使用授权 AWS KMS](#serverless-encryption-grants)
+ [创建加密策略（控制台）](#serverless-encryption-console)
+ [创建加密策略（AWS CLI）](#serverless-encryption-cli)
+ [查看加密策略](#serverless-encryption-list)
+ [更新加密策略](#serverless-encryption-update)
+ [删除加密策略](#serverless-encryption-delete)

### 加密策略
<a name="serverless-encryption-policies"></a>

借助加密策略，您可以通过自动将加密密钥分配给与某个具体名称或模式相匹配的新建集合来大规模管理多个集合。

在创建加密策略时，您可以指定*前缀*（它是基于通配符的匹配规则，如 `MyCollection*`），也可以输入一个集合名称。然后，当您创建与该名称或前缀模式相匹配的集合时，会将该策略和相应的 KMS 密钥自动分配给该集合。

创建集合时，您可以通过两种方式指定 AWS KMS 密钥：通过安全策略或直接在`CreateCollection`请求中指定。如果您在`CreateCollection`请求中提供 AWS KMS 密钥，则该密钥优先于任何匹配的安全策略。通过这种方法，您可以在需要时灵活地为特定集合覆盖基于策略的加密设置。

![\[Encryption policy creation process with rules and collection matching to KMS key.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-encryption.png)


加密策略包含以下元素：
+ `Rules`：一条或多条集合匹配规则，每条规则都包含以下子元素：
  + `ResourceType`：目前唯一选项为“collection”（集合）。加密策略仅适用于集合资源。
  + `Resource`：策略将适用于的一个或多个集合名称或模式，格式为 `collection/<collection name|pattern>`。
+ `AWSOwnedKey`：是否使用 AWS 拥有的密钥。
+ `KmsARN`：如果您将 `AWSOwnedKey` 设置为 false，请指定用于加密关联集合的 KMS 密钥的 Amazon 资源名称（ARN）。如果包含此参数，则 OpenSearch Serverless 会忽略该`AWSOwnedKey`参数。

以下示例策略会将客户托管的密钥分配给名为 `autopartsinventory` 的任何未来集合，以及以“sales”（销售）一词开头的集合：

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

即使策略与集合名称相匹配，如果资源模式包含通配符 (\$1)，您也可以在集合创建期间选择覆盖此自动分配。如果您选择覆盖自动密钥分配， OpenSearch Serverless 会为您创建一个名为 a **uto-< *collection-name* >** 的加密策略并将其附加到集合中。该策略最初仅适用于一个集合，但您可以将其修改为包括其他集合。

如果您修改策略规则以不再与某个集合相匹配，则不会从该集合取消分配关联的 KMS 密钥。该集合仍将使用其初始加密密钥进行加密。如果您要更改某个集合的加密密钥，则必须重新创建该集合。

如果来自多个策略的规则与某个集合相匹配，则将使用更具体的规则。例如，如果一个策略包含 `collection/log*` 的规则，而另一个策略包含 `collection/logSpecial` 的规则，则使用第二个策略的加密密钥，因为它更具体。

如果名称或前缀已存在于其他策略中，则不能在策略中使用该名称或前缀。 OpenSearch 如果您尝试在不同的加密策略中配置相同的资源模式，Serverless 会显示错误。

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

在为集合配置加密时，请考虑以下事项：
+ 所有无服务器集合都*需要*静态加密。
+ 您可以选择使用客户托管的密钥或 AWS 拥有的密钥。如果您选择客户托管的密钥，建议您启用 [automatic key rotation](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)（自动密钥轮换）。
+ 在创建集合后，您将无法更改该集合的加密密钥。首次设置 AWS KMS 收藏夹时，请仔细选择要使用的收藏夹。
+ 一个集合只能匹配一个加密策略。
+ 具有唯一 KMS 密钥的集合无法与其他集合共享 OpenSearch 计算单位 (OCUs)。每个拥有唯一密钥的集合都需要自己的 4 OCUs.
+ 如果您更新加密策略中的 KMS 密钥，更改不会影响与已分配的 KMS 密钥相匹配的现有集合。
+ OpenSearch Serverless 不会明确检查用户对客户托管密钥的权限。如果用户有权通过数据访问策略访问集合，则他们将能够摄取和查询使用关联密钥加密的数据。

### 所需权限
<a name="serverless-encryption-permissions"></a>

 OpenSearch 无服务器的静态加密使用以下 AWS Identity and Access Management (IAM) 权限。您可以指定 IAM 条件，以将用户限制到特定集合。
+ `aoss:CreateSecurityPolicy`：创建加密策略。
+ `aoss:ListSecurityPolicies`：列出所有加密策略及其附加到的集合。
+ `aoss:GetSecurityPolicy`：查看某个具体加密策略的详细信息。
+ `aoss:UpdateSecurityPolicy`：修改加密策略。
+ `aoss:DeleteSecurityPolicy`：删除加密策略。

以下基于身份的示例访问策略为用户提供了使用资源模式 `collection/application-logs` 管理加密策略所需的最低权限。

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

****  

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

------

### 客户托管密钥的密钥策略
<a name="serverless-customer-cmk-policy"></a>

如果您选择[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)来保护集合，则 OpenSearch Serverless 将获得代表做出选择的委托人使用 KMS 密钥的权限。该委托人（用户或角色）必须拥有 S OpenSearch erverless 所需的 KMS 密钥的权限。您可以在[密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)或 [IAM policy](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) 中提供这些权限。

OpenSearch 无服务器会在自动扩缩`GenerateDataKey`和软件更新等维护操作期间进行和 `Decrypt` KMS API 调用。您可能会在典型的流量模式之外观察到这些呼叫。这些呼叫是正常服务操作的一部分，并不表示活跃的用户流量。

OpenSearch 当服务器无法访问加密静态数据的 KMS 密钥`KMSKeyInaccessibleException`时，Serverless 会抛出。当您禁用或删除 KMS 密钥，或者撤销允许 S OpenSearch erverless 使用该密钥的授权时，就会发生这种情况。

 OpenSearch Serverless 至少需要对客户托管密钥具有以下权限：
+ [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [kms: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

例如：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Action": "kms:DescribeKey",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            }
        }
    },
    {
        "Action": "kms:CreateGrant",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            },
            "ForAllValues:StringEquals": {
                "kms:GrantOperations": [
                    "Decrypt",
                    "GenerateDataKey"
                ]
            },
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }
  ]
}
```

------

OpenSearch 无服务器创建具有 kms[: GenerateDataKey 和 [km](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) s: Dec](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) rypt 权限的授权。

有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[在 AWS KMS中使用密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

### OpenSearch 无服务器如何使用授权 AWS KMS
<a name="serverless-encryption-grants"></a>

OpenSearch Serverless 需要[获得授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)才能使用客户托管密钥。

当您使用新密钥在账户中创建加密策略时， OpenSearch Serverless 会通过向发送[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)请求来 AWS KMS代表您创建授权。中的授权 AWS KMS 用于授予对客户账户中 KMS 密钥的 OpenSearch 无服务器访问权限。

OpenSearch Serverless 需要获得授权才能使用您的客户托管密钥进行以下内部操作：
+ 向发送[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)请求 AWS KMS 以验证提供的对称客户托管密钥 ID 是否有效。
+ 向 KMS 密钥发送[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)请求以创建用于加密对象的数据密钥。
+ 向发送[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)请求 AWS KMS 以解密加密的数据密钥，以便它们可用于加密您的数据。

您可以随时撤销授予访问权限，或删除服务对客户托管密钥的访问权限。如果这样做， OpenSearch Serverless 将无法访问由客户托管密钥加密的任何数据，这会影响依赖该数据的所有操作，从而导致异步工作流程中`AccessDeniedException`出现错误和故障。

OpenSearch 当给定的客户托管密钥与任何安全策略或集合没有关联时，Serverless 会在异步工作流程中停用授权。

### 创建加密策略（控制台）
<a name="serverless-encryption-console"></a>

在加密策略中，您可以指定 KMS 密钥和一系列将应用该策略的集合模式。在创建集合时，将为与该策略中定义的模式之一相匹配的任何新集合分配相应的 KMS 密钥。建议您在开始创建集合*之前*，先创建加密策略。

**创建 OpenSearch 无服务器加密策略**

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

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

1. 选择 **Create encryption policy**（创建加密策略）。

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

1. 在 **Resources**（资源）下，为此加密策略输入一个或多个资源模式。将为当前 AWS 账户 和区域中与其中某一模式相匹配的任何新建集合自动分配此策略。例如，如果您输入（`ApplicationLogs`不带通配符），然后使用该名称创建集合，则该策略和相应的 KMS 密钥将分配给该集合。

   您还可以提供前缀，如 `Logs*`，它会将该策略分配给名称以 `Logs` 开头的任何新集合。通过使用通配符，您可以大规模管理多个集合的加密设置。

1. 在 **Encryption**（加密）下，选择要使用的 KMS 密钥。

1. 选择**创建**。

#### 下一步：创建集合
<a name="serverless-encryption-next"></a>

在配置一个或多个加密策略后，您可以开始创建与这些策略中定义的规则相匹配的集合。有关说明，请参阅[创建集合](serverless-create.md)。

在创建集合的**加密**步骤中， OpenSearch Serverless 会通知您输入的名称与加密策略中定义的模式相匹配，并自动将相应的 KMS 密钥分配给该集合。如果资源模式包含通配符 (\$1)，则您可以选择覆盖匹配，然后选择您自己的密钥。

### 创建加密策略（AWS CLI）
<a name="serverless-encryption-cli"></a>

要使用 OpenSearch 无服务器 API 操作创建加密策略，您需要指定资源模式和 JSON 格式的加密密钥。该[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html)请求接受内联策略和.json 文件。

加密策略采用以下格式。此示例 `my-policy.json` 文件将与名为 `autopartsinventory` 的任何未来集合以及名称以 `sales` 开头的任何集合相匹配。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

要使用服务拥有的密钥，请将 `AWSOwnedKey` 设置为 `true`：

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":true
}
```

以下请求将创建加密策略：

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy file://my-policy.json
```

然后，使用 [CreateCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateCollection.html)API 操作创建一个或多个与其中一个资源模式相匹配的集合。

### 查看加密策略
<a name="serverless-encryption-list"></a>

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

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

该请求将返回有关所有已配置的加密策略的信息。使用 `policy` 元素的内容查看策略中定义的模式规则：

```
{
   "securityPolicyDetails": [ 
      { 
         "createdDate": 1663693217826,
         "description": "Sample encryption policy",
         "lastModifiedDate": 1663693217826,
         "name": "my-policy",
         "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}",
         "policyVersion": "MTY2MzY5MzIxNzgyNl8x",
         "type": "encryption"
      }
   ]
}
```

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

### 更新加密策略
<a name="serverless-encryption-update"></a>

如果您更新加密策略中的 KMS 密钥，则更改将仅适用于与已配置的名称或模式相匹配的新建集合。它不会影响已经分配 KMS 密钥的现有集合。

这同样适用于策略匹配规则。如果您添加、修改或删除规则，则更改将仅适用于新建集合。如果您修改策略的规则，使其不再与集合的名称相匹配，则现有集合不会失去已分配它们的 KMS 密钥。

要在 OpenSearch Serverless 控制台中更新加密策略，请选择**加密策略**，选择要修改的策略，然后选择**编辑**。进行更改，然后选择**保存**。

要使用 OpenSearch 无服务器 API 更新加密策略，请使用[UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html)操作。以下请求将使用新策略 JSON 文档更新加密策略：

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

### 删除加密策略
<a name="serverless-encryption-delete"></a>

在删除加密策略时，当前使用该策略中定义的 KMS 密钥的任何集合都不受影响。要在 OpenSearch 无服务器控制台中删除策略，请选择该策略并选择**删除**。

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

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

## 传输中加密
<a name="serverless-encryption-in-transit"></a>

在 OpenSearch Serverless 中，集合中的所有路径在传输过程中都使用传输层安全 1.2 (TLS) 和行业标准 AES-256 密码进行加密。也可以通过 TLS 1.2 访问 Opensearch 的所有控制面板 APIs和控制面板。TLS 是一组行业标准的加密协议，用于加密通过网络交换的信息。

# 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
```

# 亚马逊 OpenSearch 无服务器中的 FIPS 合规性
<a name="fips-compliance-opensearch-serverless"></a>

Amazon OpenSearch Serverless 支持联邦信息处理标准 (FIPS) 140-2，这是美国和加拿大政府的一项标准，规定了保护敏感信息的加密模块的安全要求。当您使用 S OpenSearch erverless 连接到启用 FIPS 的端点时，加密操作将使用 FIPS 验证的加密库进行。

OpenSearch 在支持 FIPS AWS 区域 的地方，可以使用无服务器 FIPS 端点。这些端点采用 TLS 1.2 或更高版本以及经 FIPS 验证的加密算法处理所有通信。有关更多信息，请参阅《AWS 已验证访问用户指南》**中的 [FIPS 合规性](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)。

**Topics**
+ [将 FIPS 端点与无服务器一起使用 OpenSearch](#using-fips-endpoints-opensearch-serverless)
+ [将 FIPS 端点与 AWS SDKs](#using-fips-endpoints-aws-sdks)
+ [为 VPC 端点配置安全组](#configuring-security-groups-vpc-endpoints)
+ [使用 FIPS VPC 端点](#using-fips-vpc-endpoint)
+ [验证 FIPS 合规性](#verifying-fips-compliance)
+ [解决私有托管区中的 FIPS 端点连接问题](serverless-fips-endpoint-issues.md)

## 将 FIPS 端点与无服务器一起使用 OpenSearch
<a name="using-fips-endpoints-opensearch-serverless"></a>

在支持 FIPS AWS 区域 的地方，可通过标准端点和兼容 FIPS 的端点访问 OpenSearch 无服务器集合。有关更多信息，请参阅《AWS 已验证访问用户指南》**中的 [FIPS 合规性](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)。

在以下示例中，*AWS 区域*使用您的集合 ID *collection\$1id* 及其替换和 AWS 区域。
+ **标准端点**：**https://*collection\$1id*.*AWS 区域*.aoss.amazonaws.com**。
+ **符合 FIPS 标准的端点**：**https://*collection\$1id*.*AWS 区域*.aoss-fips.amazonaws.com**。

同样，可通过标准端点和符合 FIPS 的端点访问 OpenSearch 控制面板：
+ **标准控制面板端点**：**https://*collection\$1id*.*AWS 区域*.aoss.amazonaws.com/\$1dashboards**。
+ **符合 FIPS 标准的控制面板端点**：**https://*collection\$1id*.*AWS 区域*.aoss-fips.amazonaws.com/\$1dashboards**。

**注意**  
在启用 FIPS 的区域中，标准端点和符合 FIPS 标准的端点均提供符合 FIPS 标准的加密技术。FIPS 特定端点可帮助您满足合规性要求，这些要求明确规定必须使用名称中包含 **FIPS** 的端点。

## 将 FIPS 端点与 AWS SDKs
<a name="using-fips-endpoints-aws-sdks"></a>

使用时 AWS SDKs，可以在创建客户端时指定 FIPS 端点。在以下示例中，*AWS 区域*使用您的集合 ID *collection\$1id* 及其替换和 AWS 区域。

```
# Python SDK example
from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth
import boto3
host = '"https://collection_id.AWS 区域.aoss-fips.amazonaws.com"
region = 'us-west-2'
service = 'aoss'
credentials = boto3.Session().get_credentials()
auth = AWSV4SignerAuth(credentials, region, service)
client = OpenSearch(
    hosts = [{'host': host, 'port': 443}],
    http_auth = auth,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection,
    pool_maxsize = 20
)
```

## 为 VPC 端点配置安全组
<a name="configuring-security-groups-vpc-endpoints"></a>

为确保与符合 FIPS 标准的 Amazon VPC (VPC) 终端节点进行正常通信，请创建或修改安全组，以允许来自您的 VPC 中需要访问无服务器的资源的入站 HTTPS 流量（TCP 端口 443）。 OpenSearch 然后在创建期间将此安全组与您的 VPC 端点相关联，或者在创建后修改端点。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[创建安全组](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。

## 使用 FIPS VPC 端点
<a name="using-fips-vpc-endpoint"></a>

创建符合 FIPS 标准的 VPC 终端节点后，您可以使用它从 VPC 内的资源 OpenSearch 访问无服务器。要使用端点进行 API 操作，请将 SDK 配置为使用区域性 FIPS 端点，如 [将 FIPS 端点与无服务器一起使用 OpenSearch](#using-fips-endpoints-opensearch-serverless) 部分所述。要访问 OpenSearch 控制面板，请使用集合特定的控制面板 URL，从您的 VPC 内部访问时，该网址将自动通过符合 FIPS 的 VPC 终端节点进行路由。有关更多信息，请参阅 [在 Amazon OpenSearch 服务中使用 OpenSearch 控制面板](dashboards.md)。

## 验证 FIPS 合规性
<a name="verifying-fips-compliance"></a>

要验证您与 OpenSearch 无服务器的连接是否使用符合 FIPS 的加密技术，请使用监控 AWS CloudTrail 对无服务器进行的 API 调用。 OpenSearch 检查 CloudTrail 日志中是否显示了 API 调`aoss-fips.amazonaws.com`用的`eventSource`字段。

要访问 OpenSearch 控制面板，您可以使用浏览器开发者工具来检查 TLS 连接详细信息并验证是否使用了符合 FIPS 的密码套件。

# 解决私有托管区中的 FIPS 端点连接问题
<a name="serverless-fips-endpoint-issues"></a>

FIPS 终端节点可与具有公共访问权限的 Amazon OpenSearch 无服务器集合配合使用。对于使用新创建的 VPC 端点的全新 VPC 集合，FIPS 端点可正常运行。对于其他 VPC 集合，您可能需要执行手动设置以确保 FIPS 端点正常运行。

**在 Amazon Route 53 中配置 FIPS 私有托管区**

1. 打开 Route 53 控制台，网址为[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)。

1. 查看您的托管区：

   1. 找到 AWS 区域 您的馆藏所在的托管区域。

   1. 验证托管区的命名模式：
      + 非 FIPS 格式：`region.aoss.amazonaws.com`。
      + FIPS 格式：`region.aoss-fips.amazonaws.com`。

   1. 确认所有托管区的**类型**均设置为**私有托管区**。

1. 如果缺少 FIPS 私有托管区：

   1. 选择相应的非 FIPS 私有托管区。

   1. 复制**关联 VPCs**信息。例如：`vpc-1234567890abcdef0 | us-east-2`。

   1. 查找通配符域记录。例如：`*.us-east-2.aoss.amazonaws.com`。

   1. 复制**值/路由流量至**信息。例如：`uoc1c1qsw7poexampleewjeno1pte3rw.3ym756xh7yj.aoss.searchservices.aws`。

1. 创建 FIPS 私有托管区：

   1. 使用 FIPS 格式创建新的私有托管区。例如：`us-east-2.aoss-fips.amazonaws.com`。

   1. 在 “**关联**” 中 VPCs，输入您从非 FIPS 私有托管区域复制的 VPC 信息。

1. 使用以下设置添加新的记录：

   1. 记录名称：\$1

   1. 记录类型：CNAME

   1. 值：输入之前复制的**值/路由流量至**信息。

## 常见问题
<a name="serverless-fips-endpoint-common-problems"></a>

如果在使用符合 FIPS 标准的 VPC 端点时遇到连接问题，请参考以下信息协助解决该问题。
+ DNS 解析失败：无法在 VPC 内解析 FIPS 端点域名
+ 连接超时：对 FIPS 端点的请求已超时
+ 访问被拒错误：使用 FIPS 端点时身份验证或授权失败
+ 缺少 VPC 专用集合的私有托管区记录

**对 FIPS 端点连接进行故障排除**

1. 验证私有托管区配置：

   1. 确认 FIPS 端点域存在私有托管区（`*.region.aoss-fips.amazonaws.com`。

   1. 验证私有托管区是否已关联至正确的 VPC。

      有关更多信息，请参阅《Amazon Route 53开发人员指南》**中的[私有托管区](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted- zones-private.html)以及《AWS PrivateLink 指南》**中的[管理 DNS 名称](https://docs.aws.amazon.com/vpc/latest/privatelink/manage-dns-names.html)。

1. 测试 DNS 解析：

   1. 连接到 VPC 中的 EC2 Linux 实例。

   1. 运行如下命令：

      ```
      nslookup collection-id.region.aoss-fips.amazonaws.com
      ```

   1. 确认响应中包含 VPC 端点的私有 IP 地址。

      有关更多信息，请参阅《Amazon VPC 用户指南》**中的[端点策略](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#endpoint-dns-verification)和 [DNS 属性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc- dns-troubleshooting)。

1. 检查安全组设置：

   1. 验证连接到 VPC 端点的安全组是否允许来自您资源的 HTTPS 流量（端口 443）。

   1. 确认资源的安全组允许流向 VPC 端点的出站流量。

   有关更多信息，请参阅《AWS PrivateLink 指南》**中的[端点策略](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-security-groups)以及《Amazon VPC 用户指南》**中的[安全组](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html#SecurityGroupRules)。

1. 检查网络 ACL 配置：

   1. 验证网络是否 ACLs 允许您的资源与 VPC 终端节点之间的流量。

     有关更多信息，请参阅 *Amazon VPC 用户指南 ACLs*中的[网络](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network- acls.html#nacl-troubleshooting)。

1. 查看端点政策：

   1. 检查 VPC 终端节点策略是否允许对您的 OpenSearch 无服务器资源执行所需的操作。

     有关更多信息，请参阅《AWS PrivateLink 指南》**中的[所需的 VPC 端点权限](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html#serverless-vpc-permissions)以及[端点策略](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#vpc-endpoint-policies)。

**提示**  
如果您在 VPC 中使用自定义 DNS 解析器，请将其配置为将`*.amazonaws.com`域名请求转发到 AWS 服务器。

# Amazon OpenSearch 无服务器的数据访问控制
<a name="serverless-data-access"></a>

借助 Amazon OpenSearch Serverless 中的数据访问控制，您可以允许用户访问集合和索引，无论其访问机制或网络来源如何。您可以提供对 IAM 角色和 [SAML 身份](serverless-saml.md)的访问权限。

您可以通过适用于集合和索引资源的*数据访问策略*管理访问权限。数据访问策略通过自动为匹配某个具体模式的集合和索引分配访问权限，帮助您大规模管理集合。多个数据访问策略可应用于一个资源。请注意，您必须为馆藏制定数据访问策略才能访问 OpenSearch 控制面板 URL。

**Topics**
+ [数据访问策略与 IAM policy 对比](#serverless-data-access-vs-iam)
+ [配置数据访问策略所必需的 IAM 权限](#serverless-data-access-permissions)
+ [策略语法](#serverless-data-access-syntax)
+ [受支持的策略权限](#serverless-data-supported-permissions)
+ [OpenSearch 仪表板上的示例数据集](#serverless-data-sample-index)
+ [创建数据访问策略（控制台）](#serverless-data-access-console)
+ [创建数据访问策略（AWS CLI）](#serverless-data-access-cli)
+ [查看数据访问策略](#serverless-data-access-list)
+ [更新数据访问策略](#serverless-data-access-update)
+ [删除数据访问策略](#serverless-data-access-delete)
+ [跨账户数据访问](#serverless-data-access-cross)

## 数据访问策略与 IAM policy 对比
<a name="serverless-data-access-vs-iam"></a>

数据访问策略在逻辑上与 AWS Identity and Access Management (IAM) 策略是分开的。IAM 权限控制针对[无服务器 API 操作](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html)的访问权限，如 `CreateCollection` 和 `ListAccessPolicies`。数据访问策略控制对 OpenSearch Serverless 支持的[OpenSearch 操作](#serverless-data-supported-permissions)（例如`PUT <index>`或`GET _cat/indices`）的访问权限。

控制数据访问策略 API 操作访问权限的 IAM 权限，如 `aoss:CreateAccessPolicy` 和（`aoss:GetAccessPolicy`将在下一节中介绍），不会影响数据访问策略中指定的权限。

例如，假设 IAM policy 拒绝用户为 `collection-a` 创建数据访问策略，但允许他们为所有集合 (`*`) 创建数据访问策略：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "aoss:collection": "collection-a"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如果用户创建了一个数据访问策略，该策略允许针对*所有*集合（`collection/*` 或 `index/*/*`）的某些权限，则该策略将适用于所有集合，包括集合 A。

**重要**  
在数据访问策略中获得权限不足以访问您的 OpenSearch Serverless 集合中的数据。*还*必须授予关联主体访问 IAM 权限 `aoss:APIAccessAll` 和 `aoss:DashboardsAccessAll` 的权限。这两个权限都授予对集合资源的完全访问权限，而仪表板权限还提供对 OpenSearch 仪表板的访问权限。如果主体没有这两种 IAM 权限，则其在尝试向集合发送请求时将收到 403 错误。有关更多信息，请参阅 [使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 配置数据访问策略所必需的 IAM 权限
<a name="serverless-data-access-permissions"></a>

 OpenSearch 无服务器的数据访问控制使用以下 IAM 权限。您可以指定 IAM 条件，以将用户限制到特定访问策略名称。
+ `aoss:CreateAccessPolicy`：创建访问策略。
+ `aoss:ListAccessPolicies`：列出所有访问策略。
+ `aoss:GetAccessPolicy`：查看有关某个具体访问策略的详细信息。
+ `aoss:UpdateAccessPolicy`：修改访问策略。
+ `aoss:DeleteAccessPolicy`：删除访问策略。

以下基于身份的访问策略允许用户查看所有访问策略，并更新包含资源模式 `collection/logs` 的策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:GetAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "aoss:UpdateAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "logs"
                    ]
                }
            }
        }
    ]
}
```

------

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

## 策略语法
<a name="serverless-data-access-syntax"></a>

数据访问策略包括一组规则，每条规则均包含以下元素：


| Element | 说明 | 
| --- | --- | 
| ResourceType | 权限适用于的资源类型（集合或索引）。别名和模板权限位于集合级别，而创建、修改和搜索数据的权限位于索引级别。有关更多信息，请参阅[受支持的策略权限](#serverless-data-supported-permissions)。 | 
| Resource | 资源名称 and/or 模式列表。模式是前缀后跟通配符 (\$1)，它们允许将关联权限应用于多个资源。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/serverless-data-access.html) | 
| Permission | 要为指定资源授予的权限的列表。有关权限以及它们允许执行的 API 操作的完整列表，请参阅[支持 OpenSearch 的 API 操作和权限](serverless-genref.md#serverless-operations)。 | 
| Principal | 要向其授予访问权限的一个或多个主体的列表。委托人可以是 IAM 角色 ARNs 或 SAML 身份。这些主体必须位于当前 AWS 账户内。数据访问策略不直接支持跨账户访问，但您可以在策略中加入一个角色，让其他 AWS 账户 用户在拥有馆藏的账户中担任该角色。有关更多信息，请参阅 [跨账户数据访问](#serverless-data-access-cross)。 | 

以下示例策略授予针对名为 `autopartsinventory` 的集合以及任何以前缀 `sales*` 开头的集合的别名和模板权限。它还授予针对 `autopartsinventory` 集合内所有索引以及以前缀 `orders*` 开头的 `salesorders` 集合内任何索引的读写权限。

```
[
   {
      "Description": "Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/autopartsinventory",
               "collection/sales*"
            ],
            "Permission":[
               "aoss:CreateCollectionItems",
               "aoss:UpdateCollectionItems",
               "aoss:DescribeCollectionItems"
            ]
         },
         {
            "ResourceType":"index",
            "Resource":[
               "index/autopartsinventory/*",
               "index/salesorders/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie",
         "saml/123456789012/anotherprovider/group/Accounting"
      ]
   }
]
```

您不能在策略中显式拒绝访问权限。因此，所有策略权限都具有累加性。例如，如果一个策略授予用户 `aoss:ReadDocument`，而另一个策略授予 `aoss:WriteDocument`，则该用户将同时拥有*这两种*权限。如果第三个策略授予同一用户 `aoss:*`，则该用户可以针对关联索引执行*所有*操作；限制性较大的权限不会覆盖限制性较小的权限。

## 受支持的策略权限
<a name="serverless-data-supported-permissions"></a>

数据访问策略中支持以下权限。有关每种权限允许的 OpenSearch API 操作，请参阅[支持 OpenSearch 的 API 操作和权限](serverless-genref.md#serverless-operations)。

**集合权限**
+ `aoss:CreateCollectionItems`
+ `aoss:DeleteCollectionItems`
+ `aoss:UpdateCollectionItems`
+ `aoss:DescribeCollectionItems`
+ `aoss:*`

**索引权限**
+ `aoss:ReadDocument`
+ `aoss:WriteDocument`
+ `aoss:CreateIndex`
+ `aoss:DeleteIndex`
+ `aoss:UpdateIndex`
+ `aoss:DescribeIndex`
+ `aoss:*`

## OpenSearch 仪表板上的示例数据集
<a name="serverless-data-sample-index"></a>

OpenSearch 仪表板提供了带有可视化效果、仪表板和其他工具的[示例数据集](https://opensearch.org/docs/latest/dashboards/quickstart-dashboards/#adding-sample-data)，可帮助您在添加自己的数据之前浏览仪表板。要根据此示例数据创建索引，您需要一个数据访问策略，该策略提供对要使用的数据集的权限。以下策略使用通配符 (`*`) 来提供对所有三个示例数据集的权限。

```
[
  {
    "Rules": [
      {
        "Resource": [
          "index/<collection-name>/opensearch_dashboards_sample_data_*"
        ],
        "Permission": [
          "aoss:CreateIndex",
          "aoss:DescribeIndex",
          "aoss:ReadDocument"
        ],
        "ResourceType": "index"
      }
    ],
    "Principal": [
      "arn:aws:iam::<account-id>:user/<user>"
    ]
  }
]
```

## 创建数据访问策略（控制台）
<a name="serverless-data-access-console"></a>

您可以使用可视化编辑器或以 JSON 格式创建数据访问策略。在创建集合时，将为与该策略中定义的模式之一相匹配的任何新集合分配相应的权限。

**创建 OpenSearch 无服务器数据访问策略**

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

1. 在左侧导航窗格中，展开**无服务器**，然后在**安全性**下，选择**数据访问控制**。

1. 选择**创建访问策略**。

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

1. 为策略中的第一条规则提供名称。例如，Logs collection access（日志集合访问权限）。

1. 选择 **Add principals**（添加主体），然后选择一个或多个 IAM 角色或 [SAML 用户和组](serverless-saml.md)，授予其数据访问权限。
**注意**  
要从下拉菜单中选择主体，您必须拥有 `iam:ListUsers` 和 `iam:ListRoles` 权限（对于 IAM 主体）和 `aoss:ListSecurityConfigs` 权限（对于 SAML 身份）。

1. 选择 **Grant**（授予），然后选择要授予关联主体的别名、模板和索引权限。有关权限及其允许的访问权限的完整列表，请参阅 [支持 OpenSearch 的 API 操作和权限](serverless-genref.md#serverless-operations)。

1. （可选）为策略配置其他规则。

1. 选择**创建**。在创建策略与强制执行权限之间，可能会有大约一分钟的延迟。如果该延迟超过 5 分钟，请联系 [支持](https://console.aws.amazon.com/support/home)。

**重要**  
如果策略仅包含索引权限（不包含集合权限），您可能仍会看到一条有关匹配集合的消息，内容为 `Collection cannot be accessed yet. Configure data access policies so that users can access the data within this collection`。您可以忽略此警告。允许的主体仍然可以在集合上执行其分配的索引相关操作。

## 创建数据访问策略（AWS CLI）
<a name="serverless-data-access-cli"></a>

要使用 OpenSearch 无服务器 API 创建数据访问策略，请使用`CreateAccessPolicy`命令。该命令同时接受内联策略和 .json 文件。必须以 [JSON 转义字符串](https://www.freeformatter.com/json-escape.html)的形式编码内联策略。

以下请求将创建数据访问策略：

```
aws opensearchserverless create-access-policy \
    --name marketing \
    --type data \
    --policy "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]"
```

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

策略中包含的委托人现在可以使用他们被授予访问权限的[OpenSearch 操作](#serverless-data-supported-permissions)。

## 查看数据访问策略
<a name="serverless-data-access-list"></a>

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

```
aws opensearchserverless list-access-policies --type data
```

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

```
{
    "accessPolicyDetails": [
        {
            "type": "data",
            "name": "my-policy",
            "policyVersion": "MTY2NDA1NDE4MDg1OF8x",
            "description": "My policy",
            "policy": "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]",
            "createdDate": 1664054180858,
            "lastModifiedDate": 1664054180858
        }
    ]
}
```

您可以包括资源筛选器，将结果限制为包含特定集合或索引的策略：

```
aws opensearchserverless list-access-policies --type data --resource "index/autopartsinventory/*"
```

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

## 更新数据访问策略
<a name="serverless-data-access-update"></a>

在更新数据访问策略时，所有关联集合都将受到影响。要在 OpenSearch Serverless 控制台中更新数据访问策略，请选择**数据访问控制**，选择要修改的策略，然后选择**编辑**。进行更改，然后选择**保存**。

要使用 OpenSearch 无服务器 API 更新数据访问策略，`UpdateAccessPolicy`请发送请求。必须包括策略版本，您可以使用 `ListAccessPolicies` 或 `GetAccessPolicy` 命令检索策略版本。包括最新策略版本可以确保您不会无意中覆盖其他人所做的更改。

以下[UpdateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateAccessPolicy.html)请求使用新的策略 JSON 文档更新数据访问策略：

```
aws opensearchserverless update-access-policy \
    --name sales-inventory \
    --type data \
    --policy-version MTY2NDA1NDE4MDg1OF8x \
    --policy file://my-new-policy.json
```

在更新策略与强制执行新权限之间，可能会有几分钟的延迟。

## 删除数据访问策略
<a name="serverless-data-access-delete"></a>

在删除数据访问策略时，所有关联集合都将失去该策略中定义的访问权限。在删除策略之前，请确保您的 IAM 和 SAML 用户拥有针对集合的适当访问权限。要在 OpenSearch 无服务器控制台中删除策略，请选择该策略并选择**删除**。

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

```
aws opensearchserverless delete-access-policy --name my-policy --type data
```

## 跨账户数据访问
<a name="serverless-data-access-cross"></a>

虽然无法创建具有跨账户身份或跨账户集合的数据访问策略，但仍然可以通过代入角色选项来设置跨账户访问。例如，假设 `account-a` 拥有一个 `account-b` 需要访问的集合，则 `account-b` 中的用户可以代入 `account-a` 中的角色。该角色必须具有 IAM 权限 `aoss:APIAccessAll` 和 `aoss:DashboardsAccessAll`，并且必须包含在 `account-a` 上的数据访问策略中。

# 通过以下方式访问数据平面 AWS PrivateLink
<a name="serverless-vpc"></a>

Amazon OpenSearch Serverless 支持两种类型的 AWS PrivateLink 连接用于控制平面和数据平面操作。控制平面操作包括创建和删除集合以及管理访问策略。数据平面操作用于索引和查询集合中的数据。本页介绍数据平面 VPC 终端节点。有关控制平面 AWS PrivateLink 端点的信息，请参阅[通过控制飞机访问 AWS PrivateLink](serverless-vpc-cp.md)。

您可以使用 AWS PrivateLink 在您的 VPC 和 Amazon OpenSearch Serverless 之间创建私有连接。您可以像在 VPC 中一样访问 OpenSearch 无服务器，无需使用互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。您的 VPC 中的实例不需要公有 IP 地址即可访问 OpenSearch 无服务器。有关 VPC 网络访问的更多信息，请参阅 [Amazon OpenSearch Serverless 的网络连接模式](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)。

您可以通过创建由 AWS PrivateLink提供支持的*接口端点*来建立此私有连接。我们将在您为接口端点指定的每个子网中创建一个端点网络接口。这些是请求者管理的网络接口，用作发往 Serverless 的流量的入口点。 OpenSearch 

有关更多信息，请参阅《AWS PrivateLink 指南》**中的[通过 AWS PrivateLink访问 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)。

**Topics**
+ [集合端点 DNS 解析](#vpc-endpoint-dnc)
+ [VPCs 和网络访问策略](#vpc-endpoint-network)
+ [VPCs 和端点策略](#vpc-endpoint-policy)
+ [注意事项](#vpc-endpoint-considerations)
+ [所需权限](#serverless-vpc-permissions)
+ [为 OpenSearch 无服务器创建接口端点](#serverless-vpc-create)
+ [Amazon OpenSearch 无服务器的共享 VPC 设置](#shared-vpc-setup)

## 集合端点 DNS 解析
<a name="vpc-endpoint-dnc"></a>

当您通过 OpenSearch Serverless 控制台创建数据平面 VPC 终端节点时，该服务会创建一个新的 Amazon Route 53 [私有托管区域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)并将其连接到 VPC。此私有托管区域包含一条记录，用于将 OpenSearch 无服务器集合的通配符 DNS 记录 (`*.us-east-1.aoss.amazonaws.com`) 解析为用于终端节点的接口地址。您只需要一个 VPC 中的一个 OpenSearch 无服务器 VPC 终端节点即可访问每个 AWS 区域 VPC 中的所有集合和控制面板。每个带有 S OpenSearch erverless 终端节点的 VPC 都有自己的私有托管区域。

 OpenSearch 无服务器接口终端节点还会为该区域的所有集合创建公有 Route 53 通配符 DNS 记录。DNS 名称解析为 OpenSearch 无服务器公有 IP 地址。中 VPCs 没有 OpenSearch 无服务器 VPC 终端节点的客户端或公共网络中的客户端可以使用公共 Route 53 解析器，并使用这些 IP 地址访问集合和控制面板。VPC 终端节点的 IP 地址类型（IPv4 IPv6、或 Dualstack）是根据您在为 Serverless [创建接口终端节点](#serverless-vpc-create)时提供的子网确定的。 OpenSearch 

**注意**  
OpenSearch Serverless 会为服务域解析创建额外的 Amazon Route 53 私有托管区域 ``<region>.opensearch.amazonaws.com` (`)。 OpenSearch 您可以使用中的[update-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-vpc-endpoint.html)命令将现有 IPv4 VPC 终端节点更新为 Dualstack。 AWS CLI

给定 VPC 的 DNS 解析器地址是 VPC CIDR 的辅助 IP 地址。VPC 中的任何客户端均需使用该解析器获取任何集合的 VPC 端点地址。解析器使用由 OpenSearch Serverless 创建的私有托管区域。使用该解析器足以处理任何账户中的所有集合。也可以对一些集合端点使用 VPC 解析器，对另一些集合端点使用公有解析器，尽管通常并不需要这样做。

## VPCs 和网络访问策略
<a name="vpc-endpoint-network"></a>

要向您的集合 OpenSearch APIs 和仪表板授予网络权限，您可以使用 OpenSearch 无服务器[网络访问策略](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)。您可以从 VPC 端点或公有 Internet 控制此网络访问。由于网络策略仅控制流量权限，因此还必须设置[数据访问策略](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html)，指定对集合及其索引中的数据执行操作的权限。将 OpenSearch 无服务器 VPC 终端节点视为服务的接入点，将网络访问策略视为集合和仪表板的网络级访问点，将数据访问策略视为对集合中数据进行任何操作的精细访问控制的接入点。

由于您可以在网络策略 IDs 中指定多个 VPC 终端节点，因此我们建议您为每个需要访问集合的 VPC 创建一个 VPC 终端节点。这些 AWS 账户 VPCs可以属于与拥有 OpenSearch Serverless 集合和网络策略的账户不同的账户。我们不建议您在两个账户之间创建 VPC-to-VPC对等或其他代理解决方案，以便一个账户的 VPC 可以使用另一个账户的 VPC 终端节点。相较于每个 VPC 都有自己的端点，这种做法的安全性和成本效益会有所下降。另一个 VPC 的管理员不容易看到第一个 VPC，因为他已在网络策略中设置了对该 VPC 终端节点的访问权限。

## VPCs 和端点策略
<a name="vpc-endpoint-policy"></a>

 Amazon OpenSearch Serverless 支持以下方面的终端节点策略。 VPCs终端节点策略是您附加到 VPC 终端节点的基于 IAM 资源的策略，用于控制哪些 AWS 委托人可以使用该终端节点访问您的 AWS 服务。有关更多信息，请参阅[使用端点策略控制对 VPC 端点的访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

要使用端点策略，必须先创建接口端点。您可以使用无服务器控制台或 OpenSearch 无服务器 API 创建接口端点。 OpenSearch 创建接口端点后，您需要将端点策略添加到端点。有关更多信息，请参阅 [为 OpenSearch 无服务器创建接口端点](#serverless-vpc-create)。

**注意**  
您不能直接在 OpenSearch 服务控制台中定义终端节点策略。

端点策略不会覆盖或取代您可能已配置的其他基于身份的策略、基于资源的策略、网络策略或数据访问策略。有关如何更新端点策略的更多信息，请参阅[使用端点策略控制对 VPC 端点的访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

默认情况下，端点策略授予对 VPC 端点的完全访问权限。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

尽管默认 VPC 端点策略授予端点完全访问权限，但您可以配置 VPC 端点策略以允许访问特定角色和用户。为此，请参阅以下示例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "123456789012",
                    "987654321098"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

您可以指定一个 OpenSearch 无服务器集合作为条件元素包含在您的 VPC 终端节点策略中。为此，请参阅以下示例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "coll-abc"
                    ]
                }
            }
        }
    ]
}
```

------

支持对 `aoss:CollectionId` 的支持。

```
Condition": {
         "StringEquals": {
               "aoss:CollectionId": "collection-id"
          }
}
```

您可以在 VPC 端点策略中使用 SAML 身份来确定 VPC 端点访问权限。您必须在 VPC 端点策略的主体部分使用通配符 `(*)`。为此，请参阅以下示例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        }
    ]
}
```

------

此外，您可以将端点策略配置为包含特定的 SAML 主体策略。为此，请参阅以下内容：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalTag/Department": [
                        "Engineering"]
                    }
                }
            }
        ]
    }
```

------

有关在 Amazon Serverless 中使用 SAML 身份验证的更多信息，请参阅亚马逊 OpenSearch 无服务器的 [SAML](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html) 身份验证。 OpenSearch 

您还可以在同一 VPC 端点策略中包含 IAM 和 SAML 用户。为此，请参阅以下示例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

您还可以通过接口 VPC 终端节点从 Amazon EC2 访问亚马逊 OpenSearch 无服务器集合。有关更多信息，请参阅[从 Amazon EC2 访问 OpenSearch 无服务器集合（通过接口 VPC 终端节点）](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)。

## 注意事项
<a name="vpc-endpoint-considerations"></a>

在为 OpenSearch Serverless 设置接口终端节点之前，请考虑以下事项：
+ OpenSearch Serverless 支持通过接口端点调用所有支持OpenSearch 的 API [操作](serverless-genref.md#serverless-operations)（不是配置 API 操作）。
+ 为 OpenSearch Serverless 创建接口终端节点后，您仍需要将其包含在[网络访问策略](serverless-network.md)中，以便它能够访问无服务器集合。
+ 默认情况下，允许通过接口端点对 OpenSearch Serverless 进行完全访问。您可以将安全组与端点网络接口关联，以控制通过接口终端节点流向 OpenSearch Serverless 的流量。
+ 单个最多 AWS 账户 可以有 50 个 OpenSearch 无服务器 VPC 终端节点。
+ 如果您在网络策略中允许通过互联网访问您的馆藏的 API 或控制面板，则任何 VPC 和公共互联网均可访问您的馆藏。
+ 如果您位于本地且在 VPC 之外，则不能直接使用 DNS 解析器进行 OpenSearch 无服务器 VPC 终端节点解析。如果需要 VPN 访问权限，则 VPC 需要 DNS 代理解析程序供外部客户端使用。Route 53 提供入站端点选项，您可以使用此选项解析从本地网络或其他 VPC 对您的 VPC 执行的 DNS 查询。
+  OpenSearch Serverless 创建并连接到 VPC 的私有托管区域由服务管理，但它会显示在您的 Amazon Route 53 资源中并计入您的账户。
+ 有关其他注意事项，请参阅 *AWS PrivateLink 指南*中的[注意事项](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)。

## 所需权限
<a name="serverless-vpc-permissions"></a>

 OpenSearch 无服务器的 VPC 访问使用以下 AWS Identity and Access Management (IAM) 权限。您可以指定 IAM 条件，以将用户限制到特定集合。
+ `aoss:CreateVpcEndpoint`：创建 VPC 端点。
+ `aoss:ListVpcEndpoints`：列出所有 VPC 端点。
+ `aoss:BatchGetVpcEndpoint`：查看有关 VPC 端点子集的详细信息。
+ `aoss:UpdateVpcEndpoint`：修改 VPC 端点。
+ `aoss:DeleteVpcEndpoint`：删除 VPC 端点。

此外，您需要以下 Amazon EC2 和 Route 53 权限才能创建 VPC 端点。
+ `ec2:CreateTags`
+ `ec2:CreateVpcEndpoint`
+ `ec2:DeleteVpcEndPoints`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcEndpoints`
+ `ec2:DescribeVpcs`
+ `ec2:ModifyVpcEndPoint`
+ `route53:AssociateVPCWithHostedZone`
+ `route53:ChangeResourceRecordSets`
+ `route53:CreateHostedZone`
+ `route53:DeleteHostedZone`
+ `route53:GetChange`
+ `route53:GetHostedZone`
+ `route53:ListHostedZonesByName`
+ `route53:ListHostedZonesByVPC`
+ `route53:ListResourceRecordSets`

## 为 OpenSearch 无服务器创建接口端点
<a name="serverless-vpc-create"></a>

您可以使用控制台或 OpenSearch 无服务器 API 为无服务器创建接口端点。 OpenSearch 

**为 OpenSearch 无服务器集合创建接口端点**

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

1. 在左侧导航窗格中，展开 **Serverless**（无服务器），然后选择 **VPC endpoints**（VPC 端点）。

1. 选择 **Create VPC endpoint**（创建 VPC 端点）。

1. 为端点提供名称。

1. 对于 **VPC**，请选择您要从中访问 OpenSearch 无服务器的 VPC。

1. 对于**子网**，请选择一个您要从中访问 OpenSearch 无服务器的子网。
   + 端点的 IP 地址和 DNS 类型取决于子网类型
     + Dualstack：如果所有子网都同时具有和地址范围 IPv4 IPv6 
     + IPv6: 如果所有子网都 IPv6 只是子网
     + IPv4: 如果所有子网都有 IPv4 地址范围

1. 对于**安全组**，选择要与端点网络接口关联的安全组。这是一个关键步骤，您可以限制您授权进入终端节点的入站流量的端口、协议和来源。确保安全组规则允许将使用 VPC 终端节点与 OpenSearch Serverless 通信的资源与终端节点网络接口通信。

1. 选择**创建端点**。

要使用 OpenSearch 无服务器 API 创建 VPC 终端节点，请使用`CreateVpcEndpoint`命令。

**注意**  
在创建端点后，记下其 ID（例如，`vpce-abc123def4EXAMPLE`）。为给端点提供针对集合的访问权限，您必须将此 ID 包含在一个或多个网络访问策略中。

在创建接口端点后，必须通过网络访问策略为其提供针对集合的访问权限。有关更多信息，请参阅 [Amazon OpenSearch Serverless 的网络访问](serverless-network.md)。

## Amazon OpenSearch 无服务器的共享 VPC 设置
<a name="shared-vpc-setup"></a>

您可以使用亚马逊虚拟私有云 (VPC) Virtual Private Cloud 与组织中的 AWS 账户 其他人共享 VPC 子网，也可以在多个资源之间共享网络基础设施，例如 VPN。 AWS 账户

目前，除非您是共享 VPC 的所有者，否则 Amazon OpenSearch Serverless 不支持创建与共享 VPC 的 AWS PrivateLink 连接。 AWS PrivateLink 也不支持在之间共享连接 AWS 账户。

但是，基于 OpenSearch 无服务器灵活的模块化架构，您仍然可以设置共享 VPC。这是因为 OpenSearch 无服务器网络基础设施与单个集合（OpenSearch 服务）基础架构是分开的。因此，您可以为一个 VPC 所在的账户创建一个 AWS PrivateLink VPCe 终端节点，然后在其他账户的网络策略中使用一个 VPCe ID 来限制仅来自该共享 VPC 的流量。

以下过程涉及*所有者账户*及*消费者账户*。

所有者账户充当通用网络账户，您可以在其中设置 VPC 并与其他账户共享。消费者账户是在所有者账户与其共享的 VPC 中创建和维护其 OpenSearch 无服务器集合的账户。

**先决条件**  
设置共享 VPC 之前，确保满足以下要求：
+ 目标所有者账户必须已在 Amazon Virtual Private Cloud 中设置好 VPC、子网、路由表及其他所需资源。有关更多信息，请参阅*[《Amazon VPC 用户指南》](https://docs.aws.amazon.com/vpc/latest/userguide/)*。
+ 目标所有者账户和消费者账户必须属于 AWS Organizations中的同一组织。有关更多信息，请参阅 *[AWS Organizations 《用户指南》](https://docs.aws.amazon.com/organizations/latest/userguide/)*。

**在所有者 account/common 网络账户中设置共享 VPC。**

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

1. 按照 [为 OpenSearch 无服务器创建接口端点](#serverless-vpc-create) 中的步骤操作。操作时，选择以下选项：
   + 选择与组织中消费者账户共享的 VPC 和子网。

1. 创建终端节点后，记下生成的 VPCe ID，并将其提供给要在使用者帐户中执行设置任务的管理员。

   VPCe IDs 是格式的`vpce-abc123def4EXAMPLE`。

**在消费者账户中设置共享 VPC**

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

1. 如果您还没有集合，使用 [管理 Amazon OpenSearch 无服务器馆藏](serverless-manage.md) 中的信息进行创建。

1. 使用 [创建网络策略（控制台）](serverless-network.md#serverless-network-console) 中的信息创建网络策略。操作时，选择以下选项。
**注意**  
您也可以为此目的更新现有的网络策略。

   1. 对于**访问类型**，选择 **VPC（推荐）**。

   1. 对于**用于访问的 VPC 终端节点**，请选择所有者账户向您提供的 VPCe ID，格式为`vpce-abc123def4EXAMPLE`。

   1. 在**资源类型**区域中，执行以下操作：
      + 选中 “**允许访问 OpenSearch终端节点**” 复选框，然后选择集合名称或集合模式以允许从该共享 VPC 进行访问。
      + 选中 “**允许访问 OpenSearch控制面板**” 复选框，然后选择用于启用从该共享 VPC 进行访问的集合名称或集合模式。

1. 对于新策略，选择**创建**。对于现有策略，选择**更新**。

# 通过控制飞机访问 AWS PrivateLink
<a name="serverless-vpc-cp"></a>

Amazon OpenSearch Serverless 支持两种类型的 AWS PrivateLink 连接用于控制平面和数据平面操作。控制平面操作包括创建和删除集合以及管理访问策略。数据平面操作用于索引和查询集合中的数据。本页介绍控制平面 AWS PrivateLink 端点。有关数据平面 VPC 终端节点的信息，请参阅[通过以下方式访问数据平面 AWS PrivateLink](serverless-vpc.md)。

## 创建控制平面 AWS PrivateLink 端点
<a name="serverless-vpc-privatelink"></a>

您可以通过将 OpenSearch Serverless 配置为使用接口 VPC 终端节点来改善 VPC 的安全状况。接口端点由提供支持 AWS PrivateLink。这项技术使您 APIs 无需互联网网关、NAT 设备、VPN 连接或 Di AWS rect Connect 连接即可私密访问 OpenSearch 无服务器。

有关 AWS PrivateLink 和 VPC 终端节点的更多信息，请参阅 Amazon [VPC 用户指南中的 VPC 终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html#concepts-vpc-endpoints)。

### 注意事项
<a name="serverless-vpc-cp-considerations"></a>
+ 仅在同一区域内支持 VPC 终端节点。
+ VPC 端点仅通过 Amazon Route 53 支持 Amazon 提供的 DNS。
+ VPC 终端节点支持终端节点策略，以控制对 OpenSearch 无服务器集合、策略和。 VpcEndpoints
+ OpenSearch 无服务器仅支持接口端点。不支持网关端点。

### 创建 VPC 终端节点
<a name="serverless-vpc-cp-create"></a>

要为 Amazon OpenSearch Serverless 创建控制平面 VPC 终端节点，请使用 [Amaz *on VPC 开发人员指南中的使用接口 VPC* 终端节点访问 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)程序。创建以下端点：
+ `com.amazonaws.region.aoss`

**使用控制台创建控制平面 VPC 终端节点**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择 **Create Endpoint**（创建端点）。

1. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 对于**服务**，请选择`com.amazonaws.region.aoss`。例如 `com.amazonaws.us-east-1.aoss`。

1. 对于 **VPC**，选择要在其中创建端点的 VPC。

1. 对于**子网**，选择要在其中创建端点网络接口的子网（可用区）。

1. 对于**安全组**，选择要与端点网络接口关联的安全组。确保允许 HTTPS（端口 443）。

1. 在 “**策略**” 中，选择 “**完全访问权限**” 以允许所有操作，或者选择 “**自定义**” 以附加自定义策略。

1. 选择**创建端点**。

### 创建端点策略
<a name="serverless-vpc-cp-endpoint-policy"></a>

您可以将终端节点策略附加到控制对 Amazon OpenSearch Serverless 的访问权限的 VPC 终端节点。该策略指定以下信息：
+ 可执行操作的主体。
+ 可执行的操作。
+ 可对其执行操作的资源。

有关更多信息，请参阅《Amazon VPC 用户指南》**中的[使用 VPC 端点控制对服务的访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

**Example OpenSearch 无服务器的 VPC 终端节点策略**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": [  
        "aoss:ListCollections",  
        "aoss:BatchGetCollection"  
      ],  
      "Resource": "*"  
    }  
  ]  
}
```

**Example 限制性政策仅允许列表操作**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": "aoss:ListCollections",  
      "Resource": "*"  
    }  
  ]  
}
```

# 适用于 Amazon 无服务器的 SAM OpenSearch L 身份验证
<a name="serverless-saml"></a>

借助适用于 Amazon OpenSearch Serverless 的 SAML 身份验证，您可以使用现有的身份提供商为无服务器集合的 OpenSearch 控制面板终端节点提供单点登录 (SSO)。

SAML 身份验证允许您使用第三方身份提供商登录 OpenSearch 仪表板以索引和搜索数据。 OpenSearch Serverless 支持使用 SAML 2.0 标准的提供商，例如 IAM 身份中心、Okta、Keycloak、Active Directory 联合身份验证服务 (AD FS) 和 Auth0。您可以将 IAM Identity Center 配置为同步来自其他身份来源（例如 Okta 和 Microsoft Entra ID）的用户和群组。 OneLogin有关 IAM Identity Center 支持的身份来源列表及其配置步骤，请参阅《IAM Identity Center 用户指南》中的 [Getting started tutorials](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)**。

**注意**  
SAML 身份验证仅适用于通过 Web 浏览器访问 OpenSearch 仪表板。经过身份验证的用户只能通过 OpenSearch 仪表板中的**开发工具**向 OpenSearch API 操作发出请求。您的 SAML 凭证*不*允许您直接向 OpenSearch API 操作发出 HTTP 请求。

要设置 SAML 身份验证，首先需要配置 SAML 身份提供者（IdP）。然后，您可以在[数据访问策略](serverless-data-access.md)中包括来自该 IdP 的一个或多个用户。此策略向其授予对集合 and/or 索引的某些权限。然后，用户可以登录 OpenSearch 仪表板并执行数据访问策略中允许的操作。

![\[SAML authentication flow with data access policy, OpenSearch interface, and JSON configuration.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/serverless-saml-flow.png)


**Topics**
+ [注意事项](#serverless-saml-considerations)
+ [所需权限](#serverless-saml-permissions)
+ [创建 SAML 提供者（控制台）](#serverless-saml-creating)
+ [访问 OpenSearch 仪表板](#serverless-saml-dashboards)
+ [授予 SAML 身份针对集合数据的访问权限](#serverless-saml-policies)
+ [创建 SAML 提供者（AWS CLI）](#serverless-saml-creating-api)
+ [查看 SAML 提供者](#serverless-saml-viewing)
+ [更新 SAML 提供者](#serverless-saml-updating)
+ [删除 SAML 提供者](#serverless-saml-deleting)

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

在配置 SAML 身份验证时，请考虑以下事项：
+ 不支持已签名和已加密的请求。
+ 不支持已加密的断言。
+ 不支持 IdP 发起的身份验证和注销。
+ 对于非 IAM 身份（例如 Amazon S OpenSearch erverless 和 SAML 中的 SAML 以及亚马逊服务的基本内部用户授权），服务控制策略 (SCP) 将不适用或不进行评估。 OpenSearch 

## 所需权限
<a name="serverless-saml-permissions"></a>

 OpenSearch 无服务器的 SAML 身份验证使用以下 AWS Identity and Access Management (IAM) 权限：
+ `aoss:CreateSecurityConfig`：创建 SAML 提供者。
+ `aoss:ListSecurityConfig`：列出当前账户中的所有 SAML 提供者。
+ `aoss:GetSecurityConfig`：查看 SAML 提供者信息。
+ `aoss:UpdateSecurityConfig`：修改给定的 SAML 提供者配置，包括 XML 元数据。
+ `aoss:DeleteSecurityConfig`：删除 SAML 提供者。

以下基于身份的访问策略允许用户管理所有 IdP 配置：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

请注意，`Resource` 元素必须是通配符。

## 创建 SAML 提供者（控制台）
<a name="serverless-saml-creating"></a>

这些步骤说明了如何创建 SAML 提供者。这为仪表板启用了使用服务提供商 (SP) 启动的身份验证的 SAML 身份验证。 OpenSearch 不支持 IdP 发起的身份验证。

**为仪表板启用 SAML 身份验证 OpenSearch**

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

1. 在左侧导航面板上，展开 **Serverless**（无服务器），然后选择 **SAML authentication**（SAML 身份验证）。

1. 选择 **Add SAML provider**（添加 SAML 提供者）。

1. 为提供者提供名称和描述。
**注意**  
您指定的名称可公开访问，当用户登录 OpenSearch 仪表板时，该名称将显示在下拉菜单中。确保该名称易于识别，并且不会泄露有关您的身份提供者的敏感信息。

1. 在 **Configure your IdP**（配置您的 IdP）下，复制断言使用者服务（ACS）URL。

1. 使用您刚刚复制的 ACS URL 配置您的身份提供者。术语和步骤因提供者而异。请参阅提供程序的文档。

   例如，在 Okta 中，您可以创建 SAML 2.0 web application（SAML 2.0 Web 应用程序），并将 ACS URL 指定为 **Single Sign On URL**（单点登录 URL）、**Recipient URL**（收件人 URL）和 **Destination URL**（目标 URL）。对于 Auth0，您可以在 “**允许的回调 URLs**” 中指定它。

1. 如果您的 IdP 有用于受众限制的字段，则请提供受众限制。受众限制是 SAML 断言中的一个值，用于指定断言适用于哪些受众。使用 OpenSearch 无服务器，您可以执行以下操作。请务必用您自己*content*的 AWS 账户 ID 替换以下代码示例中的：

   1. 使用默认的受众限制 `:opensearch:111122223333`。

   1. （可选）使用 AWS CLI配置自定义受众限制。有关更多信息，请参阅 [创建 SAML 提供者（AWS CLI）](#serverless-saml-creating-api)。

   受众限制字段的名称因提供者而异。对于 Okta，该字段为 **Audience URI (SP Entity ID)**（受众 URI（SP 实体 ID））。对于 IAM Identity Center，该字段为 **Application SAML audience**（应用程序 SAML 受众）。

1. 如果您使用的是 IAM Identity Center，则还需要指定以下[属性映射](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html)：`Subject=${user:name}`，格式为 `unspecified`。

1. 配置了身份提供程序后，它会生成 IdP 元数据文件。此 XML 文件包含有关提供者的信息，如 TLS 证书、单点登录端点和身份提供者的实体 ID。

   复制 IdP 元数据文件中的文本，并将其粘贴到 **Provide metadata from your IdP**（提供来自您的 IdP 的元数据）字段下。也可以选择**从 XML 文件导入**并上载文件。元数据文件应如下所示：

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <md:EntityDescriptor entityID="entity-id" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
     <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
       <md:KeyDescriptor use="signing">
         <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
           <ds:X509Data>
             <ds:X509Certificate>tls-certificate</ds:X509Certificate>
           </ds:X509Data>
         </ds:KeyInfo>s
       </md:KeyDescriptor>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="idp-sso-url"/>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="idp-sso-url"/>
     </md:IDPSSODescriptor>
   </md:EntityDescriptor>
   ```

1. 保持**自定义用户 ID 属性**字段为空，以将 SAML 断言的 `NameID` 元素用于用户名。如果您的断言不使用此标准元素，而是将用户名作为自定义属性，请在此处指定该属性。属性区分大小写。仅支持一个用户属性。

   以下示例显示了 SAML 断言中 `NameID` 的覆盖属性：

   ```
   <saml2:Attribute Name="UserId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
     <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:type="xs:string">annie</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. （可选）在 **Group attribute**（组属性）字段中指定自定义属性，如 `role` 或 `group`。仅支持一个组属性。没有默认群组属性。如果您未指定组属性，则您的数据访问策略只能包含用户主体。

   以下示例显示了 SAML 断言中的组属性：

   ```
   <saml2:Attribute Name="department" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
       <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:type="xs:string">finance</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. 默认情况下， OpenSearch 控制面板会在 24 小时后注销用户。您可以通过指定**OpenSearch 仪表板超时**将此值配置为 1 到 12 小时（15 到 720 分钟）之间的任意数字。如果您尝试将超时设置为等于或小于 15 分钟，您的会话将重置为一小时。

1. 选择 **Create SAML provider**（创建 SAML 提供者）。

## 访问 OpenSearch 仪表板
<a name="serverless-saml-dashboards"></a>

配置 SAML 提供商后，与该提供商关联的所有用户和群组都可以导航到 OpenSearch 仪表板端点。*所有集合*的控制面板 URL 格式为 `collection-endpoint/_dashboards/`。

如果您启用了 SAML，则选择中的链接 AWS 管理控制台 会将您定向到 IdP 选择页面，您可以在其中使用 SAML 凭据登录。首先，使用下拉列表选择身份提供者：

![\[OpenSearch login page with dropdown menu for selecting SAML Identity Provider options.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/idpList.png)


然后，使用您的 IdP 凭证登录。

如果您未启用 SAML，则选择中的链接 AWS 管理控制台 将引导您以 IAM 用户或角色的身份登录，但没有 SAML 选项。

## 授予 SAML 身份针对集合数据的访问权限
<a name="serverless-saml-policies"></a>

在您创建 SAML 提供者后，您仍然需要向基础用户和组授予针对集合中数据的访问权限。您可以通过[数据访问策略](serverless-data-access.md)授予访问权限。在您向用户提供访问权限之前，他们将无法读取、写入或删除您的集合中的任何数据。

要授予访问权限，请创建数据访问策略并在`Principal`语句 IDs 中指定您的 SAML 用户 and/or 组：

```
[
   {
      "Rules":[
       ...  
      ],
      "Principal":[
         "saml/987654321098/myprovider/user/Shaheen",
         "saml/987654321098/myprovider/group/finance"
      ]
   }
]
```

您可以授予针对集合、索引或两者的访问权限。如果您希望不同用户拥有不同权限，请创建多条规则。有关可用权限的列表，请参阅[受支持的策略权限](serverless-data-access.md#serverless-data-supported-permissions)。有关如何设置访问策略格式的信息，请参阅[策略语法](serverless-data-access.md)。

## 创建 SAML 提供者（AWS CLI）
<a name="serverless-saml-creating-api"></a>

要使用 OpenSearch 无服务器 API 创建 SAML 提供商，请发送请求：[CreateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html)

```
aws opensearchserverless create-security-config \
    --name myprovider \
    --type saml \
    --saml-options file://saml-auth0.json
```

将包括元数据 XML 在内的 `saml-options` 指定为 .json 文件中的键值映射。必须以 [JSON 转义字符串](https://www.freeformatter.com/json-escape.html)的形式编码元数据 XML。

```
{
   "sessionTimeout": 70,
   "groupAttribute": "department",
   "userAttribute": "userid",
   "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
   "metadata": "EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor\r\n\/EntityDescriptor"
}
```

**注意**  
（可选）使用 AWS CLI配置自定义受众限制。有关更多信息，请参阅 [创建 SAML 提供者（AWS CLI）](#serverless-saml-creating-api)。

## 查看 SAML 提供者
<a name="serverless-saml-viewing"></a>

以下[ListSecurityConfigs](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityConfigs.html)请求列出了您账户中的所有 SAML 提供商：

```
aws opensearchserverless list-security-configs --type saml
```

该请求返回有关所有现有 SAML 提供者的信息，包括您的身份提供者生成的完整 IdP 元数据：

```
{
   "securityConfigDetails": [ 
      { 
         "configVersion": "MTY2NDA1MjY4NDQ5M18x",
         "createdDate": 1664054180858,
         "description": "Example SAML provider",
         "id": "saml/111122223333/myprovider",
         "lastModifiedDate": 1664054180858,
         "samlOptions": { 
            "groupAttribute": "department",
            "metadata": "EntityDescriptorxmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ...... ...IDPSSODescriptor\r\n/EntityDescriptor",
            "sessionTimeout": 120,
            "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
            "userAttribute": "userid"
         }
      }
   ]
}
```

要查看有关某个具体提供者的详细信息，包括未来更新的 `configVersion`，请发送 `GetSecurityConfig` 请求。

## 更新 SAML 提供者
<a name="serverless-saml-updating"></a>

**要使用 OpenSearch 无服务器控制台更新 SAML 提供商，请选择 **SAML 身份验证**，选择您的身份提供商，然后选择编辑。**您可以修改所有字段，包括元数据和自定义属性。

要通过 OpenSearch Serverless API 更新提供商，[UpdateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityConfig.html)请发送请求并包含要更新的策略的标识符。还必须包括配置版本，您可以使用 `ListSecurityConfigs` 或 `GetSecurityConfig` 命令检索配置版本。包括最新版本可以确保您不会无意中覆盖其他人所做的更改。

以下请求更新了提供者的 SAML 选项：

```
aws opensearchserverless update-security-config \
    --id saml/123456789012/myprovider \
    --type saml \
    --saml-options file://saml-auth0.json \
    --config-version MTY2NDA1MjY4NDQ5M18x
```

将您的 SAML 配置选项指定为 .json 文件中的键值映射。

**重要**  
**对 SAML 选项的更新*不是*增量的**。如果您在更新时没有为 `SAMLOptions` 对象中的参数指定值，则现有值将被空值覆盖。例如，如果当前配置包含 `userAttribute` 的值，然后您进行了更新但不包括此值，则该值将从配置中移除。在您通过调用 `GetSecurityConfig` 操作进行更新之前，请确保您知道现有值是什么。

## 删除 SAML 提供者
<a name="serverless-saml-deleting"></a>

在您删除 SAML 提供者时，对数据访问策略中关联用户和组的任何引用都将不再起作用。为避免混淆，建议您在删除端点之前，先移除对访问策略中端点的所有引用。

**要使用 OpenSearch 无服务器控制台删除 SAML 提供商，请选择**身份验证**，选择提供商，然后选择删除。**

要通过 OpenSearch 无服务器 API 删除提供商，请发送[DeleteSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityConfig.html)请求：

```
aws opensearchserverless delete-security-config --id saml/123456789012/myprovider
```

# Amazon OpenSearch Serverless 合规性验证
<a name="serverless-compliance-validation"></a>

作为多项合规计划的一部分，第三方审计师对 Amazon OpenSearch Serverless 的安全 AWS 性和合规性进行评估。这些计划包括 SOC、PCI 和 HIPAA。

要了解是否属于特定合规计划的范围，请参阅AWS 服务 “[按合规计划划分的范围](https://aws.amazon.com/compliance/services-in-scope/)” ”，然后选择您感兴趣的合规计划。 AWS 服务 有关一般信息，请参阅[AWS 合规计划AWS](https://aws.amazon.com/compliance/programs/)。

您可以使用下载第三方审计报告 AWS Artifact。有关更多信息，请参阅中的 “[下载报告” 中的 “ AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)。

您在使用 AWS 服务 时的合规责任取决于您的数据的敏感性、贵公司的合规目标以及适用的法律和法规。有关您在使用时的合规责任的更多信息 AWS 服务，请参阅[AWS 安全文档](https://docs.aws.amazon.com/security/)。