View a markdown version of this page

CloudWatch 管道 IAM 政策和許可 - Amazon CloudWatch

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

CloudWatch 管道 IAM 政策和許可

本節提供 CloudWatch 管道的 IAM 需求。許可會根據您的資料來源和整合方法而有所不同。

下表可協助您識別哪些 IAM 區段適用於您的使用案例。

使用案例 整合方法 管道組態中的來源類型 您需要的 IAM 區段
第三方整合 (API Pull) 管道使用儲存的登入資料從廠商 API 提取 microsoft_office365okta_ssopalo_alto_ngfw 等等 API 呼叫者許可 + 第三方來源 (API Pull) + 資源政策
第三方整合 (S3 交付) 供應商將檔案交付到您的 S3 儲存貯體 s3 API 呼叫者許可 + 第三方來源 (S3 交付) + 資源政策
來自 S3 的自訂資料 您的應用程式寫入 S3,管道會從儲存貯體讀取 s3 API 呼叫者許可 + 來自 S3 的自訂資料 + 資源政策
來自 CloudWatch Logs 的自訂資料 您的應用程式會記錄到 CloudWatch Logs 日誌群組 cloudwatch_logs API 呼叫者許可 + 來自 CloudWatch Logs 的自訂資料
已取代 AWS 的服務日誌 AWS 服務會將日誌交付至 CloudWatch Logs (VPC 流程日誌,Route 53) cloudwatch_logs API 呼叫者許可 + 已取代 AWS 的服務日誌
注意

S3-based來源 (s3) 在管道建立後需要資源政策。CloudWatch Logs 來源 (cloudwatch_logs) 不會。

API 呼叫者許可

呼叫 的 IAM 主體CreateTelemetryPipeline需要管道組態中參考之任何角色的iam:PassRole許可。

範例 PassRole 政策範本
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForPipelineSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-source-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "service-principal" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }

根據您的使用案例,將 service-principal 取代為下表中的值。

使用案例 服務主體值
第三方 (API Pull) telemetry-pipelines.observabilityadmin.amazonaws.com
第三方 (S3 交付) telemetry-pipelines.observabilityadmin.amazonaws.com
來自 S3 的自訂資料 telemetry-pipelines.observabilityadmin.amazonaws.com
來自 CloudWatch Logs 的自訂資料 logs.amazonaws.com
已取代 AWS 的服務日誌 logs.amazonaws.com
注意

建議使用 Condition區塊,但為選用。如果沒有,角色可以傳遞給任何 服務。

管道規則許可 (僅限 CloudWatch Logs 來源)

使用 cloudwatch_logs做為來源時,API 呼叫者也需要管道規則操作的許可。CreateTelemetryPipelineUpdateTelemetryPipeline操作需要 logs:PutPipelineRule許可。DeleteTelemetryPipeline 操作需要 logs:DeletePipelineRule許可。

範例 CloudWatch Logs 管道規則的 IAM 政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PipelineRuleForCloudWatchLogs", "Effect": "Allow", "Action": [ "logs:PutPipelineRule", "logs:DeletePipelineRule" ], "Resource": "*" } ] }

來源角色政策

每個管道都需要服務擔任的專用 IAM 角色,才能讀取您的資料。以下小節提供每個使用案例的完整政策 (許可和信任)。

第三方來源 (API Pull)

本節適用於 Microsoft Office 365、Microsoft Entra ID、Okta SSO、Palo Alto NGFW,以及將登入資料存放在 AWS Secrets Manager 中的其他廠商 API 整合。

許可政策

下列政策允許 角色擷取您儲存的 API 登入資料。

範例 Secrets Manager 來源的 IAM 政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "secrets-manager-access", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:your-region:your-account-id:secret:your-secret-name*" }, { "Sid": "kms-access", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:your-region:your-account-id:key/your-key-id" } ] }
注意

只有在 Secrets Manager 中的秘密使用客戶受管 KMS 金鑰加密時,才需要 kms:Decrypt陳述式。

信任政策

範例 API 提取來源的信任政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

完成 API Pull 管道的 IAM 設定

下列範例顯示建立第三方 API 端對端提取管道所需的所有 IAM 政策。

來電者身分政策 — 連接至呼叫 的委託人CreateTelemetryPipeline

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateApiPullPipeline", "Effect": "Allow", "Action": [ "observabilityadmin:CreateTelemetryPipeline", "iam:PassRole" ], "Resource": "*" } ] }

來源角色許可政策 — 連接至管道擔任的角色:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:your-region:your-account-id:secret:your-secret-name*" } ] }

來源角色信任政策

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

建立管道之後,您還必須在 5 分鐘內建立資源政策。請參閱 資源政策

注意

對於生產用途,請使用 中顯示的條件索引鍵iam:PassRole縮小範圍API 呼叫者許可。如果您的秘密使用客戶管理的 KMS 金鑰,請將 kms:Decrypt新增至來源角色許可政策。

