View a markdown version of this page

Políticas e permissões do IAM para pipelines do CloudWatch - Amazon CloudWatch

Políticas e permissões do IAM para pipelines do CloudWatch

Esta seção fornece os requisitos do IAM para os pipelines do CloudWatch. As permissões variam conforme sua fonte de dados e o método de integração.

A tabela mostrada a seguir ajudará você a identificar quais seções do IAM se aplicam ao seu caso de uso.

Caso de uso Método de integração Tipo de fonte na configuração de pipeline Seções do IAM que você precisa
Integrações de terceiros (API Pull) O pipeline extrai dados da API do fornecedor usando credenciais armazenadas microsoft_office365, okta_sso, palo_alto_ngfw, etc. Permissões do chamador de API + Fontes de terceiros (API Pull) + Políticas de recursos
Integrações de terceiros (entrega S3) O fornecedor entrega arquivos ao seu bucket do S3 s3 Permissões do chamador de API + Fontes de terceiros (entrega S3) + Políticas de recursos
Dados personalizados do S3 Seus aplicativos gravam no S3 e o pipeline lê do bucket s3 Permissões do chamador de API + Dados personalizados do S3 + Políticas de recursos
Dados personalizados do CloudWatch Logs Seus aplicativos se logam a um grupo de logs do CloudWatch Logs cloudwatch_logs Permissões do chamador de API + Dados personalizados do CloudWatch Logs
Logs fornecidos pelo serviço da AWS Os serviços da AWS entregam logs para o CloudWatch Logs (VPC Flow Logs, Route 53) cloudwatch_logs Permissões do chamador de API + Logs fornecidos pelo serviço da AWS
nota

As fontes baseadas em S3 (s3) demandam uma política de recursos após a criação do pipeline. As fontes do CloudWatch Logs (cloudwatch_logs) não.

Permissões do chamador de API

A entidade principal do IAM que chama CreateTelemetryPipeline precisa da permissão iam:PassRole para todas as funções referenciadas na configuração do pipeline.

