在 Amazon OpenSearch Ingestion 中設定角色和使用者 - Amazon OpenSearch Service

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

在 Amazon OpenSearch Ingestion 中設定角色和使用者

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

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

名稱 描述
管理角色

管理管道 (通常為「pipeline admin」) 的任何主體都需要管理存取權,其中包括 osis:CreatePipeline和 等許可osis:UpdatePipeline。這些許可允許使用者管理管道,但不一定會寫入資料。

管道角色

您在管道YAML的組態中指定的管道角色為管道提供寫入網域或集合接收端並從提取型來源讀取所需的許可。如需詳細資訊,請參閱下列主題:

擷取角色

擷取角色包含管道資源的osis:Ingest許可。此許可允許以推送為基礎的來源將資料擷取到管道中。

下圖顯示典型管道設定,例如 Amazon S3 或 Fluent Bit 的資料來源正在寫入不同帳戶中的管道。在此情況下,用戶端需要擔任擷取角色,才能存取管道。如需詳細資訊,請參閱跨帳戶擷取

Cross-account data ingestion pipeline showing client application, roles, and OpenSearch sink.

如需簡單的設定指南,請參閱 教學課程:使用 Amazon OpenSearch 擷取將資料導入網域

管理角色

除了建立和修改管道所需的基本osis:*許可之外,您也需要管道角色資源的iam:PassRole許可。任何接受角色 AWS 服務 的人都必須使用此許可。 OpenSearch 每次需要將資料寫入至接收器時,擷取都會擔任該角色。這有助於管理員確保只有核准的使用者可以使用授予許可的角色來設定 OpenSearch 擷取。如需詳細資訊,請參閱授予使用者將角色傳遞至 的許可 AWS 服務

如果您使用 AWS Management Console (使用藍圖和稍後檢查管道),則需要下列許可才能建立和更新管道:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:CreatePipeline", "osis:GetPipelineBlueprint", "osis:ListPipelineBlueprints", "osis:GetPipeline", "osis:ListPipelines", "osis:GetPipelineChangeProgress", "osis:ValidatePipeline", "osis:UpdatePipeline" ] }, { "Resource":[ "arn:aws:iam::your-account-id:role/pipeline-role" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

如果您使用 AWS CLI (未預先驗證管道或使用藍圖),則需要下列許可才能建立和更新管道:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:CreatePipeline", "osis:UpdatePipeline" ] }, { "Resource":[ "arn:aws:iam::your-account-id:role/pipeline-role" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

管道角色

管道需要特定許可才能寫入其接收器。這些許可取決於接收端是 OpenSearch Service 網域還是 OpenSearch Serverless 集合。

此外,管道可能需要許可才能從來源應用程式提取 (如果來源是提取型外掛程式),以及如果已設定,寫入 S3 無效字母佇列的許可。

寫入網域接收端

OpenSearch 擷取管道需要許可,才能寫入設定為其接收端 OpenSearch 的服務網域。這些許可包括描述網域並向其傳送HTTP請求的功能。

若要為您的管道提供寫入接收器所需的許可,請先建立具有所需許可 的 AWS Identity and Access Management (IAM) 角色。 步驟 1:建立管線角色這些許可對公有和VPC管道而言是相同的。然後,在網域存取政策中指定管道角色,讓網域可以接受來自管道的寫入請求。

最後,在管道組態中將角色指定ARN為 sts_role_arn 選項的值:

version: "2" source: http: ... processor: ... sink: - opensearch: ... aws: sts_role_arn: arn:aws:iam::your-account-id:role/pipeline-role

如需完成每個步驟的指示,請參閱允許管道存取網域

寫入集合接收器

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

首先,建立具有對所有資源 () aoss:BatchGetCollection許可IAM的角色*。然後,在資料存取政策中包含此角色,並提供其在集合中建立索引、更新索引、描述索引和寫入文件的許可。最後,在管道組態中將角色指定ARN為 sts_role_arn 選項的值。

如需完成每個步驟的指示,請參閱允許管道存取集合

寫入無效字母佇列

如果您將管道設定為寫入無效字母佇列 (DLQ),則必須在DLQ組態中包含 sts_role_arn選項。此角色中包含的許可允許管道存取您指定為DLQ事件目的地的 S3 儲存貯體。

您必須在所有管道元件sts_role_arn中使用相同的 。因此,您必須將單獨的許可政策連接至提供DLQ存取權的管道角色。至少,必須允許角色對儲存貯體資源S3:PutObject執行動作:

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

然後,您可以在管道的DLQ組態中指定角色:

... sink: opensearch: dlq: s3: bucket: "my-dlq-bucket" key_path_prefix: "dlq-files" region: "us-west-2" sts_role_arn: "arn:aws:iam::your-account-id:role/pipeline-role"

擷取角色

OpenSearch 除了 S3 之外,Ingestion 目前支援的所有來源外掛程式都使用以推送為基礎的架構。這表示來源應用程式會將資料推送到管道,而不是從來源提取資料的管道。

因此,您必須授予來源應用程式必要的許可,才能將資料擷取至 OpenSearch 擷取管道。至少,簽署請求的角色必須授予osis:Ingest動作的許可,允許其將資料傳送至管道。公有和VPC管道端點需要相同的許可。

下列範例政策允許相關聯的主體將資料擷取至名為 的單一管道my-pipeline

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermitsWriteAccessToPipeline", "Effect": "Allow", "Action": "osis:Ingest", "Resource": "arn:aws:osis:region:your-account-id:pipeline/pipeline-name" } ] }

如需詳細資訊,請參閱將 Amazon OpenSearch Ingestion 管道與其他 服務和應用程式整合

跨帳戶擷取

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

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

然後,將應用程式設定為擔任擷取角色。應用程式帳戶必須授予管道帳戶中擷取角色的應用程式角色AssumeRole許可。

如需詳細步驟和範例IAM政策,請參閱 提供跨帳戶擷取存取權