第三方來源 (S3 交付)

本節適用於將日誌檔案交付至 S3 儲存貯體的任何第三方廠商 (例如 CrowdStrike Falcon、Wiz 或 Cisco Umbrella)。

許可政策

下列政策允許角色從 S3 讀取物件並使用 SQS 通知。

範例 S3 來源的 IAM 政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3-access", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::your-bucket-name/*" }, { "Sid": "sqs-access", "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:ChangeMessageVisibility" ], "Resource": "arn:aws:sqs:your-region:your-account-id:your-queue-name" }, { "Sid": "kms-access", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:your-region:your-account-id:key/your-key-id" } ] }
注意

只有當您的 S3 儲存貯體或 SQS 佇列使用客戶管理的 KMS 金鑰進行加密時,才需要 kms:Decrypt陳述式。

信任政策

範例 S3 交付來源的信任政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

完成 S3 交付管道的 IAM 設定

下列範例顯示建立端對端 S3 交付管道所需的所有 IAM 政策。

來電者身分政策 — 連接至呼叫 的委託人CreateTelemetryPipeline

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateS3Pipeline", "Effect": "Allow", "Action": [ "observabilityadmin:CreateTelemetryPipeline", "iam:PassRole" ], "Resource": "*" } ] }

來源角色許可政策 — 連接至管道擔任的角色:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Access", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::your-bucket-name/*" }, { "Sid": "SqsAccess", "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:ChangeMessageVisibility" ], "Resource": "arn:aws:sqs:your-region:your-account-id:your-queue-name" } ] }

來源角色信任政策

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

建立管道之後,您還必須在 5 分鐘內建立資源政策。請參閱 資源政策

注意

對於生產用途,請使用 中顯示的條件索引鍵iam:PassRole縮小範圍API 呼叫者許可。如果您的 S3 儲存貯體或 SQS 佇列使用客戶管理的 KMS 金鑰,請將 kms:Decrypt新增至來源角色許可政策。

來自 S3 的自訂資料

本節適用於您自己的應用程式或基礎設施,將日誌檔案寫入 S3 儲存貯體。

IAM 設定與 相同第三方來源 (S3 交付)。使用相同的許可政策和信任政策。無論誰撰寫資料,管道都會透過 SQS 事件通知從儲存貯體讀取。

來自 CloudWatch Logs 的自訂資料

本節適用於您自己的應用程式記錄到 CloudWatch Logs 日誌群組 (例如 Lambda 函數、ECS 容器或自訂 EC2 應用程式)。

許可政策

下列政策允許 角色處理來自您指定日誌群組的日誌。

範例 CloudWatch Logs 來源的 IAM 政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "logs-processing-access", "Effect": "Allow", "Action": [ "logs:processWithPipeline" ], "Resource": [ "arn:aws:logs:your-region:your-account-id:log-group:your-log-group-01", "arn:aws:logs:your-region:your-account-id:log-group:your-log-group-02" ] } ] }

您可以使用 logs:data_source_namelogs:data_source_type條件金鑰來限制哪些管道來源可以叫用轉換,藉此縮小此許可的範圍。此logs:data_source_name值對應至管道組態data_source_name中的 ,並logs:data_source_type對應至管道組態data_source_type中的 。

範例 CloudWatch Logs 來源的許可政策 (使用條件索引鍵縮小範圍)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowProcessWithPipelineScopedDown", "Effect": "Allow", "Action": "logs:ProcessWithPipeline", "Resource": "arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name", "Condition": { "StringEquals": { "aws:ResourceAccount": "your-account-id", "logs:data_source_name": "your-source-name", "logs:data_source_type": "your-source-type" } } } ] }
注意

CloudWatch Logs 來源的 IAM 角色需要信任政策 (logs.amazonaws.com允許 擔任角色) 和許可政策 (授予 logs:ProcessWithPipeline)。如果沒有這兩個政策,CloudWatch 管道無法在擷取期間轉換日誌事件。

信任政策

範例 CloudWatch Logs 來源的信任政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
注意

CloudWatch Logs 來源管道不需要資源政策。

完成 CloudWatch Logs 管道的 IAM 設定

下列範例顯示建立 CloudWatch Logs 管道端對端所需的所有 IAM 政策。

來電者身分政策 — 連接至呼叫 的委託人CreateTelemetryPipeline

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateLogsPipeline", "Effect": "Allow", "Action": [ "observabilityadmin:CreateTelemetryPipeline", "logs:PutPipelineRule", "logs:DeletePipelineRule", "iam:PassRole" ], "Resource": "*" } ] }

來源角色許可政策 — 連接至管道擔任的角色:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LogsProcessing", "Effect": "Allow", "Action": [ "logs:processWithPipeline" ], "Resource": [ "arn:aws:logs:your-region:your-account-id:log-group:your-log-group" ] } ] }

