

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

# 设置亚马逊 OpenSearch 服务权限
<a name="opensearch-granting-access-managed"></a>

如果您使用亚马逊 OpenSearch 服务，则必须能够从您的 OpenSearch 服务域访问您的 Amazon Personalize 资源。

**设置 权限**

1. 根据您的资源是在相同账户还是不同账户中，创建一个或多个有权访问资源的 IAM 服务角色。
   +  如果您的 OpenSearch 服务和 Amazon Personalize 资源位于同一个账户中，则您可以为服务创建 IAM 服务角色，并授予其从您的 Amazon P OpenSearch ersonalize 活动中获得个性化排名的权限。有关更多信息，请参阅 [当资源位于同一账户时配置权限](service-role-managed.md)。
   + 如果您的 OpenSearch 服务和 Amazon Personalize 资源位于不同的账户中，则可以创建两个 IAM 服务角色。您可以使用您的 OpenSearch 服务资源在账户中创建一个账户，并授予其访问您的 OpenSearch 服务资源的权限。然后在 Amazon Personalize 资源账户中创建一个角色，并向其授予从 Amazon Personalize 市场活动中获得个性化排名的权限。有关更多信息，请参阅 [当资源位于不同账户时配置权限](configuring-multiple-accounts.md)。

1. 向访问您的 OpenSearch 服务域的用户或角色授予您为服务创建的 IAM OpenSearch 服务角色的`PassRole`权限。有关更多信息，请参阅 [配置亚马逊 OpenSearch 服务域安全](domain-user-managed.md)。

设置权限之后，就可以将插件安装到您的域中。有关更多信息，请参阅 [安装插件](open-search-install-managed.md)。

**Topics**
+ [

# 当资源位于同一账户时配置权限
](service-role-managed.md)
+ [

# 当资源位于不同账户时配置权限
](configuring-multiple-accounts.md)
+ [

# 配置亚马逊 OpenSearch 服务域安全
](domain-user-managed.md)

# 当资源位于同一账户时配置权限
<a name="service-role-managed"></a>

