

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon OpenSearch 擷取中設定角色和使用者
<a name="pipeline-security-overview"></a>

Amazon OpenSearch Ingestion 使用各種許可模型和 IAM 角色，以允許來源應用程式寫入管道，並允許管道寫入接收器。您必須先根據您的使用案例建立具有特定許可的一或多個 IAM 角色，才能開始擷取資料。

至少需要下列角色才能設定成功的管道。


| 名稱 | 描述 | 
| --- | --- | 
| [**管道角色**](#pipeline-security-sink) | 管道角色為管道提供從來源讀取和寫入網域或集合目的地所需的許可。您可以手動建立管道角色，也可以讓 OpenSearch Ingestion 為您建立管道角色。 | 
| [**擷取角色**](#pipeline-security-same-account) | 擷取角色包含管道資源的 `osis:Ingest` 許可。此許可允許以推送為基礎的來源將資料擷取至管道。 | 

下圖示範典型管道設定，例如 Amazon S3 或 Fluent Bit 的資料來源正在寫入不同帳戶中的管道。在這種情況下，用戶端需要擔任擷取角色才能存取管道。如需詳細資訊，請參閱[跨帳戶擷取](#pipeline-security-different-account)。

![從 Fluent Bit 到 STS 的跨帳戶資料流程擔任角色、擷取角色、管道到 OpenSearch 接收。](https://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/pipeline-security.png)


如需簡單的設定指南，請參閱 [教學課程：使用 Amazon OpenSearch Ingestion 將資料擷取至網域](osis-get-started.md)。

**主題**
+ [管道角色](#pipeline-security-sink)
+ [擷取角色](#pipeline-security-same-account)
+ [跨帳戶擷取](#pipeline-security-different-account)

## 管道角色
<a name="pipeline-security-sink"></a>

管道需要特定許可，才能從其來源讀取和寫入其接收器。這些許可取決於用戶端應用程式或寫入管道 AWS 服務 的 ，以及目的地是 OpenSearch Service 網域、OpenSearch Serverless 集合或 Amazon S3。此外，管道可能需要實際從來源應用程式*提取*資料的許可 （如果來源是提取型外掛程式），以及寫入 S3 無效字母佇列的許可，如果啟用的話。

當您建立管道時，您可以選擇指定您手動建立的現有 IAM 角色，或讓 OpenSearch Ingestion 根據您選擇的來源和接收器自動建立管道角色。下圖顯示如何在 中指定管道角色 AWS 管理主控台。

![管道角色區段，其中已選取使用現有 IAM 角色和選擇現有角色下拉式清單。](https://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/pipeline-role.png)


**Topics**
+ [自動化管道角色建立](#pipeline-role-auto-create)
+ [手動建立管道角色](#pipeline-role-manual-create)

### 自動化管道角色建立
<a name="pipeline-role-auto-create"></a>

您可以選擇讓 OpenSearch Ingestion 為您建立管道角色。它會根據設定的來源和目的地，自動識別角色所需的許可。它使用您輸入的字首 和 `OpenSearchIngestion-`建立 IAM 角色。例如，如果您輸入 `PipelineRole`做為尾碼，OpenSearch Ingestion 會建立名為 的角色`OpenSearchIngestion-PipelineRole`。

自動建立管道角色可簡化設定程序，並降低組態錯誤的可能性。透過自動化角色建立，您可以避免手動指派許可，確保套用正確的政策，而不會造成安全設定錯誤的風險。這也可透過強制執行最佳實務來節省時間並增強安全合規性，同時確保多個管道部署之間的一致性。

您只能讓 OpenSearch Ingestion 在 中自動建立管道角色 AWS 管理主控台。如果您使用的是 AWS CLI、OpenSearch Ingestion API 或其中一個 SDKs，則必須指定手動建立的管道角色。

若要讓 OpenSearch Ingestion 為您建立角色，請選取**建立並使用新的服務角色**。

**重要**  
您仍然需要手動修改網域或集合存取政策，以授予管道角色的存取權。對於使用精細存取控制的網域，您還必須將管道角色映射到後端角色。您可以在建立管道之前或之後執行這些步驟。  
如需說明，請參閱下列主題：  
[設定網域的資料存取](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-domain-access.html#pipeline-access-domain)
[設定集合的資料和網路存取](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-domain-access.html#pipeline-collection-acces)

### 手動建立管道角色
<a name="pipeline-role-manual-create"></a>

如果您需要更多控制許可以符合特定安全或合規要求，建議您手動建立管道角色。手動建立可讓您量身打造角色以符合現有的基礎設施或存取管理策略。您也可以選擇手動設定，將角色與其他角色整合， AWS 服務 或確保其符合您的獨特操作需求。

若要選擇手動建立的管道角色，請選取**使用現有的 IAM 角色**，然後選擇現有的角色。角色必須擁有從所選來源接收資料並寫入所選接收器所需的所有許可。下列各節概述如何手動建立管道角色。

**Topics**
+ [從來源讀取的許可](#pipeline-security--source)
+ [寫入網域目的地的許可](#pipeline-security-domain-sink)
+ [寫入集合接收器的許可](#pipeline-security--collection-sink)
+ [寫入 Amazon S3 或無效字母佇列的許可](#pipeline-security-dlq)

#### 從來源讀取的許可
<a name="pipeline-security--source"></a>

OpenSearch 擷取管道需要從指定來源讀取和接收資料的許可。例如，對於 Amazon DynamoDB 來源，它需要許可，例如 `dynamodb:DescribeTable`和 `dynamodb:DescribeStream`。如需常見來源的範例管道角色存取政策，例如 Amazon S3、Fluent Bit 和 OpenTelemetry Collector，請參閱 [將 Amazon OpenSearch Ingestion 管道與其他 服務和應用程式整合](configure-client.md)。

#### 寫入網域目的地的許可
<a name="pipeline-security-domain-sink"></a>

OpenSearch Ingestion 管道需要許可，才能寫入設定為其接收器的 OpenSearch Service 網域。這些許可包括描述網域並向其傳送 HTTP 請求的能力。公有和 VPC 網域的這些許可相同。如需建立管道角色並在網域存取政策中指定該角色的說明，請參閱[允許管道存取網域](pipeline-domain-access.md)。

#### 寫入集合接收器的許可
<a name="pipeline-security--collection-sink"></a>

OpenSearch Ingestion 管道需要許可，才能寫入設定為接收器的 OpenSearch Serverless 集合。這些許可包括描述集合並向其傳送 HTTP 請求的能力。

首先，請確定您的管道角色存取政策授予必要的許可。然後，在資料存取政策中包含此角色，並提供其在集合中建立索引、更新索引、描述索引和寫入文件的許可。如需完成每個步驟的說明，請參閱[允許管道存取集合](pipeline-collection-access.md)。

#### 寫入 Amazon S3 或無效字母佇列的許可
<a name="pipeline-security-dlq"></a>

如果您將 Amazon S3 指定為管道的目的地，或者啟用[無效字母佇列](https://opensearch.org/docs/latest/data-prepper/pipelines/dlq/) (DLQ)，則管道角色必須允許它存取您指定為目的地的 S3 儲存貯體。

將單獨的許可政策連接到提供 DLQ 存取的管道角色。至少必須授予角色對儲存貯體資源`S3:PutObject`的動作：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "WriteToS3DLQ",
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::{{my-dlq-bucket}}/*"
    }
  ]
}
```

------

## 擷取角色
<a name="pipeline-security-same-account"></a>

擷取角色是一種 IAM 角色，可讓外部服務安全地與 OpenSearch Ingestion 管道互動和傳送資料。對於推送型來源，例如 Amazon Security Lake，此角色必須授予將資料推送至管道的許可，包括 `osis:Ingest`。對於提取型來源，例如 Amazon S3，該角色必須啟用 OpenSearch Ingestion 來取得它，並使用必要的許可存取資料。

**Topics**
+ [以推送為基礎的來源的擷取角色](#ingestion-role-push-based)
+ [提取型來源的擷取角色](#ingestion-role-pull-based)
+ [跨帳戶擷取](#pipeline-security-different-account)

### 以推送為基礎的來源的擷取角色
<a name="ingestion-role-push-based"></a>

對於以推送為基礎的來源，資料會從其他服務傳送或推送至擷取管道，例如 Amazon Security Lake 或 Amazon DynamoDB。在此案例中，擷取角色至少需要與管道互動的`osis:Ingest`許可。

下列 IAM 存取政策示範如何將此許可授予擷取角色：

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "osis:Ingest"
      ],
      "Resource": [
        "arn:aws:osis:{{us-east-1}}:{{111122223333}}:pipeline/{{my-pipeline}}",
        "arn:aws:osis:{{us-east-1}}:{{111122223333}}:pipeline/{{my-pipeline}}/*"
      ]
    }
  ]
}
```

### 提取型來源的擷取角色
<a name="ingestion-role-pull-based"></a>

對於提取型來源，OpenSearch Ingestion 管道會主動從外部來源提取或擷取資料，例如 Amazon S3。在此情況下，管道必須擔任 IAM 管道角色，授予存取資料來源的必要許可。在這些案例中，*擷取角色*與*管道角色*同義。

此角色必須包含允許 OpenSearch Ingestion 擔任該角色的信任關係，以及資料來源特定的許可。如需詳細資訊，請參閱[從來源讀取的許可](#pipeline-security--source)。

### 跨帳戶擷取
<a name="pipeline-security-different-account"></a>

您可能需要從不同的管道擷取資料 AWS 帳戶，例如應用程式帳戶。若要設定跨帳戶擷取，請在與管道相同的帳戶中定義擷取角色，並在擷取角色與應用程式帳戶之間建立信任關係：

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

****  

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

------

然後，將應用程式設定為擔任擷取角色。應用程式帳戶必須授予管道帳戶中擷取角色的應用程式角色 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 許可。

如需詳細步驟和範例 IAM 政策，請參閱 [提供跨帳戶擷取存取權](configure-client.md#configure-client-cross-account)。