來源角色信任政策

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
注意

對於生產用途,請使用 中顯示的條件索引鍵iam:PassRole縮小範圍API 呼叫者許可

已取代 AWS 的服務日誌

本節適用於交付至 CloudWatch Logs AWS 的服務日誌,例如 VPC Flow Logs、Route 53 查詢日誌和其他 AWS 付費日誌類型。

IAM 設定與 相同來自 CloudWatch Logs 的自訂資料。使用相同的許可政策 (logs:processWithPipeline範圍限定於日誌群組) 和相同的信任政策 (logs.amazonaws.com)。

由於這會使用cloudwatch_logs來源類型,呼叫者也需要 logs:PutPipelineRulelogs:DeletePipelineRule許可。請參閱 管道規則許可 (僅限 CloudWatch Logs 來源)

資源政策

S3-based來源和 Secrets Manager 型來源 (第三方整合) 需要 CloudWatch Logs 資源政策。CloudWatch Logs 來源 (自訂資料或付費日誌) 不需要資源政策。

呼叫 後CreateTelemetryPipeline,您會收到管道 ARN。然後,您必須呼叫 logs:PutResourcePolicy 以允許 CloudWatch 管道服務主體寫入設定的日誌群組。

時序限制條件

收到管道 ARN 後,您有不到 5 分鐘的時間可以建立此資源政策。如果管道在政策到位之前變成作用中,則會捨棄資料。

範例 log:PutResourcePolicy 請求
{ "policyName": "resourceArn=arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*", "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/your-pipeline-id" } } } ] } }

管理資源政策

使用 AWS CLI 建立或更新 CloudWatch 管道的 CloudWatch Logs 資源政策。

檢查現有政策

aws logs describe-resource-policies \ --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*

建立新的政策

aws logs put-resource-policy \ --region your-region \ --policy-name "resourceArn=arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*" \ --policy-document file://policy.json

與現有政策合併

如果資源政策已存在,請將新陳述式新增至政策文件中的現有Statement陣列,然後使用合併的檔案put-resource-policy再次呼叫 。

  1. 擷取現有的政策:

    aws logs describe-resource-policies \ --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*
  2. 將新陳述式新增至現有Statement陣列:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "existing-service.amazonaws.com" }, "Action": [ "logs:SomeAction" ] }, { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/your-pipeline-id" } } } ] }
  3. 更新政策:

    aws logs put-resource-policy \ --region your-region \ --policy-name "resourceArn=arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*" \ --policy-document file://existing-policy.json

確認政策已成功建立或更新:

aws logs describe-resource-policies \ --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*

取代下列預留位置:

  • your-region – 您的 AWS 區域 (例如 us-east-1)

  • your-account-id – 您的 12 位數 AWS 帳戶 ID

  • your-log-group-name – 您的 CloudWatch Logs 日誌群組名稱

  • your-pipeline-id – 您的遙測管道 ID (由 傳回CreateTelemetryPipeline)

管道條件索引鍵

CloudWatch 管道支援 IAM 條件金鑰,可讓您限制誰可以建立管道,以及哪些帳戶可以擔任來源角色。使用這些條件金鑰在整個組織中強制執行控管政策。

CreateTelemetryPipeline 條件

在身分政策中使用這些條件金鑰,以控制委託人可以建立哪些管道。

observabilityadmin:SourceType

將管道建立限制為特定來源類型。支援的值包括 cloudwatch_logss3okta_ssomicrosoft_office365palo_alto_ngfw

範例依來源類型限制管道建立
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPipelineCreationForSpecificSourceType", "Effect": "Allow", "Action": "observabilityadmin:CreateTelemetryPipeline", "Resource": "*", "Condition": { "StringEquals": { "observabilityadmin:SourceType": "cloudwatch_logs" } } } ] }

來源角色信任政策條件

在來源角色的信任政策中使用這些條件索引鍵,以限制哪些帳戶可以擔任該角色。這可防止混淆代理人攻擊,其中服務可能代表不同的帳戶採取行動。

aws:SourceAccount

將角色假設限制為來自特定 AWS 帳戶的請求。

aws:SourceArn

將角色假設限制為來自特定資源 ARN (例如,日誌群組) 的請求。

範例具有 SourceAccount 條件的信任政策 (CloudWatch Logs 來源)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:your-region:your-account-id:log-group:*" } } } ] }

AI 輔助處理器組態許可

若要在 CloudWatch 管道主控台中使用 AI 輔助處理器組態,IAM 主體必須具有 logs:GeneratePipeline許可。此許可授權從自然語言描述產生處理器組態。

範例 AI 輔助處理器組態的 IAM 政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGeneratePipeline", "Effect": "Allow", "Action": "logs:GeneratePipeline", "Resource": "*" } ] }