

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

# 向 Amazon OpenSearch Ingestion 管道授予对域名的访问权限
<a name="pipeline-domain-access"></a>

Amazon OpenSearch Ingestion 管道需要权限才能写入配置为其接收器的 OpenSearch 服务域。要提供访问权限，您需要为一个 AWS Identity and Access Management (IAM) 角色配置一个限制性权限策略，该策略限制了对管道向其发送数据的域的访问权限。例如，您可能希望将摄取管道限制为仅含支持其用例所需的域和索引。

**重要**  
您可以选择手动创建管道角色，也可以让 OpenSearch Ingestion 在创建管道期间为您创建该角色。如果您选择自动创建角色， OpenSearch Ingestion 会根据您选择的来源和接收器将所有必需的权限添加到管道角色访问策略中。OpenSearch Ingestion 会使用您输入的前缀 `OpenSearchIngestion-` 和后缀，在 IAM 中创建管道角色。有关更多信息，请参阅 [管道角色](pipeline-security-overview.md#pipeline-security-sink)。  
如果您让 OpenSearch Ingestion 为您创建管道角色，则在创建管道之前或之后，您仍然需要将该角色包含在域访问策略中，并将其映射到后端角色（如果该域使用精细访问控制）。有关说明，请参阅步骤 2。

**Topics**
+ [步骤 1：创建管道角色](#pipeline-access-configure)
+ [步骤 2：为域配置数据访问权限](#pipeline-access-domain)

## 步骤 1：创建管道角色
<a name="pipeline-access-configure"></a>

管道角色必须具有允许其向域接收器发送数据的附加权限策略。它还必须具有允许 OpenSearch Ingestion担任该角色的信任关系。有关如何附加角色策略的说明，请参阅 *IAM 用户指南*中的[添加 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)。

以下示例策略演示您可以在管道角色中授予的[最低权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)，使其能够向单个域写入数据：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "es:DescribeDomain",
            "Resource": "arn:aws:es:*:111122223333:domain/*"
        },
        {
            "Effect": "Allow",
            "Action": "es:ESHttp*",
            "Resource": "arn:aws:es:*:111122223333:domain/domain-name/*"
        }
    ]
}
```

------

如果计划重用角色写入多个域，则可以将域名替换为通配符（`*`）来扩大策略范围。

该角色必须具有以下[信任关系](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)，这允许 OpenSearch Ingestion 担任管道角色：

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

****  

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

------

## 步骤 2：为域配置数据访问权限
<a name="pipeline-access-domain"></a>

为使管道能够将数据写入域，域必须具有[域级访问策略](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html#ac-types-resource)，以允许管道角色访问域。

以下示例域访问策略允许名为 `pipeline-role` 的管道角色向名为 `ingestion-domain` 的域写入数据：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/pipeline-role"
            },
            "Action": [
                "es:DescribeDomain",
                "es:ESHttp*"
            ],
            "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*"
        }
    ]
}
```

------

### 映射管道角色（仅适用于使用精细访问控制的域）
<a name="pipeline-access-domain-fgac"></a>

如果您的域使用[精细访问控制](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html)进行身份验证，则需要采取额外步骤，为管道提供域访问权限。步骤因域配置而异：
+ **场景 1：不同的主角色和管道角色** — 如果您使用 IAM Amazon 资源名称 (ARN) 作为主用户，并且该名称与管道角色*不同*，则需要将管道角色映射到 OpenSearch`all_access`后端角色。这会将管道角色添加为其他主用户。有关更多信息，请参阅[其他主用户](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html#fgac-more-masters)。
+ **场景 2：内部用户数据库中的主用户**-如果您的域使用内部用户数据库中的主用户和 OpenSearch 仪表板的 HTTP 基本身份验证，则无法将主用户名和密码直接传递到工作流配置中。而是将管道角色映射到后 OpenSearch`all_access`端角色。这会将管道角色添加为其他主用户。有关更多信息，请参阅[其他主用户](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html#fgac-more-masters)。
+ **场景 3：主角色与管道角色相同（不常见）**：如果您使用 IAM ARN 作为主用户，且主用户与作为管道角色的 ARN 相同，则无需采取任何进一步的操作。管道具有写入域所需的权限。此场景并不常见，因为绝大多数环境使用管理员角色或其他角色作为主角色。

下图显示了如何将管道角色映射到后端角色：

![\[Backend roles section showing an AWSIAM role ARN for a pipeline role with a Remove option.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/ingestion-fgac.png)
