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 \ --regionyour-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.
-
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:* -
Adicione a nova instrução à matriz
Statementexistente:{ "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" } } } ] } -
Atualizar a política:
aws logs put-resource-policy \ --regionyour-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 porCreateTelemetryPipeline)
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_ssoepalo_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": "*" } ] }