如果您的 OpenSearch 服务和 Amazon Personalize 资源位于同一个账户中，则必须为服务创建 IAM OpenSearch 服务角色。此角色必须拥有权限才能从 Amazon Personalize 市场活动中获得个性化排名。要向您的 OpenSearch 服务服务角色授予权限，才能从您的 Amazon Personalize 活动中获得个性化排名，需要满足以下条件：
+ 角色的信任策略必须授予 OpenSearch 服务`AssumeRole`权限。有关信任策略示例，请参阅[信任策略示例](#opensearch-granting-access-managed-trust-policy)。
+ 此角色必须拥有权限才能从 Amazon Personalize 市场活动中获得个性化排名。有关策略示例，请参阅[权限策略示例](#opensearch-granting-access-managed-permissions-policy)。

有关创建 IAM 角色的信息，请参阅《IAM 用户指南》**中的[创建 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)。有关将 IAM 策略附加到角色的信息，请参阅《IAM 用户指南》**中的[添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

为服务创建 IAM OpenSearch 服务角色后，您必须向访问您的 OpenSearch 服务域的用户或角色授予该 OpenSearch 服务角色的`PassRole`权限。有关更多信息，请参阅 [配置亚马逊 OpenSearch 服务域安全](domain-user-managed.md)。

**Topics**
+ [

## 信任策略示例
](#opensearch-granting-access-managed-trust-policy)
+ [

## 权限策略示例
](#opensearch-granting-access-managed-permissions-policy)

## 信任策略示例
<a name="opensearch-granting-access-managed-trust-policy"></a>

以下信任策略示例授予 OpenSearch 服务`AssumeRole`权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "",
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Principal": {
            "Service": [
                "es.amazonaws.com"
            ]
        }
    }]
}
```

------

## 权限策略示例
<a name="opensearch-granting-access-managed-permissions-policy"></a>

以下策略示例向该角色授予从 Amazon Personalize 市场活动中获得个性化排名的最低权限。对于 `Campaign ARN`，为 Amazon Personalize 市场活动指定 Amazon 资源名称 (ARN)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "personalize:GetPersonalizedRanking"
            ],
            "Resource": "arn:aws:personalize:us-east-1:111122223333:campaign/YourResourceId"
        }
    ]
}
```

------

# 当资源位于不同账户时配置权限
<a name="configuring-multiple-accounts"></a>

如果您的 S OpenSearch ervice 和 Amazon Personalize 资源位于不同的账户中，则您可以在每个账户中创建一个 IAM 角色并向该角色授予对账户中资源的访问权限。

**设置多个账户的权限**

1. 在 Amazon Personalize 市场活动所在的账户中，创建一个有权从 Amazon Personalize 市场活动中获取个性化排名的 IAM 角色。配置插件时，可以在 `personalized_search_ranking` 响应处理器的 `external_account_iam_role_arn` 参数中指定此角色的 ARN。有关更多信息，请参阅 [在 Amazon OpenSearch Service 中创建管道](managed-opensearch-plugin-pipeline-example.md)。

   有关策略示例，请参阅[权限策略示例](service-role-managed.md#opensearch-granting-access-managed-permissions-policy)。

1. 在您的 OpenSearch 服务域所在的账户中，创建一个具有授予 OpenSearch 服务`AssumeRole`权限的信任策略的角色。配置插件时，可以在 `personalized_search_ranking` 响应处理器的 `iam_role_arn` 参数中指定此角色的 ARN。有关更多信息，请参阅 [在 Amazon OpenSearch Service 中创建管道](managed-opensearch-plugin-pipeline-example.md)。

   有关信任策略示例，请参阅[信任策略示例](service-role-managed.md#opensearch-granting-access-managed-trust-policy)。

1. 修改每个角色以向其他角色授予 `AssumeRole` 权限。例如，对于有权访问您的 Amazon Personalize 资源的角色，其 IAM 策略将向账户中具有 OpenSearch 服务域的角色授予担任角色的权限，如下所示：

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [{
           "Sid": "",
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/roleName"
            
       }]
   }
   ```

------

1. 在您的 OpenSearch 服务域所在的账户中，向访问您的 OpenSearch 服务域的用户或角色授予您刚刚创建的 OpenSearch 服务角色的`PassRole`权限。有关更多信息，请参阅 [配置亚马逊 OpenSearch 服务域安全](domain-user-managed.md)。

# 配置亚马逊 OpenSearch 服务域安全
<a name="domain-user-managed"></a>

要将插件与 S OpenSearch ervice 配合使用，访问您域的用户或角色必须拥有您刚刚创建的 Service [的 IAM OpenSearch 服务角色的`PassRole`](service-role-managed.md)权限。此外，此用户或角色必须具有执行 `es:ESHttpGet` 和 `es:ESHttpPut` 操作的权限。

有关配置 OpenSearch 服务访问权限的信息，请参阅《[亚马逊 OpenSearch 服务*开发者指南》中的 “亚马逊 OpenSearch 服务*安全](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/security.html)”。有关策略示例，请参阅 [OpenSearch 服务用户或角色的策略示例](#opensearch-domain-user-policy-examples)。

## OpenSearch 服务用户或角色的策略示例
<a name="opensearch-domain-user-policy-examples"></a>

以下 IAM 策略示例向用户或角色`PassRole`授予您为服务创建的 IAM OpenSearch 服务角色的权限[当资源位于同一账户时配置权限](service-role-managed.md)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService"
        }
    ]
}
```

------

以下 IAM 策略授予使用 S OpenSearch ervice 创建管道和搜索查询的最低权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpPut"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:ResourceTag/environment": [
                        "production"
                    ]
                }
            }
        }
    ]
}
```

------