exemplo Modelo de política do 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/*" ] } } } ] }

Substitua service-principal pelo valor da tabela mostrada a seguir com base no seu caso de uso.

Caso de uso Valor da entidade principal do serviço
Terceiros (API Pull) telemetry-pipelines.observabilityadmin.amazonaws.com
Terceiros (entrega S3) telemetry-pipelines.observabilityadmin.amazonaws.com
Dados personalizados do S3 telemetry-pipelines.observabilityadmin.amazonaws.com
Dados personalizados do CloudWatch Logs logs.amazonaws.com
Logs fornecidos pelo serviço da AWS logs.amazonaws.com
nota

O bloqueio de Condition é recomendado, mas opcional. Sem isso, o perfil pode ser passado para qualquer serviço.

Permissões de regras do pipeline (somente fontes do CloudWatch Logs)

Ao usar cloudwatch_logs como fonte, o chamador da API também precisa de permissões para operações de regras do pipeline. A permissão logs:PutPipelineRule é necessária para as operações CreateTelemetryPipeline e UpdateTelemetryPipeline. A permissão logs:DeletePipelineRule é necessária para as operações DeleteTelemetryPipeline.

exemplo Política do IAM para regras de pipeline do CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PipelineRuleForCloudWatchLogs", "Effect": "Allow", "Action": [ "logs:PutPipelineRule", "logs:DeletePipelineRule" ], "Resource": "*" } ] }

Políticas da função de origem

Cada pipeline exige um perfil do IAM dedicado assumido pelo serviço para ler seus dados. As subseções apresentadas a seguir disponibilizam as políticas completas (permissão e confiança) para cada caso de uso.

Fontes de terceiros (API Pull)

Esta seção se aplica ao Microsoft Office 365, Microsoft Entra ID, Okta SSO, Palo Alto NGFW e a integrações de API de outros fornecedores que armazenam credenciais no Secrets Manager da AWS.

Política de permissão

A política apresentada a seguir permite que a função recupere suas credenciais de API armazenadas.

exemplo Política do IAM para fontes do Secrets Manager
{ "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" } ] }
nota

A instrução kms:Decrypt só é necessária se o seu segredo no Secrets Manager for criptografado com uma chave do KMS gerenciada pelo cliente.

Política de confiança

exemplo Política de confiança para fontes de API Pull
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Configuração completa do IAM para os pipelines de API Pull

O exemplo a seguir mostra todas as políticas do IAM necessárias para criar um pipeline completo de API Pull de terceiros.

Política de identidade do chamador — anexe à chamada CreateTelemetryPipeline da entidade principal:

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

Política de permissão do perfil de origem — anexe ao perfil que o pipeline assume:

{ "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*" } ] }

Política de confiança do perfil de origem:

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

Depois de criar o pipeline, você também deve criar uma política de recursos em cinco minutos. Consulte Políticas de recursos.

nota

Para uso na produção, defina o escopo iam:PassRole usando as chaves de condição mostradas em Permissões do chamador de API. Se seu segredo usa uma chave KMS gerenciada pelo cliente, adicione kms:Decrypt à política de permissão do perfil de origem.

Fontes de terceiros (entrega S3)

Esta seção se aplica a qualquer fornecedor terceirizado que entregue arquivos de log ao seu bucket S3 (por exemplo, CrowdStrike Falcon, Wiz ou Cisco Umbrella).

Política de permissão

A política apresentada a seguir permite que a função leia objetos do S3 e consuma notificações do SQS.

exemplo Política do IAM para fontes do S3
{ "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" } ] }
nota

A instrução kms:Decrypt só é necessária se o bucket do S3 ou a fila do SQS usar uma chave KMS gerenciada pelo cliente para criptografia.

Política de confiança

exemplo Política de confiança para fontes de entrega do S3
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Configuração completa do IAM para os pipelines de entrega do S3

O exemplo a seguir mostra todas as políticas do IAM necessárias para criar um pipeline completo de entrega do S3.

Política de identidade do chamador — anexe à chamada CreateTelemetryPipeline da entidade principal:

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

Política de permissão do perfil de origem — anexe ao perfil que o pipeline assume:

{ "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" } ] }

Política de confiança do perfil de origem:

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

Depois de criar o pipeline, você também deve criar uma política de recursos em 5 minutos. Consulte Políticas de recursos.

nota

Para uso na produção, defina o escopo iam:PassRole usando as chaves de condição mostradas em Permissões do chamador de API. Se o bucket do S3 ou a fila do SQS usar uma chave KMS gerenciada pelo cliente, adicione kms:Decrypt à política de permissão do perfil de origem.

Dados personalizados do S3

Esta seção se aplica a seus próprios aplicativos ou infraestrutura que gravam arquivos de log em um bucket do S3.

A configuração do IAM é idêntica a Fontes de terceiros (entrega S3). Use a mesma política de permissões e política de confiança. O pipeline lê seu bucket por meio de notificações de eventos do SQS, independentemente de quem gravou os dados.

Dados personalizados do CloudWatch Logs

Esta seção se aplica aos seus próprios aplicativos que fazem login em um grupo de logs do CloudWatch Logs (por exemplo, funções do Lambda, contêineres ECS ou aplicativos EC2 personalizados).

Política de permissão

A política a seguir permite que o perfil processe logs de seus grupos de logs especificados.

exemplo Política do IAM para fontes do CloudWatch Logs
{ "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" ] } ] }

Você pode definir o escopo dessa permissão usando as chaves de condição logs:data_source_name e logs:data_source_type para restringir quais fontes de pipeline podem invocar transformações. O valor logs:data_source_name corresponde a data_source_name na configuração do pipeline e logs:data_source_type corresponde a data_source_type na configuração do pipeline.

exemplo Política de permissões para fontes do CloudWatch Logs (escopo definido com chaves de condição)
{ "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" } } } ] }
nota

O perfil do IAM para fontes do CloudWatch Logs exige tanto a política de confiança (para permitir que logs.amazonaws.com assuma o perfil) quanto a política de permissão (para conceder logs:ProcessWithPipeline). Sem ambas as políticas, os pipelines do CloudWatch não podem transformar eventos de log durante a ingestão.

Política de confiança

exemplo Política de confiança para fontes do CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
nota

Nenhuma política de recursos é necessária para os pipelines de fonte do CloudWatch Logs.

Configuração completa do IAM para os pipelines do CloudWatch Logs

O exemplo a seguir mostra todas as políticas do IAM necessárias para criar um pipeline completo do CloudWatch Logs.

Política de identidade do chamador — anexe à chamada CreateTelemetryPipeline da entidade principal:

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

Política de permissão do perfil de origem — anexe ao perfil que o pipeline assume:

{ "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" ] } ] }

Política de confiança do perfil de origem:

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

Para uso na produção, defina o escopo iam:PassRole usando as chaves de condição mostradas em Permissões do chamador de API.

Logs fornecidos pelo serviço da AWS

Esta seção se aplica aos logs de serviço da AWS entregues ao CloudWatch Logs, como VPC Flow Logs, logs de consulta do Route 53 e outros tipos de logs da AWS fornecidos.

A configuração do IAM é idêntica a Dados personalizados do CloudWatch Logs. Use a mesma política de permissão (com escopo de logs:processWithPipeline para o grupo de logs) e a mesma política de confiança (logs.amazonaws.com).

Como isso usa o tipo de fonte cloudwatch_logs, o chamador também precisa das permissões logs:PutPipelineRule e logs:DeletePipelineRule. Consulte Permissões de regras do pipeline (somente fontes do CloudWatch Logs).

Políticas de recursos

As políticas de recursos do CloudWatch Logs são necessárias para fontes baseadas em S3 e no Secrets Manager (integrações de terceiros). As políticas de recursos não são necessárias para as fontes do CloudWatch Logs (dados personalizados ou logs fornecidos).

Depois de chamar CreateTelemetryPipeline, você receberá o ARN de um pipeline. Em seguida, você deve chamar logs:PutResourcePolicy para permitir que a entidade principal de serviço dos pipelines do CloudWatch gravem no grupo de logs configurado.

Restrições de tempo

Você tem menos de 5 minutos para criar a política de recursos depois de receber o ARN do pipeline. Se o pipeline ficar ativo antes da implementação da política, os dados serão descartados.

exemplo logs:PutResourcePolicy request
{ "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" } } } ] } }

Gerenciar políticas de recursos

Use a CLI da AWS para criar ou atualizar as políticas de recursos do CloudWatch Logs para pipelines do CloudWatch.

Para verificar as políticas existentes

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

Para criar uma política do

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

Para unir com uma política existente

Se já existir uma política de recursos, adicione a nova instrução à matriz Statement existente no documento de política e, em seguida, chame put-resource-policy novamente com o arquivo mesclado.

  1. Recuperar a política existente:

    aws logs describe-resource-policies \ --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*
  2. Adicione a nova instrução à matriz Statement existente:

    { "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. Atualizar a política:

    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

Confirme que a política foi criada ou atualizada com sucesso:

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

Substitua os seguintes espaços reservados:

  • your-region: a região da AWS (p. ex., us-east-1)

  • your-account-id: o ID de 12 dígitos da sua conta da AWS

  • your-log-group-name: o nome do grupo de logs do CloudWatch Logs

  • your-pipeline-id: o ID do pipeline de telemetria (retornado por CreateTelemetryPipeline)

Chaves de condição do pipeline

Os pipelines do CloudWatch são compatíveis com chaves de condição do IAM que permitem restringir quem pode criar pipelines e quais contas podem assumir perfis de fonte. Use essas chaves de condição para aplicar políticas de governança em toda a sua organização.

Condições do CreateTelemetryPipeline

Use essas chaves de condição nas políticas de identidade para controlar quais pipelines uma entidade principal pode criar.

observabilityadmin:SourceType

Restringe a criação de pipelines a tipos específicos de fonte. Os valores compatíveis incluem cloudwatch_logs, s3, microsoft_office365, okta_sso e palo_alto_ngfw.

exemplo Restrição de criação de pipelines por tipo de fonte
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPipelineCreationForSpecificSourceType", "Effect": "Allow", "Action": "observabilityadmin:CreateTelemetryPipeline", "Resource": "*", "Condition": { "StringEquals": { "observabilityadmin:SourceType": "cloudwatch_logs" } } } ] }

Condições da política de confiança do perfil de origem

Use essas chaves de condição na política de confiança do seu perfil de origem para restringir qual conta pode assumir o perfil. Isso evita ataques “confused deputy”, nos quais o serviço pode agir em nome de uma conta diferente.

aws:SourceAccount

Restringe a suposição de perfis às solicitações provenientes de uma conta específica da AWS.

aws:SourceArn

Restringe a suposição de perfis às solicitações originadas de um ARN de recurso específico (por exemplo, um grupo de logs).

exemplo Política de confiança com condição SourceAccount (fontes do 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:*" } } } ] }

Permissões de configuração do processador assistida por IA

Para usar a configuração do processador assistida por IA no console de pipelines do CloudWatch, a entidade principal do IAM deve ter a permissão logs:GeneratePipeline. Essa permissão autoriza a geração de configurações do processador de descrições em linguagem natural.

exemplo Política do IAM para configuração de processador assistida por IA
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGeneratePipeline", "Effect": "Allow", "Action": "logs:GeneratePipeline", "Resource": "*" } ] }