

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

# 在 Amazon OpenSearch 服务中使用 OpenSearch 用户界面
<a name="application"></a>

OpenSearch UI（用户界面）是 Amazon S OpenSearch ervice 的现代化运营分析体验，它为您提供了一个统一的视图，便于您与多个来源的数据进行交互。与 OpenSearch 仪表板不同，仪表板仅适用于托管它的一个域或集合，而 OpenSearch 用户界面托管在 AWS 云。这使 OpenSearch 用户界面能够在集群升级期间实现高可用性并保持正常运行，并且可以与多个数据源进行本机连接。有关 OpenSearch 仪表板的信息，请参阅[在 Amazon OpenSearch 服务中使用 OpenSearch 控制面板](dashboards.md)。

以下是 OpenSearch UI 的主要功能：
+ **支持多个数据源** — OpenSearch 用户界面可以连接多个数据源以创建全面视图。这包括 OpenSearch 域名和无服务器集合，以及集成 AWS 数据源，例如亚马逊 CloudWatch、亚马逊安全湖和亚马逊简单存储服务 (Amazon S3) Simple Service。
+ **升级期间的停机时间为零** — OpenSearch UI 托管在 AWS 云。这意味着它 OpenSearch 仍然可以运行，并且可以在升级过程中从集群中检索数据。
+ **工作区**：为团队协作精心打造的空间，支持多种工作流程，例如可观测性、安全分析和搜索。您可以在工作区中定义隐私设置并管理协作者的权限。
+ **单点登录** — OpenSearch UI 与 AWS IAM Identity Center SAML 配合使用，通过 AWS Identity and Access Management (IAM) 联合身份验证与您的身份提供商集成，为您的最终用户创建单点登录体验。
+ **Genai 支持的分析** — OpenSearch 用户界面支持自然语言查询生成，可帮助您生成正确的查询供您分析。 OpenSearch UI 还与 Amazon Q Developer 合作，提供 Amazon Q 聊天功能，帮助生成可视化效果、警报摘要、见解和推荐的异常检测器。
+ 支持@@ **多种查询语言** — OpenSearch 用户界面支持管道处理语言 (PPL)、SQL、Lucene 和仪表板查询语言 (DQL)。
+ **跨区域和跨账户支持** — OpenSearch 用户界面可以利用跨集群搜索功能连接不同账户和不同区域中的 OpenSearch 域名，以进行汇总分析和可视化。

要开始创建您的第一个 OpenSearch 用户界面，请按照中的说明进行操作[开始使用 Amazon OpenSearch 服务中的 OpenSearch 用户界面](application-getting-started.md)。

有关为 OpenSearch UI 发布的最新功能的信息，请参阅[亚马逊 OpenSearch 服务用户界面发布历史记录](application-release-history.md)。

**Topics**
+ [亚马逊 OpenSearch 服务用户界面发布历史记录](application-release-history.md)
+ [开始使用 Amazon OpenSearch 服务中的 OpenSearch 用户界面](application-getting-started.md)
+ [Amazon OpenSearch 服务中的代理人工智能](application-ai-assistant.md)
+ [使用客户托管密钥加密 OpenSearch UI 应用程序元数据](application-encryption-cmk.md)
+ [使用启用 SAML 联合 AWS Identity and Access Management](application-enable-SAML-identity-federation.md)
+ [管理数据来源关联和虚拟私有云访问权限](application-data-sources-and-vpc.md)
+ [使用亚马逊 OpenSearch 服务工作空间](application-workspaces.md)
+ [跨区域和跨账户数据访问](application-cross-region-cross-account.md)
+ [管理从 VPC 终端节点对 OpenSearch UI 的访问](application-access-ui-from-vpc-endpoint.md)
+ [将已保存的对象从 OpenSearch 仪表板迁移到 OpenSearch 用户界面](application-migration.md)
+ [OpenSearch UI 端点和配额](opensearch-ui-endpoints-quotas.md)

# 亚马逊 OpenSearch 服务用户界面发布历史记录
<a name="application-release-history"></a>

下表列出了所有版本的 Amazon S OpenSearch ervice OpenSearch 用户界面支持以及每个版本中包含的功能和增强功能。


