本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon OpenSearch 擷取中設定角色和使用者
Amazon OpenSearch 擷取使用各種許可模型和 IAM 角色,以允許來源應用程式寫入管道,並允許管道寫入接收器。在開始擷取資料之前,您需要根據使用案例建立具有特定許可的一或多個 IAM 角色。
至少需要下列角色才能設定成功的管道。
下圖示範典型的管道設定,其中 Amazon S3 或 Fluent Bit 等資料來源正在寫入不同帳戶中的管道。在此情況下,用戶端必須擔任擷取角色才能存取管線。如需詳細資訊,請參閱跨帳戶擷取。
![](images/pipeline-security.png)
如需簡單設定指南,請參閱教學課程:使用 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 服務網域還是 OpenSearch 無伺服器集合。
此外,管道可能需要從來源應用程式提取權限 (如果來源是提取式外掛程式),以及寫入 S3 無效字母佇列的權限 (如果已設定)。
寫入網域接收器
OpenSearch 擷取管線需要寫入設定為接收器的 OpenSearch Service 網域的權限。這些權限包括描述網域並向其傳送 HTTP 要求的功能。
為了向管道提供寫入接收器所需的權限,請先建立具有所需權限的 AWS Identity and Access Management (IAM) 角色。這些權限對於公用和 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 無伺服器集合。這些權限包括描述集合並向其傳送 HTTP 要求的能力。
首先,建立具有所有資源aoss:BatchGetCollection
權限的 IAM 角色 (*
)。然後,將此角色包含在資料存取原則中,並提供建立索引、更新索引、描述索引和寫入集合中文件的權限。最後,指定角色 ARN 作為管線組態中 sts_role_arn 選項的值。
如需完成上述每個步驟的指示,請參閱允許管道存取集合。
寫入無效字母佇列
如果將管線設定為寫入無效字母佇列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::
123456789012
:role/pipeline-role
"
擷取角色
OpenSearch 擷取目前支援的所有來源外掛程式 (S3 除外) 都使用以推送為基礎的架構。這表示來源應用程式會將資料推送至管線,而不是從來源提取資料的管線。
因此,您必須授與來源應用程式所需的權限,才能將資料 OpenSearch 擷取至 Intection 管線。簽署請求的角色至少必須獲得osis:Ingest
動作的權限,以允許其將資料傳送至管線。公用和 VPC 管線端點需要相同的權限。
下列範例原則可讓相關聯的主體將資料內嵌至名為my-pipeline
的單一管線:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermitsWriteAccessToPipeline", "Effect": "Allow", "Action": "osis:Ingest", "Resource": "arn:aws:osis:
us-west-2
:{your-account-id}
:pipeline/my-pipeline
" } ] }
如需詳細資訊,請參閱使用 Amazon OpenSearch 擷取管道整合。
跨帳戶擷取
您可能需要將資料從不同的管道內嵌AWS 帳戶,例如應用程式帳戶。若要設定跨帳戶擷取,請在與管道相同的帳戶內定義擷取角色,並在擷取角色和應用程式帳戶之間建立信任關係:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
{external-account-id}
:root" }, "Action": "sts:AssumeRole" }] }
然後,將您的應用程式設定為擔任擷取角色。應用程式帳戶必須授與管線帳戶中擷取角色的應用程式角色AssumeRole權限。
如需詳細步驟和 IAM 政策範例,請參閱提供跨帳戶擷取存取。