| 更改 | 发行日期 | 说明 | 
| --- | --- | --- | 
| 新功能 |  2025-03-10  | OpenSearch 用户界面现在支持跨账户访问 OpenSearch 域名。您可以将一个账户中的应用程序配置为使用 IAM 或 AWS IAM Identity Center 身份验证访问不同账户中的公有域和 VPC 域。有关更多信息，请参阅 [跨账户数据访问 OpenSearch 域名](application-cross-account-data-access-domains.md)。 | 
| 新功能 |  2025-12-29  | OpenSearch 用户界面现在支持用于加密应用程序元数据的客户托管密钥 (CMK)。此功能允许您完全控制加密密钥，从而帮助您满足监管和合规性要求。此次发布还提高了 OpenSearch 用户界面中已保存对象的元数据大小限制，使您能够创建和存储复杂的查询、大量的可视化效果和大型工作空间。有关更多信息，请参阅 [使用客户托管密钥加密 OpenSearch UI 应用程序元数据](application-encryption-cmk.md)。 | 
| 新功能 |  2025-04-16  | OpenSearch 用户界面现在支持[跨集群搜索](cross-cluster-search.md)。这使您可以将 OpenSearch 用户界面合二为一 AWS 区域 来访问不同区域的集群。通过将其配置为远程集群，并与同一区域内的集群建立连接即可实现。有关更多信息，请参阅 [跨集群搜索](application-cross-cluster-search.md)。 | 
| 新功能 |  2025-03-31  | Amazon Q 开发者现已在亚马逊 OpenSearch 服务中正式推出。有关信息，请参阅[适用于亚马逊 OpenSearch 服务的 AI 助手](AI-assistant-support.md)。 | 
| 新功能 |  2025-02-05  | 通过 (IAM) 联合身份验证的安全断言标记语言 2.0 (SAML) AWS Identity and Access Management (SAML) 现在适用于用户界面。 OpenSearch 如此一来，您可以为最终用户创建由身份提供程序发起的单点登录（SSO）体验。有关更多信息，请参阅 [使用启用 SAML 联合 AWS Identity and Access Management](application-enable-SAML-identity-federation.md)。 | 
| 全新集成 |  2024-12-01  | 与 Amazon 的零 ETL 集成 CloudWatch 简化了日志数据分析和可视化，从而降低了技术开销和运营成本。有关更多信息，请参阅*AWS 新闻博客*上的 [Amazon CloudWatch 和 Amazon 新 OpenSearch 服务推出集成分析体验](https://aws.amazon.com/blogs/aws/new-amazon-cloudwatch-and-amazon-opensearch-service-launch-an-integrated-analytics-experience/)。 | 
| 全新集成 |  2024-12-01  | 与 Amazon Security Lake 的零 ETL 集成，使组织能够高效地搜索、分析安全数据并从中获得切实可行的见解。有关更多信息，请参阅*AWS 新闻博客*上的 “[介绍亚马逊 OpenSearch 服务和 Amazon Security Lake 集成以简化安全分析](https://aws.amazon.com/blogs/aws/introducing-amazon-opensearch-service-zero-etl-integration-for-amazon-security-lake/)”。 | 
| 初始版本 |  2024-11-07  |  OpenSearch UI 的首次公开发布。有关更多信息，请参阅 [Amazon S OpenSearch ervice 在*AWS 大数据博客*上发布下一代 OpenSearch 用户界面](https://aws.amazon.com/blogs/big-data/amazon-opensearch-service-launches-the-next-generation-opensearch-ui/)。 | 

# 开始使用 Amazon OpenSearch 服务中的 OpenSearch 用户界面
<a name="application-getting-started"></a>

在 Amazon OpenSearch 服务中，*应用程序*是 OpenSearch用户界面 (OpenSearch UI) 的实例。每个应用程序可关联多个数据来源，而单个数据来源也可关联多个应用程序。您可以使用不同的受支持身份验证选项，为不同的管理员创建多个应用程序。

使用本主题中的信息来指导您完成使用 AWS 管理控制台 或创建 OpenSearch UI 应用程序的过程 AWS CLI。

**Topics**
+ [创建亚马逊 OpenSearch 服务应用程序所需的权限](#application-prerequisite-permissions)
+ [创建 OpenSearch UI 应用程序](#create-application)
+ [管理应用程序管理员](#managing-application-administrators)

## 创建亚马逊 OpenSearch 服务应用程序所需的权限
<a name="application-prerequisite-permissions"></a>

创建应用程序之前，请确认您已获得执行该任务所需的权限。如有需要，请联系账户管理员获取帮助。

### 通用权限
<a name="prerequisite-permissions-general"></a>

要在 S OpenSearch ervice 中使用应用程序，您需要具有以下策略中显示的权限。这些权限可用于以下用途：
+ 创建和管理应用程序需要五大 `es:*Application` 权限。
+ 在应用程序中添加、列出和删除标签需要三大 `es:*Tags` 权限。
+ 关联数据来源需要 `aoss:BatchGetCollection`、`es:DescribeDomain` 和 `es:GetDirectQueryDataSource` 权限。
+ 访问数据来源需要 `aoss:APIAccessAll`、`es:ESHttp*` 以及 4 大 `opensearch:*DirectQuery*` 权限。
+ 向 Amazon S OpenSearch ervice `iam:CreateServiceLinkedRole` 提供了在您的账户中创建服务相关角色 (SLR) 的权限。使用此角色可以让 OpenSearch UI 应用程序在您的账户中发布 Amazon CloudWatch 指标。有关更多信息，请参阅 [Permissions](slr-aos.md#slr-permissions)主题中的 [使用服务关联角色创建 VPC 域，直接查询数据来源](slr-aos.md)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "es:CreateApplication",
                "es:DeleteApplication",
                "es:GetApplication",
                "es:ListApplications",
                "es:UpdateApplication",
                "es:AddTags",
                "es:ListTags",
                "es:RemoveTags",
                "aoss:APIAccessAll",
                "es:ESHttp*",
                "opensearch:StartDirectQuery",
                "opensearch:GetDirectQuery",
                "opensearch:CancelDirectQuery",
                "opensearch:GetDirectQueryResult",
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "es:DescribeDomain",
                "es:DescribeDomains",
                "es:ListDomainNames",
                "es:GetDirectQueryDataSource",
                "es:ListDirectQueryDataSources"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService"
        }
    ]
}
```

------

### 创建使用 IAM Identity Centity 身份验证的应用程序的权限（可选）
<a name="prerequisite-permissions-idc"></a>

默认情况下，控制面板应用程序使用 AWS Identity and Access Management (IAM) 进行身份验证，以管理 AWS 资源用户的权限。但是，您可以选择使用 IAM Identity Center 提供单点登录体验，该中心允许您使用现有的身份提供商登录 OpenSearch 界面应用程序。在这种情况下，您将在本主题后面的步骤中选择 “**使用 IAM 身份中心进行身份验证**” 选项，然后向 IAM Identity Center 用户授予访问 OpenSearch UI 应用程序所需的权限。）

要创建使用 IAM Identity Center 身份验证的应用程序，您需要以下权限。将 *placeholder values* 替换为您自己的信息。如有需要，请联系账户管理员获取帮助。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IDCPermissions",
            "Effect": "Allow",
            "Action": [
                "es:CreateApplication",
                "es:DeleteApplication",
                "es:GetApplication",
                "es:ListApplications",
                "es:UpdateApplication",
                "es:AddTags",
                "es:ListTags",
                "es:RemoveTags",
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "es:DescribeDomain",
                "es:DescribeDomains",
                "es:ListDomainNames",
                "es:GetDirectQueryDataSource",
                "es:ListDirectQueryDataSources",
                "sso:CreateApplication",  
                "sso:DeleteApplication",  
                "sso:PutApplicationGrant",  
                "sso:PutApplicationAccessScope",  
                "sso:PutApplicationAuthenticationMethod",  
                "sso:ListInstances",  
                "sso:DescribeApplicationAssignment",  
                "sso:DescribeApplication",  
                "sso:CreateApplicationAssignment",  
                "sso:ListApplicationAssignments",  
                "sso:DeleteApplicationAssignment",
                "sso-directory:SearchGroups",
                "sso-directory:SearchUsers",
                "sso:ListDirectoryAssociations",
                "identitystore:DescribeUser",
                "identitystore:DescribeGroup",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SLRPermission",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService"
        },
        {
            "Sid": "PassRolePermission",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/iam-role-for-identity-center"
        }
    ]
}
```

------

## 创建 OpenSearch UI 应用程序
<a name="create-application"></a>

创建需指定应用程序名称、身份验证方法和管理员的应用程序，可通过以下任一步骤实现。

**Topics**
+ [在控制台中创建使用 IAM 身份验证的 OpenSearch UI 应用程序](#create-application-iam-authentication-console)
+ [在控制台中创建使用 AWS IAM Identity Center 身份验证的 OpenSearch UI 应用程序](#create-application-iam-identity-center-authentication-console)
+ [创建使用 AWS IAM Identity Center 身份验证的 OpenSearch UI 应用程序 AWS CLI](#create-application-iam-identity-center-authentication-cli)

### 在控制台中创建使用 IAM 身份验证的 OpenSearch UI 应用程序
<a name="create-application-iam-authentication-console"></a>

**在控制台中创建使用 IAM 身份验证的 OpenSearch UI 应用程序**

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

1. 在左侧导航窗格中，选择 **OpenSearch UI（控制面板）**。

1. 选择**创建应用程序**。

1. 在**应用程序名称**中，输入应用程序的名称。

1. 请勿选择**使用 IAM Identity Center 进行身份验证**复选框。有关通过身份验证创建应用程序的信息 AWS IAM Identity Center，请参阅本主题[在控制台中创建使用 AWS IAM Identity Center 身份验证的 OpenSearch UI 应用程序](#create-application-iam-identity-center-authentication-console)后面的部分。

1. （可选）您创建的应用程序将自动将您添加为管理员。在**OpenSearch 应用程序管理员管理**区域中，您可以向其他用户授予管理员权限。
**注意**  
 OpenSearch UI 应用程序管理员角色授予编辑和删除 OpenSearch UI 应用程序的权限。应用程序管理员还可以在 OpenSearch 用户界面应用程序中创建、编辑和删除工作区。

   要向其他用户授予管理员权限，请选择以下任一操作：
   + **向特定用户授予管理员权限** — 在**OpenSearch应用程序管理员**字段的**属性**弹出列表中，选择 **IAM 用户或** 

     **AWS IAM Identity Center 用户**，然后选择要向其授予管理员权限的单个用户。
   + **向所有用户授予管理员权限**：将向您组织或账户中的所有用户授予管理员权限。

1. （可选）配置加密设置。默认情况下， OpenSearch 用户界面元数据使用 AWS 自有密钥进行加密。要使用您自己的客户托管密钥 (CMK) 进行加密，请参阅[使用客户托管密钥加密 OpenSearch UI 应用程序元数据](application-encryption-cmk.md)。

1. （可选）在**标签**区域中，将一个或多个标签密钥 name/value 对应用于应用程序。

   标签是您分配给资源的可选元数据。标签可让您按不同的方式（如用途、拥有者或环境）对资源进行分类。

1. 选择**创建**。

### 在控制台中创建使用 AWS IAM Identity Center 身份验证的 OpenSearch UI 应用程序
<a name="create-application-iam-identity-center-authentication-console"></a>

要创建使用 AWS IAM Identity Center 身份验证的 OpenSearch UI 应用程序，您必须拥有本主题前面所述的 IAM 权限[创建使用 IAM Identity Centity 身份验证的应用程序的权限（可选）](#prerequisite-permissions-idc)。

**在控制台中创建使用 AWS IAM Identity Center 身份验证的 OpenSearch UI 应用程序**

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

1. 在左侧导航窗格中，选择 **OpenSearch UI（控制面板）**。

1. 选择**创建应用程序**。

1. 在**应用程序名称**中，输入应用程序的名称。

1. （可选）要为组织或账户启用单点登录，请执行以下操作：

   1. 选择**使用 IAM Identity Center 进行身份验证**复选框，如下图所示：  
![\[“单点登录身份验证”区域中，选中“使用 IAM Identity Center 进行身份验证”复选框。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ui-Single-sign-on-authentication.png)

   1. 请执行以下操作之一：
      + 在 Ident **ity Center 的 IAM 角色应用程序**列表中，选择一个现有 IAM 角色，该角色为 IAM Identity Center 提供访问 OpenSearch 用户界面和相关数据源所需的权限。请参阅下文的策略，了解该角色必须具备的权限。
      + 创建具有所需权限的新角色。按照《IAM 用户指南》**中的以下步骤，使用指定选项创建新角色，并配置必要的权限策略和信任策略。
        + 流程：[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/access_policies_create-console.html)

          在执行本流程的步骤时，请将以下策略粘贴到策略编辑器的 **JSON** 字段中：

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

****  

          ```
          {
              "Version":"2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Sid": "IdentityStoreOpenSearchDomainConnectivity",
                      "Effect": "Allow",
                      "Action": [
                          "identitystore:DescribeUser",
                          "identitystore:ListGroupMembershipsForMember",
                          "identitystore:DescribeGroup"
                      ],
                      "Resource": "*",
                      "Condition": { 
                          "ForAnyValue:StringEquals": {
                              "aws:CalledViaLast": "es.amazonaws.com"
                          }
                      }
                  },
                  {
                      "Sid": "OpenSearchDomain",
                      "Effect": "Allow",
                      "Action": [
                          "es:ESHttp*"
                      ],
                      "Resource": "*"
                  },
                  {
                      "Sid": "OpenSearchServerless",
                      "Effect": "Allow",
                      "Action": [
                          "aoss:APIAccessAll"
                      ],
                      "Resource": "*"
                  }
              ]
          }
          ```

------
        + 流程：[使用自定义信任策略创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)

          按照此流程中的步骤进行操作时，将**自定义信任策略**框中的占位符 JSON 替换为以下内容：
**提示**  
如果要向现有角色添加信任策略，请在该角色的**信任关系**选项卡上添加该策略。

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

****  

          ```
          {
              "Version":"2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "application.opensearchservice.amazonaws.com"
                      },
                      "Action": "sts:AssumeRole"
                  },
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "application.opensearchservice.amazonaws.com"
                      },
                      "Action": "sts:SetContext",
                      "Condition": {
                          "ForAllValues:ArnEquals": {
                          "sts:RequestContextProviders": "arn:aws:iam::123456789012:oidc-provider/portal.sso.us-east-1.amazonaws.com/apl/application-id"
                          }
                      }
                  }
              ]
          }
          ```

------

   1. 如果您的组织或账户中已经创建了 IAM 身份中心实例，则控制台会报告 Amazon OpenSearch Dashboards 已连接到 IAM Identity Center 的组织实例，如下图所示。  
![\[“连接到 IAM 身份中心账户实例的 Amazon OpenSearch 控制面板” 区域显示现有 IAM 身份中心账户实例的 URL。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ui-connected-instance.png)

      如果您的组织或账户中还没有 IAM Identity Center，您或具备所需权限的管理员可以创建组织实例或账户实例。将 A **mazon OpenSearch 控制面板连接到 IAM 身份中心**区域为两者提供了选项，如下图所示：  
![\[“将 Amazon OpenSearch 控制面板连接到 IAM 身份中心” 区域提供了用于创建组织实例或账户实例的按钮。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ui-no-connected-instance.png)

       在此情况下，您可以在 IAM Identity Center 中创建账户实例以进行测试，或者请求管理员在 IAM Identity Center 中创建组织实例。有关更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的以下主题：
**注意**  
如果您想在不同于您的 IAM Identity Center 组织实例 AWS 区域 中创建 OpenSearch UI 应用程序，请参阅在[多个实例中使用 IAM 身份中心 AWS 区域](https://docs.aws.amazon.com/singlesignon/latest/userguide/multi-region-iam-identity-center.html)。
      + [IAM 身份中心的组织实例](https://docs.aws.amazon.com/singlesignon/latest/userguide/organization-instances-identity-center.html)
      + [IAM Identity Center 的账户实例](https://docs.aws.amazon.com/singlesignon/latest/userguide/account-instances-identity-center.html)
      + [启用 AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)

1. （可选）您创建的应用程序将自动将您添加为管理员。在**OpenSearch 应用程序管理员管理**区域中，您可以向其他用户授予管理员权限，如下图所示：  
![\[“OpenSearch 应用程序管理员管理” 区域提供了向选定用户或所有用户授予管理员权限的选项。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ui-admins-management.png)
**注意**  
 OpenSearch UI 应用程序管理员角色授予编辑和删除 OpenSearch UI 应用程序的权限。应用程序管理员还可以在 OpenSearch 用户界面应用程序中创建、编辑和删除工作区。

   要向其他用户授予管理员权限，请选择以下任一操作：
   + **向特定用户授予管理员权限** — 在**OpenSearch应用程序管理员**字段的**属性**弹出列表中，选择 **IAM 用户或** 

     **AWS IAM Identity Center 用户**，然后选择要向其授予管理员权限的单个用户。
   + **向所有用户授予管理员权限**：将向您组织或账户中的所有用户授予管理员权限。

1. （可选）在**标签**区域中，将一个或多个标签密钥 name/value 对应用于应用程序。

   标签是您分配给资源的可选元数据。标签可让您按不同的方式（如用途、拥有者或环境）对资源进行分类。

1. 选择**创建**。

### 创建使用 AWS IAM Identity Center 身份验证的 OpenSearch UI 应用程序 AWS CLI
<a name="create-application-iam-identity-center-authentication-cli"></a>

要使用创建使用 AWS IAM Identity Center 身份验证的 OpenSearch 用户界面应用程序，请使用带有以下 AWS CLI选项的 [create-ap](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-application.html) plication 命令：
+ `--name`：应用程序的名称。
+ `--iam-identity-center-options`—（可选）用于身份验证和访问控制的 IAM 身份中心实例和 IAM 角色。 OpenSearch 

将 *placeholder values* 替换为您自己的信息。

```
aws opensearch create-application \
    --name application-name \
    --iam-identity-center-options "
          {
          \"enabled\":true,
          \"iamIdentityCenterInstanceArn\":\"arn:aws:sso:::instance/sso-instance\",
          \"iamRoleForIdentityCenterApplicationArn\":\"arn:aws:iam::account-id:role/role-name\"
          }
    "
```

## 管理应用程序管理员
<a name="managing-application-administrators"></a>

 OpenSearch 用户界面应用程序管理员是具有编辑和删除 OpenSearch 用户界面应用程序权限的已定义角色。

默认情况下，作为 OpenSearch UI 应用程序的创建者，您是 OpenSearch UI 应用程序的第一位管理员。

### 使用控制台管理 OpenSearch UI 管理员
<a name="managing-application-administrators-console"></a>

您可以在应用程序创建工作流程中为 OpenSearch 用户界面应用程序添加其他管理员 AWS 管理控制台，也可以在应用程序创建后的 **“编辑**” 页面中添加其他管理员。

 OpenSearch UI 应用程序管理员角色授予编辑和删除 OpenSearch UI 应用程序的权限。应用程序管理员还可以在 OpenSearch 用户界面应用程序中创建、编辑和删除工作区。

在应用程序详情页面上，您可以搜索 IAM 主体的 Amazon 资源名称（ARN），也可以搜索 IAM Identity Center 用户的名称。

**使用控制台管理 OpenSearch UI 管理员**

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

1. 在左侧导航窗格中，选择 **OpenSearch UI（控制面板）**。

1. 在**OpenSearch 应用程序**区域中，选择现有应用程序的名称。

1. 选择 **Edit (编辑)**。

1. 要向其他用户授予管理员权限，请选择以下任一操作：
   + **向特定用户授予管理员权限** — 在**OpenSearch应用程序管理员**字段的**属性**弹出列表中，选择 **IAM 用户或** 

     **AWS IAM Identity Center 用户**，然后选择要向其授予管理员权限的单个用户。
   + **向所有用户授予管理员权限**：将向您组织或账户中的所有用户授予管理员权限。

1. 选择**更新**。

您可以移除其他管理员，但每个 OpenSearch UI 应用程序必须至少保留一名管理员。

### 使用管理 OpenSearch 用户界面管理员 AWS CLI
<a name="managing-application-administrators-cli"></a>

您可以使用创建和更新 OpenSearch UI 应用程序管理员 AWS CLI。

#### 使用创建 OpenSearch 用户界面管理员 AWS CLI
<a name="creating-application-administrators-cli"></a>

以下是在创建 OpenSearch UI 应用程序时将 IAM 委托人和 IAM 身份中心用户添加为管理员的示例。

##### 示例 1：创建将 IAM 用户添加为管理员的 OpenSearch UI 应用程序
<a name="add-admin-examples-iam-user-cli"></a>

运行以下命令创建将 IAM 用户添加为管理员的 OpenSearch UI 应用程序。将 *placeholder values* 替换为您自己的信息。

```
aws opensearch create-application \
    --name application-name \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"arn:aws:iam::account-id:user/user-id\"
        }
    "
```

##### 示例 2：创建 OpenSearch 启用 IAM 身份中心并将 IAM 身份中心用户 ID 添加为 OpenSearch UI 应用程序管理员的 UI 应用程序
<a name="add-admin-examples-iam-identify-center-user-cli"></a>

运行以下命令创建启用 IAM Identity Center 并以 OpenSearch UI 应用程序管理员身份添加 IAM 身份中心用户 ID 的 OpenSearch UI 应用程序。将 *placeholder values* 替换为您自己的信息。

`key`指定要设置的配置项目，例如 OpenSearch UI 应用程序的管理员角色。有效值包括 `opensearchDashboards.dashboardAdmin.users` 和 `opensearchDashboards.dashboardAdmin.groups`。

*xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx*表示分配给密钥的值，例如 IAM 用户的亚马逊资源名称 (ARN)。

```
aws opensearch create-application \
    --name myapplication \
    --iam-identity-center-options "
        {
        \"enabled\":true,
        \"iamIdentityCenterInstanceArn\":\"arn:aws:sso:::instance/ssoins-instance-id\",
        \"iamRoleForIdentityCenterApplicationArn\":\"arn:aws:iam::account-id:role/role-name\"
        }
    " \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"
        }
    "
```

#### 使用更新 OpenSearch 用户界面管理员 AWS CLI
<a name="updating-application-administrators-cli"></a>

以下是更新分配为现有 OpenSearch应用程序管理员的 IAM 委托人和 IAM Identity Center 用户的示例。

##### 示例 1：将 IAM 用户添加为现有 OpenSearch 应用程序的管理员
<a name="update-admin-examples-iam-user-cli"></a>

运行以下命令更新 OpenSearch UI 应用程序以将 IAM 用户添加为管理员。将 *placeholder values* 替换为您自己的信息。

```
aws opensearch update-application \
    --id myapplication \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"arn:aws:iam::account-id:user/user-id\"
        }
    "
```

##### 示例 2：更新 OpenSearch UI 应用程序以将 IAM Identity Center 用户 ID 添加为 OpenSearch UI 应用程序管理员
<a name="update-admin-examples-iam-identify-center-user-cli"></a>

运行以下命令更新 OpenSearch UI 应用程序，以将 IAM Identity Center 用户 ID 添加为 OpenSearch UI 应用程序管理员。将 *placeholder values* 替换为您自己的信息。

`key`指定要设置的配置项目，例如 OpenSearch UI 应用程序的管理员角色。有效值包括 `opensearchDashboards.dashboardAdmin.users` 和 `opensearchDashboards.dashboardAdmin.groups`。

*xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx*表示分配给密钥的值，例如 IAM 用户的亚马逊资源名称 (ARN)。

```
aws opensearch update-application \
    --id myapplication \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"
        }
    "
```

# Amazon OpenSearch 服务中的代理人工智能
<a name="application-ai-assistant"></a>

OpenSearch 用户界面包括一套代理人工智能功能，旨在简化运营分析，加快工程和支持团队的事件调查。

在 OpenSearch 界面应用程序的每个页面上，选择 As **k A** I 按钮以打开 Agentic Chat。Agentic Chat 了解您正在查看的页面的上下文，使用代理工具分析基础数据，更新查询以在 Discover 中显示结果，并清晰准确地回答您的问题。当复杂的根本原因分析需要进行更深入的调查时，您可以触发调查代理通过多步骤工作流程自主规划、执行和反思，提供由数据证据支持的结构化假设。Agentic Memory 为这两种代理功能提供支持，它是一个存储层，可在对话或调查中保留背景信息，这样你就可以在不同的 Web 会话中以相同、一致的上下文继续提问后续问题。

![\[OpenSearch 用户界面中的 “发现” 页面显示 Agentic Chat 使用自然语言输入 “查找所有延迟超过 10 秒的请求” 生成 PPL 查询，“Ask AI” 面板显示查询说明和 “开始调查” 按钮。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/agentic-chat-discover-ppl.png)


## 关键功能
<a name="application-ai-assistant-key-capabilities"></a>
+ A@@ **gentic Chat** — Agentic Chat 嵌入在 OpenSearch 用户界面每个页面的 Ask AI 功能中，它可以了解你当前的上下文，并调用工具来分析数据以最好地回答你的问题。在 Discover 上，在聊天界面中输入自然语言以生成和迭代管道处理语言 (PPL) 查询，因此您无需成为 PPL 专家即可获得可行的见解。您也可以直接从可视化开始对话，Agentic Chat 可以在其中识别图表中的异常，与基础数据关联并生成分析。当需要进行复杂的根本原因分析时，使用`/investigate`斜杠命令根据正在进行的对话或新的说明启动调查代理。
+ **调查代理** — 以目标为导向的深度研究代理，您可以通过`/investigate`在聊天中键入内容或选择专题页面上的 “**开始调查**” 按钮来激活该代理。输入调查目标，例如 “找出延迟峰值的根本原因”。调查代理使用您的数据和既定目标自主进行计划，执行查询和分析，并通过多步骤工作流程进行反思。当调查完成后，通常在几分钟内，它会生成按可能性排序的结构化假设，每个假设都有数据证据支持。它为推理的每个步骤提供了完全的透明度，因此您可以验证和信任结果。
+ **Agentic M** emory — 一种服务管理的存储层，可在对话或调查中保留背景信息，以便您可以继续在一致的环境中提问或进行调查。Agentic Memory 使 Agentic Chat 和调查代理能够在整个会话中保持连续性。

## 定价和使用限制
<a name="application-ai-assistant-pricing"></a>

代理人工智能功能可以免费使用。基于令牌的使用限制适用于每个账户，以防止滥用。

代理人工智能功能使用 Amazon Bedrock 中的基础模型。所有 Amazon Bedrock 安全和数据治理配置都适用于代理人工智能功能。有关更多信息，请参阅 [Amazon Bedrock 中的数据保护](https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html)。

## 安全性
<a name="application-ai-assistant-security"></a>

Agentic AI 功能在您现有的安全框架内运行，不会绕过或覆盖任何已配置的访问控制。当您与 Agentic Chat 互动或启动调查代理时，AI 功能将使用您当前的 IAM 或 IAM Identity Center 证书进行身份验证，并继承所有相关权限。AI 助手只能查询您已经通过现有的基于角色的访问控制 (RBAC) 策略获得显式访问权限的数据源、索引和可视化效果。

如果您的 OpenSearch 网域实施了具有字段级或文档级安全性的精细访问控制，则 AI 会尊重这些限制，并且无法显示来自受限字段或超出您权限范围的文档的数据。同样，Agentic Chat 生成的任何 PPL 查询或调查期间执行的数据检索都将根据您的用户上下文执行，从而确保所有配置的安全策略保持完全执行。

这种权限继承模型可确保启用 AI 功能不会造成新的安全漏洞，也不会要求管理员为 AI 交互管理单独的权限结构。

## 启用和禁用代理 AI 功能
<a name="application-ai-assistant-enable-disable"></a>

除非您在任何 OpenSearch 域中明确禁用了 A OpenSearch I 功能，否则新的 UI 应用程序和现有应用程序会自动启用代理 AI 功能。

要启用或禁用 AI 功能，您可以使用 AWS 管理控制台 或 API：
+ **控制台**-导航到 OpenSearch UI 应用程序的详细信息页面，然后从那里更新 AI 功能。  
![\[控制台中的管理 AI Assistant 功能页面显示了 “启用聊天机器人和代理调查功能” 复选框和 “更新” 按钮。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/agentic-ai-manage-features.png)
+ **API** — 使用 [RegisterCapability](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_RegisterCapability.html)API 启用人工智能功能，或使用 [DeregisterCapability](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_DeregisterCapability.html)API 将其禁用。

## 区域可用性
<a name="application-ai-assistant-regions"></a>

Agentic AI 功能在以下几 AWS 区域种中可用：
+ 亚太地区（东京）- ap-northeast-1
+ 亚太地区（悉尼）- ap-southeast-2
+ 欧洲（法兰克福）- eu-central-1
+ 欧洲（斯德哥尔摩）- eu-north-1
+ 欧洲（西班牙）- eu-south-2
+ 欧洲（爱尔兰）- eu-west-1
+ 美国东部（弗吉尼亚北部）- us-east-1
+ 美国东部（俄亥俄）- us-east-2
+ 美国西部（俄勒冈）- us-west-2

**Topics**
+ [关键功能](#application-ai-assistant-key-capabilities)
+ [定价和使用限制](#application-ai-assistant-pricing)
+ [安全性](#application-ai-assistant-security)
+ [启用和禁用代理 AI 功能](#application-ai-assistant-enable-disable)
+ [区域可用性](#application-ai-assistant-regions)
+ [Amazon OpenSearch 服务中的代理聊天](application-agentic-chat.md)
+ [Amazon OpenSearch 服务中的调查代理](application-investigation-agent.md)
+ [Amazon OpenSearch 服务中的代理内存](application-agentic-memory.md)

# Amazon OpenSearch 服务中的代理聊天
<a name="application-agentic-chat"></a>

Agentic Chat 是一款嵌入在 OpenSearch 用户界面每个页面中的人工智能助手。选择 As **k AI** 按钮可打开聊天面板，您可以在其中询问有关您的数据的问题、生成查询并启动调查。Agentic Chat 了解你在 “发现和调查” 中查看的页面的上下文，并使用代理工具来分析基础数据。

![\[OpenSearch 用户界面中的 “发现” 页面，右上角突出显示了 “Ask AI” 按钮。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/agentic-chat-ask-ai-button.png)


当您打开聊天面板时，Agentic Chat 会显示一些选项来帮助您入门：询问有关您的数据的问题、调查问题或解释概念。如果您之前开始了对话，则当您在页面之间导航时，对话仍会在聊天面板中可见，这样您就可以从上次中断的地方继续对话。或者，选择右上角的 “**新建聊天**” 按钮开始新的对话。

![\[Agentic Chat 面板显示了 AI Assistant 的欢迎消息，其中包含提问、调查问题或解释概念的选项。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/agentic-chat-ask-ai-panel.png)


## 在 Discover 中使用代理聊天
<a name="application-agentic-chat-discover"></a>

在 Observability 工作区的 “发现” 页面上，你可以在聊天界面中输入自然语言来生成 PPL 查询。Agentic Chat 会将你的问题翻译成 PPL，执行查询，然后直接在 “发现” 视图中显示结果。您无需成为 PPL 专家即可从数据中获得切实可行的见解。

要完善生成的查询，请使用自然语言提问后续问题，例如 “为状态代码 500 添加筛选条件”。Agentic Chat 了解当前查询的上下文并对其进行相应的修改。您也可以要求调整聚合、更改时间范围或在结果中添加其他字段。每次迭代都会使用新的查询结果更新 Discover 视图。

## 使用带有可视化效果的代理聊天
<a name="application-agentic-chat-visualizations"></a>

你可以直接从可视化中开始与 Agentic Chat 的对话。在可视化面板上打开快捷菜单，然后选择 As **k AI**。Agentic Chat 分析可视化，识别图表中的异常，与基础数据关联并生成分析。

![\[OpenSearch 用户界面中的可视化效果在上下文菜单中显示 “Ask AI” 选项，Agentic Chat 面板正在分析可视化效果。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/agentic-chat-visualization.png)


## 通过聊天开始调查
<a name="application-agentic-chat-investigation"></a>

当需要进行复杂的根本原因分析时，您可以直接从 Agentic Chat 启动调查代理。在聊天输入中使用`/investigate`斜杠命令，或在专题页面上选择 “**开始调查**” 按钮。

有关调查代理的更多信息，请参阅[Amazon OpenSearch 服务中的调查代理](application-investigation-agent.md)。

## 支持的工具
<a name="application-agentic-chat-tools"></a>

Agentic Chat 使用以下工具来分析您的数据并回答问题。要查看可用工具的最多 up-to-date列表，请在聊天界面中键入 “您可以使用哪些工具”。

**前端工具**  
这些工具更新了 OpenSearch 用户界面：
+ `create_investigation`— 创建新的机构调查笔记本，其中包含目标、症状、指数和时间范围等详细信息。
+ `execute_ppl_query`— 针对当前数据集运行 PPL 查询，并在 “发现” 页面中显示结果。
+ `update_time_range`— 更新当前 “发现” 页面上的全局时间范围筛选器（例如，“过去 24 小时” 或 “上周”）。

**后端工具**  
这些工具直接与 OpenSearch 数据交互，并且 APIs：
+ `SearchIndexTool`— 使用 DSL 查询搜索索引。
+ `MsearchTool`— 在单个请求中执行多个搜索操作。
+ `CountTool`— 返回与查询相匹配的文档数。
+ `ExplainTool`— 解释为什么文档与查询匹配或不匹配。
+ `ListIndexTool`— 列出集群中的索引以及可选的详细信息。
+ `IndexMappingTool`— 检索索引映射和设置。
+ `GetShardsTool`— 获取索引的分片信息。
+ `ClusterHealthTool`— 返回集群运行状况信息。
+ `LogPatternAnalysisTool`— 分析日志模式、比较时间范围或执行跟踪序列分析。
+ `MetricChangeAnalysisTool`— 比较两个时间范围之间数值字段的百分位分布。
+ `DataDistributionTool`— 分析目标时间范围内的字段值分布，可以选择与基线进行比较。
+ `GenericOpenSearchApiTool`— 用于直接调用任何 OpenSearch API 端点的灵活工具。

# Amazon OpenSearch 服务中的调查代理
<a name="application-investigation-agent"></a>

调查代理是 OpenSearch 用户界面中以目标为导向的深度研究代理，可以代表你自主调查复杂的问题。它计划使用您的数据和既定目标，执行查询和分析，并通过多步骤工作流程进行反思。当调查完成后，通常在几分钟内，它会生成按可能性排序的结构化假设，每个假设都有数据证据支持。它为推理的每个步骤提供了完全的透明度，因此您可以验证和信任结果。

## 开始调查
<a name="application-investigation-agent-start"></a>

您可以通过两种方式开始调查：
+ 从 “发现”、“可视化” 或其他支持的功能页面中，选择 “**开始调查**” 按钮。将出现一个对话框，您可以在其中输入调查目标，并从建议的模板（例如 “根本原因分析” 或 “绩效问题”）中进行选择。
+ 在 Agentic Chat 中，在聊天输入中键入带有调查目标的`/investigate`斜杠命令。

![\[“开始调查” 对话框显示了调查目标的文本字段以及用于根本原因分析和性能问题的建议模板。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/investigation-agent-start.png)


有关 Agentic Chat 的更多信息，请参阅[Amazon OpenSearch 服务中的代理聊天](application-agentic-chat.md)。

## 审查调查结果
<a name="application-investigation-agent-results"></a>

调查完成后，调查人员会提出一个带有可信度水平和支持证据的主要假设。结果页面显示了所采取的调查步骤、按重要性排列的相关发现以及其他假设。

![\[调查结果页面显示了包含 “接受” 和 “排除” 选项的主要假设、按重要性排列的相关发现以及备选假设。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/investigation-agent-results.png)


您可以查看每个假设背后的发现，然后选择 “**接受**” 以确认该假设，或者选择 “排**除**” 以拒绝该假设。可能性较低的备选假设也可供审查。如果任何备选假设更符合您的评估，则可以选择任何备选假设作为最终结论。

## 重新调查
<a name="application-investigation-agent-reinvestigate"></a>

如果调查结果需要进一步澄清，或者如果调查人员确定可用数据集无法回答调查问题，则可以使用 “**重新调查**” 选项来调整并重新进行调查。选择 **Reinv** estigate 编辑初始目标、调整时间范围，还可以选择将现有假设和发现引入新的调查中。

![\[“重新调查问题” 对话框显示了编辑初始目标、调整时间范围以及将现有假设和发现引入新调查的选项。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/investigation-agent-reinvestigate.png)


# Amazon OpenSearch 服务中的代理内存
<a name="application-agentic-memory"></a>

Agentic Memory 是一个服务管理的内存层，可为 Agentic Chat 和调查代理提供支持。它可以在您的对话或调查中保留背景信息，以便您在不同的专题页面、浏览器选项卡和页面刷新中获得一致的体验。Agentic Memory 会自动运行，无需用户配置。

Agentic Memory 建立在 OpenSearch 代理内存框架之上。为了保护隐私，内存存储按用户 ID 隔离。

## 数据保护
<a name="application-agentic-memory-data-protection"></a>

Agentic Memory 可以免费使用。存储在 Agentic Memory 中的客户数据使用服务管理密钥进行加密。如果您为用户 OpenSearch 界面应用程序启用了客户托管密钥 (CMK) 加密，则您的内存数据将改用您的 CMK 进行加密。内存存储在服务托管的 Amazon OpenSearch 无服务器集合中。

有关 CMK 加密的更多信息，请参阅[使用客户托管密钥加密 OpenSearch UI 应用程序元数据](application-encryption-cmk.md)。

## 限制
<a name="application-agentic-memory-limitations"></a>

Agentic Memory 无法跨不同的对话话题保留上下文。

# 使用客户托管密钥加密 OpenSearch UI 应用程序元数据
<a name="application-encryption-cmk"></a>

视觉资产和配置以元数据形式存储在 OpenSearch UI 应用程序中。这包括保存的查询、可视化和仪表板。来自关联数据源的数据不存储在元数据中。有关加密数据源中的数据的信息，请参阅 [Amazon OpenSearch 服务中的 OpenSearch 域名数据保护和针对 OpenSearch 无服务器集合的 Amaz](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-protection.html) [on Serverless 中的加密](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-encryption.html)。

您的 OpenSearch 界面元数据受静态加密保护。这样可以防止未经授权的访问。加密使用 AWS Key Management Service (AWS KMS) 来存储和管理加密密钥。默认情况下， OpenSearch 用户界面元数据使用 AWS 自有密钥进行加密。

您还可以使用客户管理密钥 (CMK) 功能来管理自己的加密密钥。这可以帮助您满足监管和合规要求。要使用 CMK，您必须创建一个新的 OpenSearch UI 应用程序并在创建过程中启用 CMK。目前不支持将现有 OpenSearch UI 应用程序从 AWS 自有密钥更新为 CMK。

何时使用客户托管密钥：
+ 您的组织对密钥管理有监管合规要求
+ 您需要对加密密钥的使用情况进行审计跟踪
+ 你想控制密钥轮换计划
+ 您需要与现有的密钥管理工作流程集成

使用客户管理的密钥时，您可以完全控制该密钥。这包括以下能力：
+ 建立和维护密钥策略
+ 创建和维护 IAM 策略和授权
+ 启用和禁用密钥
+ 轮换密钥的加密材料
+ 为密钥添加标签
+ 创建密钥别名
+ 安排删除密钥

**注意**  
客户管理的密钥必须与 OpenSearch 用户界面应用程序 AWS 区域 相同。您不能使用来自其他地区的密钥。

**Topics**
+ [使用客户托管密钥的先决条件](#application-encryption-cmk-prerequisites)
+ [使用控制台创建采用客户托管密钥加密的应用程序](#application-encryption-cmk-create-console)
+ [使用客户托管密钥加密创建应用程序 AWS CLI](#application-encryption-cmk-create-cli)
+ [监控客户托管密钥的使用情况](#application-encryption-cmk-monitoring)
+ [更新加密设置](#application-encryption-cmk-update)

## 使用客户托管密钥的先决条件
<a name="application-encryption-cmk-prerequisites"></a>

在使用客户托管密钥加密 OpenSearch 用户界面应用程序元数据之前，必须先在中 AWS KMS创建对称加密密钥。有关创建密钥的说明，请参阅《*AWS KMS 开发者指南*》中的[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

您的客户托管密钥的密钥策略必须授予 OpenSearch 用户界面使用该密钥的权限。使用以下密钥策略，将*placeholder values*替换为您自己的信息：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOpenSearchUIToUseKey",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "application.opensearchservice.amazonaws.com"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministration",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
```

该策略包含两条语句：
+ 第一条语句允许 OpenSearch UI 使用密钥进行加密操作。
+ 第二条语句 AWS 账户 允许您的用户管理密钥。这包括更新密钥策略、启用或禁用密钥以及计划删除密钥的权限。您可以通过将根委托人替换为特定的 IAM 用户或角色来进一步限制这些权限。

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

## 使用控制台创建采用客户托管密钥加密的应用程序
<a name="application-encryption-cmk-create-console"></a>

在控制台中创建 OpenSearch UI 应用程序时，您可以指定用于加密应用程序元数据的客户托管密钥。

**使用控制台创建采用客户托管密钥加密的 OpenSearch UI 应用程序**

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

1. 在左侧导航窗格中，选择 **OpenSearch UI（控制面板）**。

1. 选择**创建应用程序**。

1. 在**应用程序名称**中，输入应用程序的名称。

1. 根据需要配置身份验证和管理员设置。有关更多信息，请参阅 [开始使用 Amazon OpenSearch 服务中的 OpenSearch 用户界面](application-getting-started.md)。

1. 在**加密**部分中，对于静**态加密**，选择**使用客户托管密钥**。

1. 从列表中选择现有的客户托管密钥，或者选择**创建密钥**以在中创建新密钥 AWS KMS。
**注意**  
密钥必须与您正在创建的应用程序 AWS 区域 相同。

1. （可选）向应用程序添加标签。

1. 选择**创建**。

## 使用客户托管密钥加密创建应用程序 AWS CLI
<a name="application-encryption-cmk-create-cli"></a>

要使用创建使用客户托管密钥加密的 OpenSearch UI 应用程序 AWS CLI，请使用带参数的 [create-applic](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-application.html) ation 命令。`--kms-key-arn`

将 *placeholder values* 替换为您自己的信息。

```
aws opensearch create-application \
    --name my-application \
    --kms-key-arn arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
```

如果您未指定`--kms-key-arn`参数，则 OpenSearch 使用 AWS托管密钥加密应用程序的元数据。

## 监控客户托管密钥的使用情况
<a name="application-encryption-cmk-monitoring"></a>

当您在 OpenSearch 用户界面应用程序中使用客户托管密钥时，会在 AWS CloudTrail 日志中 AWS KMS 记录该密钥的每一次使用情况。您可以使用这些日志来监控密钥的使用方式和时间。日志显示哪个用户或服务访问了密钥。

AWS AWS KMS 每年自动轮换客户管理的密钥。您也可以根据需要手动轮换密钥。有关密钥轮换的更多信息，请参阅*AWS KMS 开发人员指南*中的[轮换 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

有关监控密钥使用情况的更多信息，请参阅*AWS KMS 开发者指南 AWS CloudTrail*中的[使用记录 AWS KMS API 调用](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)。

**注意**  
使用客户托管的密钥会产生 AWS KMS 费用。费用基于存储的 API 请求和密钥的数量。有关定价的详细信息，请参阅[AWS 密钥管理服务定价](https://aws.amazon.com/kms/pricing/)。

## 更新加密设置
<a name="application-encryption-cmk-update"></a>

创建 OpenSearch UI 应用程序后，您无法更改其加密设置。如果您需要使用其他客户托管密钥，则必须创建新的应用程序。如果您需要在 AWS托管密钥和客户托管密钥之间切换，则还必须使用所需的加密设置创建一个新的应用程序。

**重要**  
在禁用或删除客户托管密钥之前，请考虑以下事项：  
如果您禁用密钥，应用程序将无法访问其加密的元数据。您必须重新启用相同的密钥才能恢复访问权限。
如果删除密钥，则应用程序的已保存对象将永久无法访问。这包括查询、可视化和仪表板。已删除的密钥无法恢复。
我们建议您在对密钥状态进行任何更改之前记录您的密钥 ARN。

**后续步骤**  
为应用程序配置 CMK 加密后，您可以：
+ 将数据源与您的应用程序关联。有关更多信息，请参阅 [管理数据来源关联和虚拟私有云访问权限](application-data-sources-and-vpc.md)。
+ 为您的团队创建工作空间。有关更多信息，请参阅 [使用亚马逊 OpenSearch 服务工作空间](application-workspaces.md)。
+ 设置密钥使用情况 AWS CloudTrail 监控。有关更多信息，请参阅 [监控客户托管密钥的使用情况](#application-encryption-cmk-monitoring)。

# 使用启用 SAML 联合 AWS Identity and Access Management
<a name="application-enable-SAML-identity-federation"></a>

OpenSearch 用户界面支持安全断言标记语言 2.0 (SAML)，这是许多身份提供商使用的开放标准。这将通过 AWS Identity and Access Management （IAM）启用身份联合验证。有了这种支持，您的账户或组织中的用户可以通过担任 IAM 角色直接访问用户 OpenSearch 界面。您可以为最终用户创建由身份提供商启动 (IdP) 的单点登录体验，他们可以在外部身份提供商中进行身份验证，然后直接路由到您在 UI 中定义的页面。 OpenSearch 您还可以通过将最终用户或群组配置为扮演不同的 IAM 角色来实现精细的访问控制，这些角色具有不同的访问用户 OpenSearch 界面和相关数据源的权限。

本主题介绍 step-by-step如何通过 OpenSearch 用户界面配置 SAML 使用。在这些步骤中，我们以配置 Okta 身份和访问管理应用程序的步骤为例进行说明。其他身份提供程序（例如 Azure Active Directory 和 Ping）的配置步骤类似。

**Topics**
+ [步骤 1：设置身份提供程序应用程序（Okta）](#SAML-identity-federation-step-1)
+ [第 2 步：为 Okta 设置 AWS 配置](#SAML-identity-federation-step-2)
+ [步骤 3：在 IAM 中创建亚马逊 OpenSearch 服务访问策略](#SAML-identity-federation-step-3)
+ [步骤 4：使用 SAML 验证身份提供程序启动的单点登录体验](#SAML-identity-federation-step-4)
+ [第 5 步：配置 SAML 基于属性的精细访问控制](#SAML-identity-federation-step-5)

## 步骤 1：设置身份提供程序应用程序（Okta）
<a name="SAML-identity-federation-step-1"></a>

要使用带有 OpenSearch UI 的 SAML，第一步是设置您的身份提供商。

**任务 1：创建 Okta 用户**

1. 以具有管理权限的用户身份通过 [https://login.okta.com/](https://login.okta.com/)登录您的 Okta 组织。

1. 在管理员控制台上，在导航窗格的**目录**下，选择**人员**。

1. 选择 **Add person**（添加人员）。

1. 对于**名字**，输入用户的名字。

1. 对于**姓氏**，输入用户的姓氏。

1. 对于**用户名**，以电子邮件格式输入用户的用户名。

1. 选择**我将设置密码**，并输入密码 

1. （可选）如果不希望用户首次登录时更改密码，请取消勾选**用户首次登录时必须更改密码**复选框。

1. 选择**保存**。

**任务 2：创建和分配组**

1. 以具有管理权限的用户身份通过 [https://login.okta.com/](https://login.okta.com/)登录您的 Okta 组织。

1. 在管理员控制台上，在导航窗格的**目录**下，选择**组**。

1. 选择**添加组**。

1. 输入组名称，并选择**保存**。

1. 选择新创建的组，然后选择**分配人员**。

1. 选择加号（**\$1**），然后选择**完成**。

1. （可选）重复步骤 1-6 以添加更多的组。

**任务 3：创建 Okta 应用程序**

1. 以具有管理权限的用户身份通过 [https://login.okta.com/](https://login.okta.com/)登录您的 Okta 组织。

1. 在管理员控制台上，在导航窗格的**应用程序**下，选择**应用程序**。

1.  选择**创建应用程序集成**。

1. 选择 SAML 2.0 作为登录方法，然后选择**下一步**。

1.  输入应用程序集成的名称（例如 **OpenSearch\$1UI**），然后选择**下一步**。

1. 在应用程序中输入以下值；无需更改其他值：

   1.  1. 对于**单点登录 URL**，请输入**https://signin.aws.amazon.com/saml**商业 AWS 区域或您所在地区的特定网址。

   1. 2. 对于**受众 URI（SP 实体 ID）**，输入 **urn:amazon:webservices**。

   1. 3. 对于**名称 ID 格式**，输入 **EmailAddress** 

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

1. 选择**我是 Okta 客户，正在添加内部应用**，然后选择**这是我们创建的内部应用**。

1. 选择**结束**。

1. 选择**任务**，然后选择**分配**。

1. 选择**分配给组**，然后选择要添加组旁边的**分配**。

1. 选择**完成**。

**任务 4：设置 Oka 高级配置**

创建自定义 SAML 应用程序后，完成以下步骤：

1. 以具有管理权限的用户身份通过 [https://login.okta.com/](https://login.okta.com/)登录您的 Okta 组织。

   在管理员控制台的**常规**区域中，选择 **SAML 设置**下的**编辑**。

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

1. 使用以下格式将 OpenSearch UI 端点的**默认中继状态**设置为：

   `https://region.console.aws.amazon.com/aos/home?region=region#opensearch/applications/application-id/redirectToDashboardURL`. 

   以下是示例：

   `https://us-east-2.console.aws.amazon.com/aos/home?region=us-east-2#opensearch/applications/abc123def4567EXAMPLE/redirectToDashboardURL` 

1. 在**属性语句（可选）**项下，添加以下属性：

   1. 使用**角色**属性，以逗号分隔格式提供 IAM 角色和身份提供程序。在稍后的步骤中，您将在设置 AWS 配置时使用相同的 IAM 角色和身份提供商。

   1. 将 **user.login** 设置为。**RoleSessionName**这用作代入角色时签发的临时凭证的标识符。

   有关参考：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/application-enable-SAML-identity-federation.html)

1. 添加属性后，选择**下一步**，然后选择**完成**。

您的属性格式应与下图所示的属性格式相似。**默认中继状态**值是指您账户或组织中的最终用户完成 Okta 单点登录验证后定义登录页面的 URL。您可以将其设置为 OpenSearch UI 中的任何页面，然后将该 URL 提供给其目标最终用户。

![\[“SAML 2.0”区域报告应用程序的默认中继状态 URL 和元数据 URL。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ui-saml-2.0-area-okta.png)


## 第 2 步：为 Okta 设置 AWS 配置
<a name="SAML-identity-federation-step-2"></a>

完成以下任务来设置 Okta 的 AWS 配置。

**任务 1：收集 Okta 信息**

在此步骤中，您需要收集 Okta 信息，以便稍后在 AWS中对其进行配置。

1. 以具有管理权限的用户身份通过 [https://login.okta.com/](https://login.okta.com/)登录您的 Okta 组织。

1. 在页面右下角的**登录**选项卡上，选择**查看 SAML 设置说明**。

1. 记录**身份提供程序单点登录 URL** 的值。在连接到任何第三方 SQL 客户端（例如 [SQL Workbench/J](https://www.sql-workbench.eu/)）时，您可以使用此 URL。

1. 使用区块 4 中的身份提供程序元数据，然后将元数据文件以 .xml 格式进行保存（例如，`metadata.xml`）。

**任务 2：创建 IAM 提供程序**

要创建 IAM 提供程序，请完成以下步骤：

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航面板的**访问管理**下，选择**身份提供程序**。

1. 选择**添加提供程序**。

1. 对于**提供程序类型**，选择 **SAML**。

1. 对于**提供程序名称**，输入名称。

1. 对于**元数据文档**，选择**选择文件**，并上传您先前下载的元数据文件（.xml）。

1. 选择**添加提供程序**。

**任务 3：创建 IAM 角色**

要创建您的 AWS Identity and Access Management 角色，请完成以下步骤：

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格的**访问权限管理**下，选择**角色**。

1. 选择**创建角色**。

1. 对于**可信实体类型**，选择 **SAML 2.0 联合身份验证**。

1. 对于**基于 SAML 2.0 的提供程序**，选择您先前创建的身份提供程序。

1. 选择 “**允许编程和 AWS 管理控制台 访问**”。

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

1. 在**权限策略**列表中，选中授予 OpenSearch 服务权限的策略（例如 AWS 托管策略）的复选框**AmazonOpenSearchServiceFullAccess**。

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

1. 在**审核**区域中，对于**角色名称**，键入角色的名称（例如，**oktarole**）。

1. （可选）对于**描述**，输入角色用途的简要描述。

1. 选择**创建角色**。

1. 导航到您刚创建的角色，选择**信任关系**选项卡，然后选择**编辑信任策略**。

1. 在 **“编辑语句**” 窗格的 “**为 STS 添加操作**” 下，选中相应的复选框**TagSession**。

1. 选择**更新策略**。

## 步骤 3：在 IAM 中创建亚马逊 OpenSearch 服务访问策略
<a name="SAML-identity-federation-step-3"></a>

了解如何配置您的 IAM 角色以实现 OpenSearch 访问控制。借助 IAM 角色，您可以对 Okta 用户组实施精细的访问控制以访问资源。 OpenSearch 本主题使用两个示例组展示基于 IAM 角色的配置。

------
#### [ Sample group: Alice ]

请求:

```
GET _plugins/_security/api/roles/alice-group
```

结果：

```
{
  "alice-group": {
    "reserved": false,
    "hidden": false,
    "cluster_permissions": [
      "unlimited"
    ],
    "index_permissions": [
      {
        "index_patterns": [
          "alice*"
        ],
        "dls": "",
        "fls": [],
        "masked_fields": [],
        "allowed_actions": [
          "indices_all"
        ]
      }
    ],
    "tenant_permissions": [
      {
        "tenant_patterns": [
          "global_tenant"
        ],
        "allowed_actions": [
          "kibana_all_write"
        ]
      }
    ],
    "static": false
  }
}
```

------
#### [ Sample group: Bob ]

请求:

```
GET _plugins/_security/api/roles/bob-group
```

结果：

```
{
  "bob-group": {
    "reserved": false,
    "hidden": false,
    "cluster_permissions": [
      "unlimited"
    ],
    "index_permissions": [
      {
        "index_patterns": [
          "bob*"
        ],
        "dls": "",
        "fls": [],
        "masked_fields": [],
        "allowed_actions": [
          "indices_all"
        ]
      }
    ],
    "tenant_permissions": [
      {
        "tenant_patterns": [
          "global_tenant"
        ],
        "allowed_actions": [
          "kibana_all_write"
        ]
      }
    ],
    "static": false
  }
}
```

------

您可以使用后端角色映射将 Amazon S OpenSearch ervice 域角色映射到 IAM 角色，如以下示例所示：

```
{
  "bob-group": {
    "hosts": [],
    "users": [],
    "reserved": false,
    "hidden": false,
    "backend_roles": [
      "arn:aws:iam::111222333444:role/bob-group"
    ],
    "and_backend_roles": []
  },
  "alice-group": {
    "hosts": [],
    "users": [],
    "reserved": false,
    "hidden": false,
    "backend_roles": [
      "arn:aws:iam::111222333444:role/alice-group"
    ],
    "and_backend_roles": []
  }
}
```

## 步骤 4：使用 SAML 验证身份提供程序启动的单点登录体验
<a name="SAML-identity-federation-step-4"></a>

打开**默认中继状态**的 URL，以打开 Okta 身份验证页面。输入 end-user 的凭证。系统会自动将您重定向到 OpenSearch UI。

您可通过点击导航面板底部的用户图标查看当前凭证，如下图所示：

![\[在 Okta 的“设置和设置”页面中，选择用户图标会显示当前用户的凭证。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ui-okta-user-icon.png)


您还可以通过访问导航面板底部的开发人员工具，并在控制台中运行查询，以验证用户的精细访问控制权限。下面是示例查询。

------
#### [ Example 1: Displays information about the current user ]

请求:

```
GET _plugins/_security/api/account
```

结果：

```
{
  "user_name": "arn:aws:iam::XXXXXXXXXXXX:role/bob-group",
  "is_reserved": false,
  "is_hidden": false,
  "is_internal_user": false,
  "user_requested_tenant": null,
  "backend_roles": [
    "arn:aws:iam::XXXXXXXXXXXX:role/bob-group"
  ],
  "custom_attribute_names": [],
  "tenants": {
    "global_tenant": true,
    "arn:aws:iam::XXXXXXXXXXXX:role/bob-group": true
  },
  "roles": [
    "bob-group"
  ]
}
```

------
#### [ Example 2: Displays actions permitted for a user ]

请求:

```
GET bob-test/_search
```

结果：

```
{
  "took": 390,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "bob-test",
        "_id": "ui01N5UBCIHpjO8Jlvfy",
        "_score": 1,
        "_source": {
          "title": "Your Name",
          "year": "2016"
        }
      }
    ]
  }
}
```

------
#### [ Example 3: Displays actions not permitted for a user ]

请求:

```
GET alice-test
```

结果：

```
{
  "error": {
    "root_cause": [
      {
        "type": "security_exception",
        "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]"
      }
    ],
    "type": "security_exception",
    "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]"
  },
  "status": 403
}
```

------

## 第 5 步：配置 SAML 基于属性的精细访问控制
<a name="SAML-identity-federation-step-5"></a>

借助 Amazon S OpenSearch ervice，您可以将精细的访问控制与 SAML 结合使用，将身份提供商中的用户和群组动态映射到 OpenSearch 精细的访问控制用户和角色。您可以将这些角色的范围限定为特定的 OpenSearch 域和无服务器集合，并定义索引级权限和文档级安全性。

**注意**  
有关精细访问控制的更多信息，请参阅 [Amazon 服务中的精细访问控制 OpenSearch](fgac.md)。

**Topics**
+ [用于精细访问控制的 SAML 属性](#saml-fgac-key-attributes)
+ [任务 1：配置 Okta 以实现精细访问控制](#configure-okta-fgac)
+ [任务 2：在域中 OpenSearch 配置 SAML](#configure-opensearch-domain-fgac)
+ [任务 3：在 OpenSearch 无服务器集合中配置 SAML](#saml-configure-collections)

### 用于精细访问控制的 SAML 属性
<a name="saml-fgac-key-attributes"></a>

**subjectKey**  
映射到唯一用户属性（如电子邮件或用户名），用于在身份验证过程中识别用户。

**rolesKey**  
映射至 IdP 中的组或角色属性，这些属性决定授权所需的角色或权限。

### 任务 1：配置 Okta 以实现精细访问控制
<a name="configure-okta-fgac"></a>

**配置 Okta 以实现精细访问控制**

1. 在 “属性**语句” 部分中为 OpenSearch 用户主体添加一个新属性**：
   + 名称: `UserName`
   + 值：`${user-email}`

   在 OpenSearch 细粒度访问控制配置中，此属性用作身份验证的 Subject **密钥**。

1. 在**组属性语句**部分中，为角色添加组属性：
   + 名称: `groups`
   + 筛选：`OpenSearch_xxx`

   此属性用作**角色键**，用于将组映射到 OpenSearch 精细的访问控制角色以进行授权。

### 任务 2：在域中 OpenSearch 配置 SAML
<a name="configure-opensearch-domain-fgac"></a>

**在域中 OpenSearch 配置 SAML**

1. 在 AWS 管理控制台中，确定要为 OpenSearch 用户界面用户启用精细访问控制的 OpenSearch 服务域。

1. 导航到特定域的详细信息页面

1. 选择**安全配置**选项卡，并点击**编辑**。

1. 展开**通过 IAM 联合身份验证的 SAML**。

1. 输入您在 Okta 中定义的 `subjectKey` 和 `roleKey`。

1. 选择**保存更改**。

您还可以使用 AWS CLI配置精细访问控制。

```
aws opensearch create-domain \
--domain-name testDomain \
--engine-version OpenSearch_1.3 \
--cluster-config InstanceType=r5.xlarge.search,InstanceCount=1,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=false,WarmEnabled=false \
--access-policies '{"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:12345678901:domain/neosaml10/*"}]}' \
--domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
--node-to-node-encryption-options '{"Enabled":true}' \
--encryption-at-rest-options '{"Enabled":true}' \
--advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \
--ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \
--no-verify-ssl \
--endpoint-url https://es.us-east-1.amazonaws.com \
--region us-east-1
```

要更新现有域，请执行以下操作：

```
aws opensearch update-domain-config \
--domain-name testDomain \
--advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \
--ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \
--no-verify-ssl \
--endpoint-url https://es.us-east-1.amazonaws.com \
--region us-east-1
```

### 任务 3：在 OpenSearch 无服务器集合中配置 SAML
<a name="saml-configure-collections"></a>

**在 Serverless 中配置基于 SAML 的精细访问控制 OpenSearch**

1. 打开 AWS 管理控制台 并导航至 Amazon OpenSearch 服务。

1. 在导航窗格的**无服务器**下，选择**安全**，然后选择**身份验证**。

1. 在 **IAM 联合身份验证**部分，选择**编辑**。

   您可以使用此配置控制 SAML 基于属性的精细访问控制。默认情况下，IAM 联合身份验证处于禁用状态。

1. 选择**启用 IAM 联合身份验证**。

1. 输入您在 Okta 中定义的 `subjectKey` 和 `roleKey` 值。

   有关更多信息，请参阅 [用于精细访问控制的 SAML 属性](#saml-fgac-key-attributes)。

1. 选择**保存**。

1. 在导航窗格的**无服务器**下，选择**数据访问策略**。

1. 更新现有策略或创建新策略。

1. 展开规则，选择**添加主体**，然后选择 **IAM 联合用户和组**。

1. 添加所需的主体，并选择**保存**。

1. 选择**授权**。

1. 在此规则下，执行以下操作：
   + 选择要为所选主体定义的权限。
   + 指定要在其中应用权限的集合。
   + （可选）定义索引级权限。
**注意**  
您可以创建多个规则，为不同的主体组分配不同的权限。

1. 完成后，选择**保存**。

1. 选择**创建**。

或者，您也可以使用 CLI 为集合创建安全配置，如下所示：

```
aws opensearchserverless create-security-config --region "region"  --type iamfederation --name "configuration_name" --description "description" --iam-federation-options '{"groupAttribute":"GroupKey","userAttribute":"UserKey"}'
```

# 管理数据来源关联和虚拟私有云访问权限
<a name="application-data-sources-and-vpc"></a>

使用本节中的步骤管理数据来源关联，并为虚拟私有云（VPC）配置所需的访问权限。

**Topics**
+ [将数据源与 OpenSearch UI 应用程序关联](#application-data-source-association)
+ [管理 VPC 中域的访问权限](#application-manage-vpc-access)
+ [在 VPC 中配置对 OpenSearch 无服务器集合的访问权限](#application-configure-vpc-access-serverless-connections)

## 将数据源与 OpenSearch UI 应用程序关联
<a name="application-data-source-association"></a>

创建 OpenSearch UI 应用程序后，您可以使用控制台或 AWS CLI 将其与一个或多个数据源相关联。之后，最终用户可从这些数据来源中检索数据，以进行搜索、使用控制面板等操作。

### 将数据源与 OpenSearch UI 应用程序关联（控制台）
<a name="application-data-source-association-console"></a>

**使用控制台将数据源与 OpenSearch UI 应用程序关联**

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

1. 选择 **OpenSearch UI（仪表板）**，然后选择 OpenSearch UI 应用程序的名称。

1. 在**关联的数据来源**区域中，选择**管理数据来源**。

1. 从要与应用程序关联的 OpenSearch 域名和集合中进行选择。
**提示**  
如果您未能找到所需的数据来源，请联系管理员为您授予所需权限。有关更多信息，请参阅 [创建使用 IAM Identity Centity 身份验证的应用程序的权限（可选）](application-getting-started.md#prerequisite-permissions-idc)。

1. 选择**下一步**，然后选择**保存**。

将数据来源与应用程序关联后，将启用程序详情页上的**启动应用程序**按钮。您可以选择 **Launch Appl** icati **on 来打开 “欢迎**使用 OpenSearch” 页面，您可以在其中创建和管理工作区。

有关使用工作区的更多信息，请参阅 [使用亚马逊 OpenSearch 服务工作空间](application-workspaces.md)。

## 管理 VPC 中域的访问权限
<a name="application-manage-vpc-access"></a>

如果 VPC 中的某个 OpenSearch 域与应用程序关联，则 VPC 管理员必须使用控制台或授权 OpenSearch UI 和 VPC 之间的访问权限 AWS CLI。

### 管理 VPC 中域的访问权限（控制台）
<a name="application-manage-vpc-access-console"></a>

**要使用 AWS 管理控制台配置对 VPC 域的访问权限，请执行以下操作：**

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

1. 在左侧导航窗格中，选择**域**，然后选择 VPC 域的名称。

   –或者–

   选择**创建域**，然后配置域的详细信息。

1. 选择 **VPC 端点**选项卡，然后选择**授权主体**。

1. 在**授权委托人**对话框中，选择**授权其他 AWS 服务的委托人，然后从**列表中选择**OpenSearch 应用程序（控制面板）**。

1. 选择**授权**。

### 管理 VPC 中域的访问权限（AWS CLI）
<a name="application-manage-vpc-access-cli"></a>

**要使用 VPC 域授权 AWS CLI**  
要使用授权 VPC 域 AWS CLI，请运行以下命令。将 *placeholder values* 替换为您自己的信息。

```
aws opensearch authorize-vpc-endpoint-access \
 --domain-name domain-name \
 --service application.opensearchservice.amazonaws.com \
 --region region-id
```

**使用控制台撤销 VPC 域关联**

当不再需要关联时，VPC 域所有者可荣国以下步骤撤销访问权限。

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

1. 在左侧导航窗格中，选择**域**，然后选择 VPC 域的名称。

1. 选择 **VPC 终端节点**选项卡，然后选择**OpenSearch 应用程序（控制面板）**行的按钮。

1. 然后选择**撤消访问权限**。

**要撤消 VPC 域关联，请使用 AWS CLI**  
要撤消与 OpenSearch UI 应用程序的 VPC 域关联，请运行以下命令。将 *placeholder values* 替换为您自己的信息。

```
aws opensearch revoke-vpc-endpoint-access \
    --domain-name domain-name \
    --service application.opensearchservice.amazonaws.com \
    --region region-id
```

## 在 VPC 中配置对 OpenSearch 无服务器集合的访问权限
<a name="application-configure-vpc-access-serverless-connections"></a>

如果 VPC 中的 Amazon OpenSearch Serverless 集合与该应用程序关联，VPC 管理员可以通过创建新的网络策略并将其附加到集合中来授权访问。

### 在 VPC 中配置对 OpenSearch 无服务器集合的访问权限（控制台）
<a name="application-configure-vpc-access-serverless-connections-console"></a>

**使用控制台配置对 VPC 中 OpenSearch 无服务器集合的访问权限**

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

1. 在左侧导航栏中，选择**网络策略**，选择网络策略的名称，然后选择**编辑**。

   –或者–

   选择**创建网络策略**，然后配置该策略的详细信息。

1. 在**访问权限类型**区域中，选择**私有（推荐）**，然后选择 **AWS 服务私有访问权限**。

1. 在搜索字段中，选择**服务**，然后选择 `application.opensearchservice.amazonaws.com`。

1. 在 “**资源类型**” 区域中，选中 “**启用 OpenSearch 终端节点访问权限**” 复选框。

1. 对于**搜索合集，或输入特定前缀词**，在搜索字段中选择**集合名称**，然后输入或选择要与网络策略关联的集合名称。

1. 针对新网络策略选择**创建**，或针对现有网络策略选择**更新**。

### 在 VPC 中配置对 OpenSearch 无服务器集合的访问权限 ()AWS CLI
<a name="application-configure-vpc-access-serverless-connections-cli"></a>

**要配置对 VPC 中 OpenSearch 无服务器集合的访问权限，请使用 AWS CLI**

1. 创建 .json 文件，类似于以下内容。将 *placeholder values* 替换为您自己的信息。

   ```
   {
       "Description" : "policy-description",
       "Rules": [{
          "ResourceType" : "collection",
           "Resource" : ["collection/collection_name"]
        }],
       "SourceServices" : [
             "application.opensearchservice.amazonaws.com"
         ],
         "AllowFromPublic" : false
   }
   ```

1. 为 VPC 中的集合创建或更新网络策略，使其与 OpenSearch UI 应用程序配合使用。

------
#### [ Create a network policy ]

   运行如下命令。将 *placeholder values* 替换为您自己的信息。

   ```
   aws opensearchserverless create-security-policy \
       --type network  \
       --region region \
       --endpoint-url endpoint-url \
       --name network-policy-name \
       --policy file:/path_to_network_policy_json_file
   ```

   命令返回类似于下文的信息：

   ```
   {
       "securityPolicyDetail": {
           "createdDate": ******,
           "lastModifiedDate": ******,
           "name": "network-policy-name",
           "policy": [
               {
                   "SourceVPCEs": [],
                   "AllowFromPublic": false,
                   "Description": "",
                   "Rules": [
                       {
                           "Resource": [
                               "collection/network-policy-name"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "SourceServices": [
                       "application.opensearchservice.amazonaws.com"
                   ]
               }
           ],
           "policyVersion": "******",
           "type": "network"
       }
   }
   ```

------
#### [ Update a network policy ]

   运行如下命令。将 *placeholder values* 替换为您自己的信息。

   ```
   aws opensearchserverless update-security-policy \
       --type network  \
       --region region \
       --endpoint-url endpoint-url \
       --name network-policy-name \
       --policy-version "policy_version_from_output_of_network_policy_creation" \
       --policy file:/path_to_network_policy_json_file
   ```

   命令返回类似于下文的信息：

   ```
   {
       "securityPolicyDetail": {
           "createdDate": ******,
           "lastModifiedDate": ******,
           "name": "network-policy-name",
           "policy": [
               {
                   "SourceVPCEs": [],
                   "AllowFromPublic": false,
                   "Description": "",
                   "Rules": [
                       {
                           "Resource": [
                               "collection/network-policy-name"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "SourceServices": [
                       "application.opensearchservice.amazonaws.com"
                   ]
               }
           ],
           "policyVersion": "******",
           "type": "network"
       }
   }
   ```

------

# 使用亚马逊 OpenSearch 服务工作空间
<a name="application-workspaces"></a>

Amazon OpenSearch 服务支持创建多个特定用例的工作空间。每个工作区都为常见使用案例（如可观测性、安全分析和搜索）提供精心设计的体验。工作区还支持协作者管理功能，使您能够仅与指定协作者共享工作区，并为每位协作者设置权限。

## 创建 OpenSearch UI 应用程序工作区
<a name="application-workspaces-create"></a>

在创建 OpenSearch UI 应用程序并与数据源关联并且为该应用程序配置了用户权限之后，您可以启动该用户 OpenSearch 界面应用程序来创建工作空间。

要开始创建工作区，您可以选择**应用程序详细信息页面上的启动**应用程序按钮，或者使用 OpenSearch 用户界面应用程序 URL 在新的浏览器窗口中打开 OpenSearch UI 应用程序主页。

 OpenSearch UI 应用程序提供了用于创建工作区的选项，并在主页中列出了所有现有的工作区，按用例分类。

![\[控制台中的“我的工作区”区域可用于创建五种不同类型的工作区：可观测性、安全分析、搜索、基础功能和分析。您还可以在“我的工作区”区域查看所有现有工作区。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/workspaces.png)


有关支持的工作区类型的更多信息，请参阅 [工作区类型](#application-workspaces-types)。

## 工作区隐私和协作者
<a name="application-workspaces-privacy-and-collaborators"></a>

您可以为工作区定义隐私设置，将其作为所有用户的默认权限级别。您可以在创建工作区时执行此操作，也可以修改现有工作区（在工作区**协作者**选项卡上）。有三种隐私选项可供选择：
+ **协作者专用**：只有您明确添加到工作区的协作者才能访问该工作区。您可以为每位协作者定义权限级别。
+ ****任何人都可以查看**** — 任何有权访问 OpenSearch UI 应用程序的人都可以访问工作区并查看其资产，但他们无法在工作区中进行任何更改。
+ ****任何人都可以编辑**** — 任何有权访问 OpenSearch UI 应用程序的人都可以访问工作区、查看其中的资源以及对工作区中的资源进行更改。

在工作空间**协作者**选项卡上，您可以将 IAM 用户或角色以及 AWS IAM Identity Center 用户添加为工作空间中的协作者。可为协作者选择三种权限级别：
+ **只读**：协作者只能查看工作区中的资产。如果将工作区配置为使用**任何人都可编辑隐私**的设置，则此设置将被覆盖。
+ **读写**：协作者可在工作区中查看和编辑资产。如果工作空间配置为使用**任何人都可查看**隐私设置，则协作者仍可进行编辑。
+ **管理员**：协作者可以更新设置和删除工作区。协作者还可以更改工作区的隐私设置并管理协作者。创建工作区的用户将自动指定为工作区管理员。

## 工作区类型
<a name="application-workspaces-types"></a>

Amazon S OpenSearch ervice 提供五种工作空间类型，每种类型都有针对不同用例的不同功能：
+ **可观测性**工作区旨在通过监控日志、指标和追踪数据，实现对系统运行状况、性能及可靠性的可视化管理。
+ **安全分析**工作区旨在检测和调查您系统和数据中的潜在安全威胁与漏洞。
+ **搜索**工作区旨在帮助您快速查找和探索组织内各类数据来源中的相关信息。
+ **Essentials** 工作区专为 OpenSearch Serverless 作为数据源而设计，它允许分析数据以得出见解、识别模式和趋势，并快速做出数据驱动的决策。您可以在 **Essentials** 工作区中查找并探索组织内各数据来源中的相关信息。
+ **Analytics**（所有功能）工作区专为多用途用例而设计，支持 OpenSearch 服务用户界面（仪表板）中的所有可用功能。

# 跨区域和跨账户数据访问
<a name="application-cross-region-cross-account"></a>

OpenSearch 用户界面支持访问来自不同 OpenSearch AWS 账户域的数据。 AWS 区域您可以根据自己的要求从两种方法中进行选择。下表对这两种方法进行了比较。

**注意**  
跨账户数据访问和跨集群搜索都仅适用于域。 OpenSearch 这两种方法都不支持 OpenSearch 无服务器集合。


| 方面 | 跨账户数据访问 | 跨集群搜索 | 
| --- | --- | --- | 
| 功能 | 在 OpenSearch UI 中将来自其他账户的域名关联为直接数据源 | 使用跨集群搜索连接跨连接的域查询数据 | 
| 机制 | 直接访问 — OpenSearch 用户界面直接连接到另一个账户中的目标网域 | 间接访问 — 需要与 OpenSearch 用户界面相同的帐户中的本地域才能将请求中继到远程域 | 
| 跨账户支持 | 支持 | 是 | 
| 跨区域支持 | 不是 — 源域和目标域必须位于同一个域中 AWS 区域 | 是 — 源域和目标域可以位于不同的域 AWS 区域中 | 
| 跨域合并数据 | 否 — 每个域都作为单独的数据源独立查询 | 是 — 单个查询可以汇总来自多个连接域的结果 | 
| 身份验证方法 | IAM 和 AWS IAM Identity Center | IAM（具有精细的访问控制） | 
| 设置复杂性 | 更低 — 需要跨账户 IAM 角色进行验证 | 更高 — 需要跨集群连接、两个域上的访问策略以及精细的访问控制 | 
|  OpenSearch 用户界面中的数据源可见性 | 每个跨账户域都显示为单独的数据源 | 远程域可通过本地源域的连接别名进行访问 | 
| 对远程域的写入权限 | 是 — 由目标域的访问策略控制 | 否 — 跨集群搜索提供对远程域的只读访问权限 | 

**Topics**
+ [跨账户数据访问 OpenSearch 域名](application-cross-account-data-access-domains.md)
+ [跨集群搜索](application-cross-cluster-search.md)

# 跨账户数据访问 OpenSearch 域名
<a name="application-cross-account-data-access-domains"></a>

您可以在一个账户中配置 OpenSearch 用户界面应用程序，以访问不同账户中的 OpenSearch 域名。当您使用跨账户数据源创建 OpenSearch UI 应用程序时，您需要提供`iamRoleForDataSourceArn`指向目标账户中的 IAM 角色的。 OpenSearch 用户界面通过担任此角色并调用验证域可访问性`es:DescribeDomain`来验证请求。跨账户角色仅用于控制平面验证。数据平面访问由目标域的访问策略单独控制。

**代码示例**  
本主题中的代码示例仅用于说明目的。它们演示了基本功能，可能不包括错误处理、安全最佳实践或生产就绪功能。在生产环境中使用示例代码之前，请对其进行审查和修改以满足您的特定要求，并在您的环境中进行全面测试。

## 重要概念
<a name="cross-account-key-concepts"></a>

源账户  
托管您的 OpenSearch UI 应用程序的。 AWS 账户 

目标账户  
 OpenSearch 域 AWS 账户 所在的位置。

跨账户角色  
目标账户中的 IAM 角色，仅用于控制平面验证。此角色只需要`es:DescribeDomain`权限。

IAM 身份中心应用程序角色  
源账户中的一个 IAM 角色，用于访问 IAM Identity Center 用户数据平面。

## 先决条件
<a name="cross-account-prerequisites"></a>

在设置跨账户数据访问权限之前，请确保您具备以下条件：
+ AWS CLI 已安装并配置
+ 同时访问源和目标 AWS 账户
+ 对于 IAM 身份中心流程： AWS IAM Identity Center 组织实例

## 场景
<a name="cross-account-scenarios"></a>

选择与您的身份验证方法和域配置相匹配的方案：
+ [场景 1：IAM 用户访问公共域](#cross-account-scenario-1)
+ [场景 2：IAM 身份中心用户访问公共域](#cross-account-scenario-2)
+ [场景 3：IAM 用户访问 VPC 域](#cross-account-scenario-3)
+ [场景 4：IAM 身份中心用户访问 VPC 域](#cross-account-scenario-4)

## 场景 1：IAM 用户访问公共域
<a name="cross-account-scenario-1"></a>

### 步骤 1：创建跨账户 IAM 角色（目标账户）
<a name="scenario-1-step-1"></a>

在目标账户中创建 IAM 角色，允许源账户代入该角色进行域验证。

**创建跨账户角色**

1. 创建允许源账户担任该角色的信任策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 创建该角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 创建仅包含以下`es:DescribeDomain`操作的权限策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 将权限策略附加到角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步骤 2：创建 OpenSearch 域名（目标账户）
<a name="scenario-1-step-2"></a>

在目标账户中创建一个启用精细访问控制和加密的 OpenSearch 域：

```
aws opensearch create-domain \
  --domain-name domain-name \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/domain-name/*"}]}' \
  --region region
```

等待域名状态变为`Active`后再继续。

### 步骤 3：创建 OpenSearch UI 应用程序（源账户）
<a name="scenario-1-step-3"></a>

使用跨账户数据源在源账户中创建应用程序：

```
aws opensearch create-application \
  --region region \
  --name "cross-account-iam-app" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name",
    "dataSourceDescription":"Cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步骤 4：验证和访问
<a name="scenario-1-step-4"></a>

检索应用程序详细信息以获取端点 URL：

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 从响应中导航到应用程序终端节点 URL。
+ 使用 IAM 证书登录。
+ IAM 用户使用自己的证书签署数据平面请求。
+ 目标域访问策略控制用户可以访问哪些数据。

## 场景 2：IAM 身份中心用户访问公共域
<a name="cross-account-scenario-2"></a>

### 步骤 1：创建跨账户 IAM 角色（目标账户）
<a name="scenario-2-step-1"></a>

在目标账户中创建 IAM 角色，允许源账户代入该角色进行域验证。

**创建跨账户角色**

1. 创建允许源账户担任该角色的信任策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 创建该角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 创建仅包含以下`es:DescribeDomain`操作的权限策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 将权限策略附加到角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步骤 2：创建 OpenSearch 域名（目标账户）
<a name="scenario-2-step-2"></a>

在目标账户中创建 OpenSearch 域名。使用与相同的命令[步骤 2：创建 OpenSearch 域名（目标账户）](#scenario-1-step-2)，但要更新访问策略以允许来自源账户的 IAM Identity Center 应用程序角色：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole"
    },
    "Action": "es:ESHttp*",
    "Resource": "arn:aws:es:region:target-account-id:domain/domain-name/*"
  }]
}
```

等待域名状态变为`Active`后再继续。

### 步骤 3：为 IAM 身份中心应用程序（源账户）创建 IAM 角色
<a name="scenario-2-step-3"></a>

在源账户中创建 IAM 角色，用户 OpenSearch 界面使用该角色访问 IAM Identity Center 用户数据平面。

**创建 IAM 身份中心应用程序角色**

1. 创建信任策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:SetContext",
         "Condition": {
           "ForAllValues:ArnEquals": {
             "sts:RequestContextProviders": "arn:aws:iam::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id"
           }
         }
       }
     ]
   }
   ```

1. 创建权限策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "*"
     }]
   }
   ```

1. 创建角色并附加策略：

   ```
   aws iam create-role \
     --role-name NeoIdCAppRole \
     --assume-role-policy-document file://neoidc-trust-policy.json
   
   aws iam put-role-policy \
     --role-name NeoIdCAppRole \
     --policy-name NeoIdCAppPermissions \
     --policy-document file://neoidc-permissions-policy.json
   ```

### 步骤 4：使用 IAM 身份中心（源账户）创建 OpenSearch UI 应用程序
<a name="scenario-2-step-4"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-idc-app" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name",
    "dataSourceDescription":"Cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步骤 5：创建和分配 IAM 身份中心用户和群组
<a name="scenario-2-step-5"></a>

**创建 IAM 身份中心用户**  
运行如下命令。将 *placeholder values* 替换为您自己的信息。

```
aws identitystore create-user \
  --identity-store-id d-directory-id \
  --user-name user-email \
  --display-name "display-name" \
  --name Formatted=string,FamilyName=last-name,GivenName=first-name \
  --emails Value=user-email,Type=work,Primary=true
```

**创建 IAM 身份中心群组并添加用户**  
运行以下 命令：

```
aws identitystore create-group \
  --identity-store-id d-directory-id \
  --display-name "OpenSearchUsers" \
  --description "Users with OpenSearch access"

aws identitystore create-group-membership \
  --identity-store-id d-directory-id \
  --group-id group-id \
  --member-id UserId=user-id
```

**将用户或组分配给应用程序**  
运行如下命令：

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \
  --principal-id user-id-or-group-id \
  --principal-type USER
```

**在目标域上配置后端角色映射**  
将 IAM 身份中心组映射到目标域上的 OpenSearch 安全角色：

```
curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \
  -u admin:master-password \
  -H 'Content-Type: application/json' \
  -d '{
    "backend_roles": ["group-id"],
    "hosts": [],
    "users": []
  }'
```

### 步骤 6：验证和访问
<a name="scenario-2-step-6"></a>

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 导航到应用程序终端节点 URL。
+ 使用 IAM 身份中心用户证书登录。
+ IAM Identity Center 用户的数据请求是使用 IAM Identity Center 应用程序角色而不是跨账户角色签署的。
+ 域上的后端角色映射控制数据访问权限。

## 场景 3：IAM 用户访问 VPC 域
<a name="cross-account-scenario-3"></a>

### 步骤 1：创建跨账户 IAM 角色（目标账户）
<a name="scenario-3-step-1"></a>

在目标账户中创建 IAM 角色，允许源账户代入该角色进行域验证。

**创建跨账户角色**

1. 创建允许源账户担任该角色的信任策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 创建该角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 创建仅包含以下`es:DescribeDomain`操作的权限策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 将权限策略附加到角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步骤 2：设置 VPC（目标账户）
<a name="scenario-3-step-2"></a>

如果目标账户中已存在 VPC，请跳过此步骤。

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region region

# Create subnet
aws ec2 create-subnet \
  --vpc-id vpc-id \
  --cidr-block 10.0.1.0/24 \
  --availability-zone regiona \
  --region region

# Create security group
aws ec2 create-security-group \
  --group-name opensearch-vpc-sg \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id vpc-id \
  --region region

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id security-group-id \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region region
```

了解有关[创建 VPC 域](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)的更多信息。

### 步骤 3：创建 VPC 域（目标账户）
<a name="scenario-3-step-3"></a>

```
aws opensearch create-domain \
  --domain-name vpc-domain-name \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --vpc-options "SubnetIds=subnet-id,SecurityGroupIds=security-group-id" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/vpc-domain-name/*"}]}' \
  --region region
```

等待域名状态变为`Active`后再继续。

### 步骤 4：为 OpenSearch UI 服务委托人（目标账户）授权 VPC 终端节点
<a name="scenario-3-step-4"></a>

**重要**  
这是 VPC 域所独有的关键步骤。必须明确授权 OpenSearch 用户界面服务才能访问 VPC 终端节点。

```
# Authorize the service principal
aws opensearch authorize-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --region region
```

预期的回应：

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com"
    }
  ]
}
```

### 步骤 5：创建 OpenSearch UI 应用程序（源账户）
<a name="scenario-3-step-5"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-vpc-iam-app" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name",
    "dataSourceDescription":"Cross-account VPC domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步骤 6：验证和访问
<a name="scenario-3-step-6"></a>

检索应用程序详细信息以获取端点 URL：

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 从响应中导航到应用程序终端节点 URL。
+ 使用 IAM 证书登录。
+ IAM 用户使用自己的证书签署数据平面请求。
+ 目标域访问策略控制用户可以访问哪些数据。

## 场景 4：IAM 身份中心用户访问 VPC 域
<a name="cross-account-scenario-4"></a>

### 步骤 1：创建跨账户 IAM 角色（目标账户）
<a name="scenario-4-step-1"></a>

在目标账户中创建 IAM 角色，允许源账户代入该角色进行域验证。

**创建跨账户角色**

1. 创建允许源账户担任该角色的信任策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 创建该角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 创建仅包含以下`es:DescribeDomain`操作的权限策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 将权限策略附加到角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步骤 2：设置 VPC（目标账户）
<a name="scenario-4-step-2"></a>

如果目标账户中已存在 VPC，请跳过此步骤。

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region region

# Create subnet
aws ec2 create-subnet \
  --vpc-id vpc-id \
  --cidr-block 10.0.1.0/24 \
  --availability-zone regiona \
  --region region

# Create security group
aws ec2 create-security-group \
  --group-name opensearch-vpc-sg \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id vpc-id \
  --region region

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id security-group-id \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region region
```

了解有关[创建 VPC 域](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)的更多信息。

### 步骤 3：创建 VPC 域（目标账户）
<a name="scenario-4-step-3"></a>

使用与相同的命令[步骤 3：创建 VPC 域（目标账户）](#scenario-3-step-3)，但要更新访问策略以允许来自源账户的 IAM Identity Center 应用程序角色：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole"
    },
    "Action": "es:ESHttp*",
    "Resource": "arn:aws:es:region:target-account-id:domain/vpc-domain-name/*"
  }]
}
```

等待域名状态变为`Active`后再继续。

### 步骤 4：为 OpenSearch UI 服务委托人（目标账户）授权 VPC 终端节点
<a name="scenario-4-step-4"></a>

**重要**  
这是 VPC 域所独有的关键步骤。必须明确授权 OpenSearch 用户界面服务才能访问 VPC 终端节点。

```
# Authorize the service principal
aws opensearch authorize-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --region region
```

预期的回应：

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com"
    }
  ]
}
```

### 步骤 5：为 IAM 身份中心应用程序（源账户）创建 IAM 角色
<a name="scenario-4-step-5"></a>

在源账户中创建 IAM 角色，用户 OpenSearch 界面使用该角色访问 IAM Identity Center 用户数据平面。

**创建 IAM 身份中心应用程序角色**

1. 创建信任策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:SetContext",
         "Condition": {
           "ForAllValues:ArnEquals": {
             "sts:RequestContextProviders": "arn:aws:iam::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id"
           }
         }
       }
     ]
   }
   ```

1. 创建权限策略：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "*"
     }]
   }
   ```

1. 创建角色并附加策略：

   ```
   aws iam create-role \
     --role-name NeoIdCAppRole \
     --assume-role-policy-document file://neoidc-trust-policy.json
   
   aws iam put-role-policy \
     --role-name NeoIdCAppRole \
     --policy-name NeoIdCAppPermissions \
     --policy-document file://neoidc-permissions-policy.json
   ```

### 步骤 6：使用 IAM 身份中心（源账户）创建 OpenSearch UI 应用程序
<a name="scenario-4-step-6"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-vpc-idc-app" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name",
    "dataSourceDescription":"Cross-account VPC domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步骤 7：创建和分配 IAM 身份中心用户和群组
<a name="scenario-4-step-7"></a>

**创建 IAM 身份中心用户**  
运行如下命令。将 *placeholder values* 替换为您自己的信息。

```
aws identitystore create-user \
  --identity-store-id d-directory-id \
  --user-name user-email \
  --display-name "display-name" \
  --name Formatted=string,FamilyName=last-name,GivenName=first-name \
  --emails Value=user-email,Type=work,Primary=true
```

**创建 IAM 身份中心群组并添加用户**  
运行以下 命令：

```
aws identitystore create-group \
  --identity-store-id d-directory-id \
  --display-name "OpenSearchUsers" \
  --description "Users with OpenSearch access"

aws identitystore create-group-membership \
  --identity-store-id d-directory-id \
  --group-id group-id \
  --member-id UserId=user-id
```

**将用户或组分配给应用程序**  
运行如下命令：

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \
  --principal-id user-id-or-group-id \
  --principal-type USER
```

**在目标域上配置后端角色映射**  
将 IAM 身份中心组映射到目标域上的 OpenSearch 安全角色：

```
curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \
  -u admin:master-password \
  -H 'Content-Type: application/json' \
  -d '{
    "backend_roles": ["group-id"],
    "hosts": [],
    "users": []
  }'
```

### 第 8 步：验证和访问
<a name="scenario-4-step-8"></a>

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 导航到应用程序终端节点 URL。
+ 使用 IAM 身份中心用户证书登录。
+ IAM Identity Center 用户的数据请求是使用 IAM Identity Center 应用程序角色而不是跨账户角色签署的。
+ 域上的后端角色映射控制数据访问权限。

## 管理 应用程序
<a name="cross-account-managing-applications"></a>

**使用跨账户数据源更新应用程序**  
运行如下命令。将 *placeholder values* 替换为您自己的信息。

```
aws opensearch update-application \
  --region region \
  --id application-id \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-1",
    "dataSourceDescription":"First cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  },{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-2",
    "dataSourceDescription":"Second cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]'
```

**重要**  
更新操作将替换整个数据源数组。包括您要保留的所有数据源。

**列出应用程序**  
运行如下命令：

```
aws opensearch list-applications \
  --region region
```

**删除应用程序**  
运行如下命令：

```
aws opensearch delete-application \
  --region region \
  --id application-id
```

**撤销 VPC 终端节点访问权限**  
运行如下命令：

```
aws opensearch revoke-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region
```

## 快速参考
<a name="cross-account-quick-reference"></a>

下表总结了域类型和身份验证方法之间的主要区别。


**公共域与 VPC 域的比较**  

| 方面 | 公共领域 | VPC 域 | 
| --- | --- | --- | 
| VPC 终端节点授权 | 非必需 | 必填项-必须授权 application.opensearchservice.amazonaws.com | 
| 网络设置 | 无 | VPC、子网、入站 HTTPS (443) 的安全组 | 
| IAM 访问策略 | 必需 | 必需 | 
| 跨账户角色 | 跨账户为必填项 | 跨账户为必填项 | 


**IAM 用户与 IAM 身份中心用户的比较**  

| 方面 | IAM 用户 | IAM Identity Center 用户 | 
| --- | --- | --- | 
| 数据平面凭证 | 用户自己的 IAM 证书 | IAM 身份中心应用程序角色 | 
| 访问控制 | 域访问策略 | 域访问策略和后端角色映射 | 
| 其他设置 | 无 | IAM Identity Center 应用程序角色、 user/group 创建、应用程序分配、后端角色映射 | 
| OpenSearch UI 应用程序配置 | 没有 IAM 身份中心选项 | --iam-identity-center-options 必需 | 

## 重要提示
<a name="cross-account-important-notes"></a>
+ `iamRoleForDataSourceArn`必须与在同一个账户中`dataSourceArn`。
+ `iamRoleForDataSourceArn`只有跨账户数据源才需要。对于同账户数据源，请将其省略。
+ 跨账户角色只需要`es:DescribeDomain`权限。它从来没有用于数据平面访问。
+ 对于 VPC 域，必须同时配置 IAM 策略和 VPC 终端节点授权。
+ 支持的引擎版本： OpenSearch 1.3 及以上。

## 问题排查
<a name="cross-account-troubleshooting"></a>


| 问题 | 解决方案 | 
| --- | --- | 
| 应用程序创建失败并显示 “无法访问域” | 验证跨账户角色是否具有es:DescribeDomain权限，以及信任策略是否允许源账户。 | 
| VPC 域关联失败 | 确保 VPC 终端节点已获得授权application.opensearchservice.amazonaws.com。 | 
| IAM 用户数据平面访问被拒绝 | 检查目标域访问策略是否允许 IAM 用户或角色委托人。 | 
| IAM 身份中心用户数据平面访问被拒绝 | 确认后端角色映射包含 IAM 身份中心组 ID，以及域策略是否允许 IAM Identity Center 应用程序角色。 | 
| 账户不匹配错误 | 确保iamRoleForDataSourceArn该账户与中的域名位于同一个账户中dataSourceArn。 | 

# 跨集群搜索
<a name="application-cross-cluster-search"></a>

在 Amazon OpenSearch Serverless 中使用[跨集群搜索](cross-cluster-search.md)，您可以跨多个连接的域执行查询和聚合。

Amazon OpenSearch Serverless 中的跨集群搜索使用*源域和*目标*域*的概念。跨集群搜索请求源自源域。目标域可以位于不同的 AWS 区域 （ AWS 账户 或两者兼而有之）中，供源域进行查询。使用跨集群搜索，您可以将源域配置为在同一个账户中与您的 OpenSearch 用户界面关联，然后创建与目标域的连接。因此，即使目标网域位于不同的账户或区域中，您也可以使用 OpenSearch 用户界面处理来自目标域的数据。

您需要为传入和[传出亚马逊 OpenSearch 服务的数据支付标准 AWS 数据传输费用](https://aws.amazon.com/opensearch-service/pricing/)。您无需为 OpenSearch 服务域内的节点之间传输的数据付费。有关数据“传入”和“传出”费用的更多信息，请参阅 *Amazon EC2 按需定价*页面中的[数据传输](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer)。

您可以使用跨集群搜索作为将 OpenSearch 用户界面与不同账户或不同区域中的集群关联的机制。默认情况下，作为加密的一部分，域之间的请求在传输过程中会进行 node-to-node加密。

**注意**  
开源 OpenSearch 工具还记录了[跨集群搜索](https://opensearch.org/docs/latest/search-plugins/cross-cluster-search/)。请注意，与托管 Amazon OpenSearch Serverless 域相比，开源集群的开源工具设置差异很大。  
最值得注意的是，在 Amazon OpenSearch Serverless 中，您可以使用 AWS 管理控制台 而不是请求来配置跨集群连接。`cURL`除精细访问控制外，托管式服务还使用 AWS Identity and Access Management （IAM）进行跨集群身份验证。  
因此，我们建议使用本主题中的内容来配置域名的跨集群搜索，而不是使用开源 OpenSearch文档。

**使用跨集群搜索时的功能差异**  
相较于常规域，使用跨集群搜索创建的目标域具有以下功能差异和要求：
+ 您无法向远程集群写入或运行 `PUT` 命令。您对远程集群的访问权限为*只读*权限。
+ 源域和目标域都必须是 OpenSearch 域。您无法连接 Elasticsearch 域或用于用户界面的自行管理的 OpenSearch /Elasticsearch 集群。 OpenSearch 
+ 一个域最多可与其他域建立 20 个连接。这同时包括传出和传入连接。
+ 源域的版本必须与目标域相同或更高。 OpenSearch 如果要在两个域之间建立双向连接，则这两个域的版本应相同。我们建议在建立连接前，将两个域都升级到最新版本。如果需在建立双向连接后更新域，必须先删除该连接，然后再重新创建。
+ 不能将自定义字典或 SQL 用于远程搜索。
+ 您不能使用 CloudFormation 来连接域名。
+ 不能在 M3 和可突增（T2 和 T3）实例上使用跨集群搜索。
+ 跨集群搜索不适用于 Amazon OpenSearch Serverless 馆藏。

**UI 的跨集群搜索先决条件 OpenSearch**  
在设置包含两个 OpenSearch 域的跨集群搜索之前，请确保您的域满足以下要求：
+ 两个域的精细访问控制均已启用
+ Node-to-node 两个域都启用了加密

**Topics**
+ [通过跨集群搜索设置跨区域和跨账户数据访问的访问权限](#cross-cluster-search-security)
+ [在域之间创建连接](#cross-cluster-search-create-connection)
+ [通过跨集群搜索测试跨区域和跨账户数据访问的安全设置](#cross-cluster-search-security-testing)
+ [删除连接](#cross-cluster-search-deleting-connection)

## 通过跨集群搜索设置跨区域和跨账户数据访问的访问权限
<a name="cross-cluster-search-security"></a>

当向源域发送跨集群搜索请求时，该域将根据其域访问策略评估该请求。跨集群搜索需要精细访问控制。以下是在源域上实施开放访问策略的示例。

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "*"
        ]
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-1:111222333444:domain/src-domain/*"
    }
  ]
}
```

------

**注意**  
如果路径中包含远程索引，则必须在域 ARN 中对 URI 进行 URL 编码。  
例如，使用以下 ARN 格式：  
`:arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst%3Aremote_index`  
请勿使用以下 ARN 格式：  
`arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst:remote_index.`

如果除了精细访问控制，还选择使用限制性访问策略，则策略必须至少允许访问 `es:ESHttpGet`。以下是示例：

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111222333444:user/john-doe"
        ]
      },
      "Action": "es:ESHttpGet",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/my-domain/*"
    }
  ]
}
```

------

源域上的[精细访问控制](fgac.md)会评估请求，以确定其是否使用有效的 IAM 或 HTTP 基础凭证进行签名。如果是，精细访问控制接下来会评估用户是否具有执行搜索和访问数据的权限。

以下是有关搜索的权限要求：
+ 如果该请求仅搜索目标域中的数据（例如，`dest-alias:dest-index/_search)`），则只需目标域的权限。
+ 如果该请求在两个域中搜索数据（例如，`source-index,dest-alias:dest-index/_search)`），则需要两个域的权限。
+ 在精细访问控制中，除相关索引的标准读取或搜索权限之外，用户还必须拥有 `indices:admin/shards/search_shards` 权限。

源域将请求传递到目标域。目标域根据其域访问策略评估该请求。要支持 OpenSearch UI 中的所有功能，例如为文档编制索引和执行标准搜索，必须设置完全权限。以下是我们针对目标域的推荐策略示例：

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

****  

```
{
"Version":"2012-10-17",		 	 	 
 "Statement": [
    {
       "Effect": "Allow",
       "Principal": {
         "AWS": [
           "*"
        ]
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-2:111222333444:domain/my-destination-domain/*"
    },
    {
    "Effect": "Allow",
        "Principal": {
    "AWS": "*"
      },
      "Action": "es:ESCrossClusterGet",
      "Resource": "arn:aws:es:us-east-2:111222333444:domain/"
    }
  ]
}
```

------

如果仅需执行基础搜索，最低策略要求是针对目标域应用 `es:ESCrossClusterGet` 权限，且不支持通配符。例如，在前面的策略中，您可以将域名指定为*/my-destination-domain*，而不是指定*/my-destination-domain/\$1*。

在此情况下，目标域执行搜索，并将结果返回到源域。源域将自己的结果（如果有）与目标域的结果相结合，并将它们返回给您。

## 在域之间创建连接
<a name="cross-cluster-search-create-connection"></a>

跨集群搜索连接是从源域到目标域的单向连接。这意味着目标域名（在不同的账户或区域中）无法查询 OpenSearch 用户界面的本地源域名。源域创建到目标域的*出站*连接。目标域接收来自源域的*入站*连接请求。

![\[此图说明跨集群搜索连接是从源域到目标域的单向连接。\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ui-oubound-inbound-connections.png)


**在域之间创建连接**

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

1. 在左侧导航栏中，选择**域**。

1. 选择要用作源域的域名，然后选择**连接**选项卡。

1. 在**出站连接**区域，选择**请求**。

1. 对于**Connection alias（连接别名）**，输入您的连接的名称。 OpenSearch 用户界面中使用连接别名来选择目标域。

1. 对于**连接模式**，请选择**直接**模式以进行跨集群搜索或复制。

1. 要指定连接在搜索过程中应跳过不可用的集群，请选中**跳过不可用的集群**复选框。选择此选项可确保即使一个或多个远程集群发生故障，跨集群查询仍能返回部分结果。

1. 对于**目标集群**，请在**连接到此 AWS 账户中的集群**和**连接到其他 AWS 账户中的集群**之间进行选择。

1. 对于**远程域 ARN**，输入集群的 Amazon 资源名称（ARN）。域 ARN 可在域详情页面的**一般信息**区域中找到。

   域必须满足以下要求：
   + ARN 的格式必须为 `arn:partition:es:regionaccount-id:type/domain-id`。例如：

     `arn:aws:es:us-east-2:111222333444:domain/my-domain`
   + 必须将该域配置为使用 OpenSearch 版本 1.0（或更高版本）或 Elasticsearch 版本 6.7（或更高版本）。
   + 必须在域上启用精细访问控制。
   + 域名必须正在运行 OpenSearch。

1. 选择**请求**。

跨集群搜索首先验证连接请求，以确保满足先决条件。如果域不兼容，则连接请求将进入 `Validation failed` 状态。

如果连接请求验证成功，则将其发送到目标域，该请求必须在目标域进行审批。在此审批进行之前，连接将保持 `Pending acceptance` 状态。当连接请求被目标域接受后，状态将更改为 `Active`，且目标域变为可供查询。

域页面显示了目标域的整体域运行状况和实例运行状况的详细信息。只有域拥有者具备创建、查看、删除和监控域之间的连接的灵活性。

连接建立之后，在所连接域节点之间流动的任何流量都将进行加密。如果将 VPC 域连接到非 VPC 域，且非 VPC 域是可接收 Internet 流量的公有端点，则域之间的跨集群流量仍是加密且安全的。

## 通过跨集群搜索测试跨区域和跨账户数据访问的安全设置
<a name="cross-cluster-search-security-testing"></a>

通过跨集群搜索为跨区域和跨账户数据访问设置访问权限后，我们建议使用 [https://www.postman.com/](https://www.postman.com/)（即用于协作 API 开发的第三方平台）测试设置。

**使用 Postman 设置您的安全设置**

1. 在目标域上，为文档编制索引。示例请求如下：

   ```
   POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1
   {
   "Dracula": "Bram Stoker"
   }
   ```

1. 要从源域查询此索引，请在查询内包含目标域的连接别名。您可以在域控制面板的连接选项卡上找到连接别名。以下是请求示例及截断响应：

   ```
   GET https://src-domain.us-east-1.es.amazonaws.com/connection_alias:books/_search
   {
   ...
     "hits": [
   {
   "_index": "source-destination:books",
     "_type": "_doc",
     "_id": "1",
     "_score": 1,
     "_source": {
   "Dracula": "Bram Stoker"
     }
   }
     ]
   }
   ```

1. （可选）您可以在单次搜索中创建包含多个域名的配置。例如，假设您设置以下内容：

   `domain-a` 到 `domain-b` 的连接，连接别名为 `cluster_b`

   `domain-a` 到 `domain-c` 的连接，连接别名为 `cluster_c`

   在此情况下，您的搜索包括内容 `domain-a`、`domain-b` 和 `domain-c`。以下是请求示例及响应：

   请求

   ```
   GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search
   {
     "query": {
   "match": {
     "user": "domino"
   }
     }
   }
   ```

   响应：

   ```
   {
   "took": 150,
     "timed_out": false,
     "_shards": {
   "total": 3,
   "successful": 3,
   "failed": 0,
   "skipped": 0
     },
     "_clusters": {
   "total": 3,
   "successful": 3,
   "skipped": 0
     },
     "hits": {
   "total": 3,
   "max_score": 1,
   "hits": [
     {
   "_index": "local_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 1,
       "_source": {
   "user": "domino",
         "message": "This is message 1",
         "likes": 0
       }
     },
     {
   "_index": "cluster_b:b_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 2,
       "_source": {
   "user": "domino",
         "message": "This is message 2",
         "likes": 0
       }
     },
     {
   "_index": "cluster_c:c_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 3,
       "_source": {
   "user": "domino",
         "message": "This is message 3",
         "likes": 0
       }
     }
   ]
     }
   }
   ```

如果您没有选择在连接设置中跳过不可用集群，搜索的所有目标集群必须可用才能成功运行搜索请求。否则，整个请求将失败——即使只有一个域不可用，也不会返回任何搜索结果。

## 删除连接
<a name="cross-cluster-search-deleting-connection"></a>

删除连接会停止目标域上的任何跨集群搜索操作。

您可以在源域或目标域上执行以下步骤以删除连接。删除连接之后，其状态为 `Deleted`，仍会显示 15 天。

不能删除具有活动跨集群连接的域。要删除域，请首先从该域中删除所有传入和传出连接。这是为了确保在删除域之前考虑到了跨集群域用户。

**删除连接**

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

1. 在左侧导航栏中，选择**域**。

1. 选择要删除的域名称，然后选择**连接**选项卡。

1. 选择要删除的连接名称。

1. 选择**删除**，然后确认删除。

# 管理从 VPC 终端节点对 OpenSearch UI 的访问
<a name="application-access-ui-from-vpc-endpoint"></a>

您可以使用在 VPC 和 OpenSearch UI 之间创建私有连接 AWS PrivateLink。使用此连接，您可以像访问同一 VPC 一样访问 OpenSearch UI 应用程序。这样，您就无需配置互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 建立连接。您的 VPC 中的实例不需要公有 IP 地址即可访问 OpenSearch 界面。

要建立此私有连接，请先创建一个由提供支持的接口终端节点 AWS PrivateLink。在您为接口端点指定的每个子网中，都会自动创建一个端点网络接口。这些是请求者管理的网络接口，用作发往 OpenSearch UI 应用程序的流量的入口点。

## 在 VPC 和 OpenSearch 用户界面之间创建私有连接
<a name="ui-access-from-vpc-endpoint-create"></a>

您可以使用 AWS 管理控制台 或创建用于从 VPC 访问 OpenSearch 用户界面的私有连接 AWS CLI。

### 在 VPC 和 OpenSearch UI 之间创建私有连接（控制台）
<a name="ui-access-from-vpc-endpoint-create-console"></a>

**使用控制台在 VPC 和 OpenSearch UI 之间创建私有连接**

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

1. 在左侧导航的**无服务器**项下，选择 **VPC 端点**。

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

1. 对于**名称**，输入端点的名称。

1. 对于 **VPC**，请选择您将从中访问 OpenSearch 用户界面应用程序的 VPC。

1. 对于**子网**，请选择一个您要从中访问 OpenSearch 用户界面应用程序的子网。
**注意**  
端点的 IP 地址和 DNS 类型取决于子网类型：  
双栈：如果所有子网都同时具有 IPv4 和 IPv6 地址范围。
IPv6: 如果所有子网都 IPv6 只是子网。
IPv4: 如果所有子网都有 IPv4 地址范围。

1. 对于**安全组**，选择一个或多个要与端点网络接口关联的安全组。
**注意**  
在此步骤中，您可以在该步骤中限制您授权进入端点的入站流量的端口、协议和源。确保安全组规则允许使用 VPC 终端节点与 OpenSearch UI 应用程序通信的资源也与终端节点网络接口通信。

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

### 在 VPC 和 OpenSearch 用户界面之间创建私有连接 (AWS CLI)
<a name="ui-access-from-vpc-endpoint-create-cli"></a>

**要在 VPC 和 OpenSearch UI 之间创建私有连接，请使用 AWS CLI**  
运行如下命令。将 *placeholder values* 替换为您自己的信息。

```
aws opensearchserverless create-vpc-endpoint \
    --region region \
    --endpoint endpoint \
    --name vpc_endpoint_name \
    --vpc-id vpc_id \
    --subnet-ids subnet_ids
```

## 更新 VPC 终端节点策略以允许访问 OpenSearch UI 应用程序
<a name="ui-access-from-vpc-endpoint-allow"></a>

创建私有连接后，通过指定应用程序 ID 更新 VPC 终端节点策略以允许访问 VPC 终端节点策略中的 OpenSearch UI 应用程序。

有关更新 VPC 端点策略的信息，请参阅《AWS PrivateLink 指南》**中的 [Update a VPC endpoint policy](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)。

确保 VPC 端点策略包含以下语句。将 *placeholder value* 替换为您自己的信息。

```
{
    "Statement": [{
        "Action": ["opensearch:*"],
        "Effect": "Allow",
        "Principal": "*",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "opensearch:ApplicationId": ["opensearch-ui-application-id"]
            }
        }
    }]
}
```

## 在 VPC 终端节点策略中撤消对 OpenSearch UI 的访问权限
<a name="ui-access-from-vpc-endpoint-deny"></a>

OpenSearch 用户界面需要 VPC 终端节点策略中的明确权限才能允许用户从 VPC 访问应用程序。如果您不再希望用户从 VPC 访问用户 OpenSearch 界面，则可以在终端节点策略中删除该权限。此后，用户在尝试访问用户 OpenSearch 界面时会遇到`403 forbidden`错误消息。

有关更新 VPC 端点策略的信息，请参阅《AWS PrivateLink 指南》**中的 [Update a VPC endpoint policy](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)。

以下是拒绝从 VPC 访问 UI 应用程序的 VPC 端点策略示例：

```
{
    "Statement": [{
        "Action": ["opensearch:*"],
        "Effect": "Allow",
        "Principal": "*",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "opensearch:ApplicationId": [""]
            }
        }
    }]
}
```

# 将已保存的对象从 OpenSearch 仪表板迁移到 OpenSearch 用户界面
<a name="application-migration"></a>

如果您在 OpenSearch 仪表板中有现有的仪表板、可视化效果、索引模式和其他已保存的对象，则可以在 OpenSearch 用户界面中迁移和重复使用它们。

迁移到 OpenSearch UI 的好处：
+ **高可用性** — OpenSearch 用户界面托管在中， AWS 云 并在域升级和维护期间保持可用，而 OpenSearch 仪表板托管在域中，将暂时不可用。
+ **多数据源** — OpenSearch UI 可以提供跨多个数据源的整合单一管理面板，包括 OpenSearch 域、无服务器集合以及与 Amazon S3 和 Amazon 的数据连接 CloudWatch；而每个 OpenSearch 控制面板只能处理一个域或集合。
+  OpenSearch 用户界面上还提供了 AI 助手和工作区等其他功能。了解更多:[在 Amazon OpenSearch 服务中使用 OpenSearch 用户界面](application.md).

**Topics**
+ [迁移概述](#application-migrate-saved-objects-overview)
+ [先决条件](#application-migrate-saved-objects-prerequisites)
+ [步骤 1：从 OpenSearch 仪表板导出已保存的对象](#application-migrate-saved-objects-export)
+ [第 2 步：将保存的对象导入 OpenSearch 用户界面](#application-migrate-saved-objects-import)

## 迁移概述
<a name="application-migrate-saved-objects-overview"></a>

迁移过程包括以下高级步骤：

1. **从 OpenSearch 仪表板导出保存的对象**-使用 OpenSearch 仪表板保存的对象管理 UI 或导出 API 将仪表板、可视化效果、索引模式和其他对象下载为以换行符分隔的 JSON (NDJSON) 文件。

1. **创建 OpenSearch UI 应用程序和工作区**-如果尚未创建，请创建 OpenSearch UI 应用程序和工作区来接收导入的对象。

1. **在 OpenSearch UI 中注册数据源**-将您的 OpenSearch 域与 OpenSearch UI 应用程序关联并将其注册为工作空间内的数据源。导入对象中的索引模式引用此数据源。

1. 将@@ **保存的对象导入 OpenSearch 用户界面**-使用 OpenSearch 用户界面保存的对象管理用户界面或导入 API 将 NDJSON 文件上传到目标工作区。

1. **验证导入的对象**-在 OpenSearch 用户界面中打开仪表板和可视化效果以验证它们是否显示正确，以及数据是否来自关联的域或集合。

## 先决条件
<a name="application-migrate-saved-objects-prerequisites"></a>

在迁移之前，请验证以下先决条件：
+ 您拥有调用 Amazon OpenSearch 服务所需的必要 IAM 权限，并且 OpenSearch APIs。有关更多信息，请参阅 [创建亚马逊 OpenSearch 服务应用程序所需的权限](application-getting-started.md#application-prerequisite-permissions)。
+ 您可以访问要迁移的域或集合以及 OpenSearch 控制面板。
+ 您已经创建了一个 OpenSearch UI 应用程序。有关创建应用程序和工作区的信息，请参阅[开始使用 Amazon OpenSearch 服务中的 OpenSearch 用户界面](application-getting-started.md)。
+ 您已将同一个域名或集合关联到 OpenSearch UI 应用程序。有关关联数据源的信息，请参见[管理数据来源关联和虚拟私有云访问权限](application-data-sources-and-vpc.md)。

**注意**  
OpenSearch 用户界面仅支持 1.3 及更高 OpenSearch 版本。在尝试迁移已保存的对象之前，请确认您的 OpenSearch 域运行的是 1.3 或更高版本。

## 步骤 1：从 OpenSearch 仪表板导出已保存的对象
<a name="application-migrate-saved-objects-export"></a>

使用管理 UI 或导出 API 从 OpenSearch 仪表板中导出保存的对象。导出会生成一个以换行符分隔的 JSON (NDJSON) 文件，其中包含所有选定的已保存对象类型及其依赖关系。

**Topics**
+ [在 OpenSearch 仪表板上手动导出](#application-migrate-export-console)
+ [通过 API 导出](#application-migrate-export-api)

### 在 OpenSearch 仪表板上手动导出
<a name="application-migrate-export-console"></a>

**使用 OpenSearch 仪表板管理 UI 导出已保存的对象**

1. 打开您的 OpenSearch 仪表板实例。

1. 在左侧导航面板中，选择**管理**。

1. 在 “**仪表板管理**” 下，选择 “**已保存的对象**”。

1. 选择要导出的已保存对象。要导出特定类型的所有对象，请使用搜索栏按类型进行筛选。要导出所有对象，请选中表格标题中的复选框。

1. 选择**导出**。

1. 在 “**导出保存的对象**” 对话框中，确保选中 “**包括相关对象**”。此选项包括所选已保存对象所依赖的所有对象，例如可视化所引用的索引模式。只有当您打算手动管理依赖关系时，才清除此选项。

1. 选择 “**导出**” 将`.ndjson`文件下载到本地计算机。

**提示**  
当您选择 “**包括相关对象**” 时，导出的 NDJSON 文件将包含呈现所选仪表板和可视化效果所需的所有已保存对象，包括它们的相关索引模式、可视化和搜索对象。这简化了导入步骤并避免了缺少参考错误。

### 通过 API 导出
<a name="application-migrate-export-api"></a>

您可以使用 OpenSearch 仪表板已保存对象导出 API 以编程方式导出已保存的对象。这对于自动迁移或将导出步骤集成到管道中非常有用。 CI/CD 

**注意**  
如果您的 OpenSearch 域名启用了[精细访问控制](fgac.md)，则必须在导出请求中提供身份验证凭证。通过添加带有用户名和密码的`-u`标志，使用 HTTP 基本身份验证。有关身份验证选项的更多信息，请参阅 [Amazon 服务中的精细访问控制 OpenSearch](fgac.md)。

以下示例导出所有仪表板及其相关对象。将 *placeholder values* 替换为您自己的信息。

```
curl -X POST \
    "https://dashboards-endpoint/_dashboards/api/saved_objects/_export" \
    -u 'master-username:master-password' \
    -H "Content-Type: application/json" \
    -H "osd-xsrf: true" \
    -d '{
        "type": ["dashboard", "visualization", "index-pattern", "search"],
        "includeReferencesDeep": true,
        "excludeExportDetails": false
    }' \
    -o saved-objects-export.ndjson
```

如果您的域未启用细粒度访问控制，则可以省略该标志。`-u`

要按 ID 导出特定的已保存对象，请使用`objects`参数代替`type`：

```
curl -X POST \
    "https://dashboards-endpoint/_dashboards/api/saved_objects/_export" \
    -u 'master-username:master-password' \
    -H "Content-Type: application/json" \
    -H "osd-xsrf: true" \
    -d '{
        "objects": [
            {"type": "dashboard", "id": "dashboard-id"},
            {"type": "visualization", "id": "visualization-id"}
        ],
        "includeReferencesDeep": true
    }' \
    -o saved-objects-export.ndjson
```

**注意**  
要查找已保存的对象 IDs，您可以使用 “已保存对象” API 列出特定类型的所有对象。以下示例列出了所有仪表板：  

```
curl -X GET \
    "https://dashboards-endpoint/_dashboards/api/saved_objects/_find?type=dashboard" \
    -u 'master-username:master-password'
```
响应中包含每个已保存对象的 ID。在 OpenSearch 仪表板中查看对象时，您还可以在浏览器 URL 中找到 ID。

## 第 2 步：将保存的对象导入 OpenSearch 用户界面
<a name="application-migrate-saved-objects-import"></a>

导出保存的对象后，您可以手动或通过 API 将 NDJSON 文件导入 OpenSearch 用户界面。

**Topics**
+ [在 OpenSearch UI 上手动导入](#application-migrate-import-console)
+ [通过 API 导入](#application-migrate-import-api)

### 在 OpenSearch UI 上手动导入
<a name="application-migrate-import-console"></a>

**使用 OpenSearch UI 管理 UI 导入已保存的对象**

1. 打开您的 OpenSearch UI 应用程序并导航到目标工作区。

1. 在工作区中，从顶部导航栏中选择 “**资产**” 或转到工作区资产页面。

1. 选择 “**导入**”，打开 “**导入资源**” 对话框。

1. 选择 **“选择文件**”，然后选择从 OpenSearch 仪表板中导出的`.ndjson`文件。

1. 对于**冲突管理**，请选择以下选项之一：
   + **创建具有唯一性的新资源 IDs**（默认）- IDs 为所有导入的对象生成新资源，避免与现有资源发生冲突。
   + **检查现有资产**-检查与现有对象是否存在冲突。选中后，选择以下子选项之一：
     + **自动覆盖冲突**-自动替换具有相同 ID 的现有资产。
     + **请求对冲突采取行动**-系统会提示您单独解决每个冲突。

1. 选择**导入**。

1. 查看导入摘要。

### 通过 API 导入
<a name="application-migrate-import-api"></a>

要使用带有 AWS 签名版本 4 身份验证的 API 导入保存的对象，必须先获取数据源 ID，然后在导入请求中使用它。将 *placeholder values* 替换为您自己的信息。

步骤 1：获取工作空间的数据源 ID：

```
curl -X GET \
    "https://opensearch-ui-endpoint/w/workspace-id/api/saved_objects/_find?type=data-source" \
    --aws-sigv4 "aws:amz:region:opensearch" \
    --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
    -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
    -H "osd-xsrf: true"
```

**注意**  
响应包含数据源 ID。在 OpenSearch UI 中查看数据源时，您还可以在浏览器 URL 中找到数据源 ID。

步骤 2：使用步骤 1 中的数据源 ID 导入已保存的对象：

```
curl -X POST \
    "https://opensearch-ui-endpoint/w/workspace-id/api/saved_objects/_import?overwrite=true&dataSourceId=data-source-id" \
    --aws-sigv4 "aws:amz:region:opensearch" \
    --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
    -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
    -H "osd-xsrf: true" \
    -F "file=@saved-objects-export.ndjson"
```

**注意**  
这些示例使用 curl 的内置`--aws-sigv4`选项（在 curl 7.75 或更高版本中可用）对请求进行签名。在运行命令之前，请将您的 AWS 凭证设置为环境变量：`AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY`、和`AWS_SESSION_TOKEN`（如果使用临时证书）。

# OpenSearch UI 端点和配额
<a name="opensearch-ui-endpoints-quotas"></a>

要以编程方式连接到 AWS 服务，请使用终端节点。服务限额（也称为限制）是 AWS 账户使用的服务资源或操作的最大数量。

Amazon OpenSearch UI 是 OpenSearch控制面板的下一代 OpenSearch 用户界面。它提供了用于访问 OpenSearch 仪表板的端点。使用本主题查找 OpenSearch UI 的服务端点和服务配额。

有关其他 OpenSearch 服务的更多信息，请参阅[服务终端节点和配额](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html)。

## OpenSearch 用户界面端点
<a name="opensearch-ui-endpoints"></a>

OpenSearch UI 在以下区域可用：


| 区域名称 | 区域 | 端点 | 协议 | 
| --- | --- | --- | --- | 
| 亚太地区（孟买） | ap-south-1 |  opensearch.ap-south-1.amazonaws.com es.ap-south-1.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲地区（巴黎） | eu-west-3 |  opensearch.eu-west-3.amazonaws.com es.eu-west-3.amazonaws.com  |  HTTPS HTTPS  | 
| 美国东部（俄亥俄州） | us-east-2 |  opensearch.us-east-2.amazonaws.com es.us-east-2.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲地区（爱尔兰） | eu-west-1 |  opensearch.eu-west-1.amazonaws.com es.eu-west-1.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲地区（法兰克福） | eu-central-1 |  opensearch.eu-central-1.amazonaws.com es.eu-central-1.amazonaws.com  |  HTTPS HTTPS  | 
| 南美洲（圣保罗） | sa-east-1 |  opensearch.sa-east-1.amazonaws.com es.sa-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 美国东部（弗吉尼亚州北部） | us-east-1 |  opensearch.us-east-1.amazonaws.com es.us-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲地区（伦敦） | eu-west-2 |  opensearch.eu-west-2.amazonaws.com es.eu-west-2.amazonaws.com  |  HTTPS HTTPS  | 
| 亚太地区（东京） | ap-northeast-1 |  opensearch.ap-northeast-1.amazonaws.com es.ap-northeast-1.amazonaws.com  |  HTTPS HTTPS  | 
| 美国西部（俄勒冈州） | us-west-2 |  opensearch.us-west-2.amazonaws.com es.us-west-2.amazonaws.com  |  HTTPS HTTPS  | 
| 亚太地区（新加坡） | ap-southeast-1 |  opensearch.ap-southeast-1.amazonaws.com es.ap-southeast-1.amazonaws.com  |  HTTPS HTTPS  | 
| 亚太地区（悉尼） | ap-southeast-2 |  opensearch.ap-southeast-2.amazonaws.com es.ap-southeast-2.amazonaws.com  |  HTTPS HTTPS  | 
| 加拿大（中部） | ca-central-1 |  opensearch.ca-central-1.amazonaws.com es.ca-central-1.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲地区（斯德哥尔摩） | eu-north-1 |  opensearch.eu-north-1.amazonaws.com es.eu-north-1.amazonaws.com  |  HTTPS HTTPS  | 
| 亚太地区（香港） | ap-east-1 |  opensearch.ap-east-1.amazonaws.com es.ap-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 亚太地区（首尔） | ap-northeast-2 |  opensearch.ap-northeast-2.amazonaws.com es.ap-northeast-2.amazonaws.com  |  HTTPS HTTPS  | 
| 亚太地区（大阪） | ap-northeast-3 |  opensearch.ap-northeast-3.amazonaws.com es.ap-northeast-3.amazonaws.com  |  HTTPS HTTPS  | 
| 亚太地区（海得拉巴） | ap-south-2 |  opensearch.ap-south-2.amazonaws.com es.ap-south-2.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲（西班牙） | eu-south-2 |  opensearch.eu-south-2.amazonaws.com es.eu-south-2.amazonaws.com  |  HTTPS HTTPS  | 
| 美国西部（北加利福尼亚） | us-west-1 |  opensearch.us-west-1.amazonaws.com es.us-west-1.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲（苏黎世） | eu-central-2 |  opensearch.eu-central-2.amazonaws.com es.eu-central-2.amazonaws.com  |  HTTPS HTTPS  | 
| 欧洲地区（米兰） | eu-south-1 |  opensearch.eu-south-1.amazonaws.com es.eu-south-1.amazonaws.com  |  HTTPS HTTPS  | 

## OpenSearch 用户界面服务配额
<a name="opensearch-ui-dashboards-quotas"></a>

您的 AWS 账户具有以下与 OpenSearch 界面资源相关的配额。


| Name | 默认值 | 可调整 | 注意 | 
| --- | --- | --- | --- | 
| OpenSearch 每个区域每个账户的 UI 应用程序 | 30 | 是 |  每个区域每个账户可以创建的最大 OpenSearch 用户界面应用程序数量。 您可以通过服务配额将限制提高至 50，并获得自动批准。如需申请更高限额，请提交支持工单。  | 