Políticas e permissões do IAM para pipelines do CloudWatch
Esta seção apresenta os requisitos detalhados do IAM para pipelines do CloudWatch, incluindo permissões para chamadores de API, políticas específicas da fonte, relações de confiança e políticas de recursos.
Permissões do chamador de API
Qualquer perfil especificado na configuração do pipeline que chame a API CreateTelemetryPipeline (como perfis de fonte do S3, perfis de acesso do Secrets Manager ou perfis de fonte do CloudWatch Logs) deve ter permissões específicas para passar perfis.
Permissões PassRole
Obrigatório para todos os perfis especificados na configuração do pipeline (perfis de fonte do S3, perfis de acesso ao Secrets Manager ou perfis de fonte do CloudWatch Logs).
exemplo Política do IAM para fontes do S3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForS3Source", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-s3-source-role" } ] }
exemplo Política do IAM para fontes do Secrets Manager
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForSecretsManagerSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-secrets-manager-role" } ] }
exemplo Política do IAM para fontes do CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForCloudWatchLogsSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-cloudwatch-logs-role"" } ] }
Permissões de regras de pipeline
Ao usar a fonte cloudwatch_logs para operações de criação/atualização (logs:PutPipelineRule) e operações de exclusão (logs:DeletePipelineRule), o perfil também deve ter permissões para realizar essas operações.
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": "*" } ] }
Reduzir o escopo com chaves de condição
Para reduzir o escopo da política de permissão a pipelines de telemetria, você pode especificar as chaves de condição conforme mostrado nos exemplos a seguir:
exemplo Política do IAM para fontes do S3 (básicas)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForS3Source", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-s3-source-role" } ] }
exemplo Política do IAM para fontes do S3 (escopo definido com chaves de condição)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForS3Source", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-s3-source-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "telemetry-pipelines.observabilityadmin.amazonaws.com" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }
exemplo Política do IAM para fontes do Secrets Manager (básicas)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForSecretsManagerSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-secrets-manager-role" } ] }
exemplo Política do IAM para fontes do Secrets Manager (escopo definido com chaves de condição)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForSecretsManagerSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-secrets-manager-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "telemetry-pipelines.observabilityadmin.amazonaws.com" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }
exemplo Política do IAM para fontes do CloudWatch Logs (escopo definido com chaves de condição)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForCloudWatchLogsSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-cloudwatch-logs-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "logs.amazonaws.com" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }
Políticas do IAM específicas da fonte
Diferentes tipos de fonte exigem permissões específicas do IAM para acessar suas respectivas fontes de dados.
Fontes do CloudWatch Logs
Para fontes do CloudWatch Logs, todo perfil do IAM especificado na configuração do pipeline deve ter uma relação de confiança com logs.amazonaws.com.
exemplo Política de confiança de perfil do IAM para fontes do CloudWatch Logs (básicas)
{ "Version": "2012-10-17", "Statement": [ { ""Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Fontes do S3
Para fontes do S3, os clientes devem fornecer um perfil do IAM com permissões para acessar objetos do S3 e filas 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", "Condition": { "Comment": "Only required if S3 buckets and/or SQS queue uses KMS encryption" } } ] }
Fontes que usam o AWS Secrets Manager
Para fontes que referenciam o AWS Secrets Manager (Microsoft Office 365, Microsoft Entra ID, Palo Alto NGFW), os clientes devem fornecer um perfil do IAM com acesso ao Secrets Manager.
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", "Condition": { "Comment": "Only required if Secrets Manager uses KMS encryption" } } ] }
Relações de confiança
Qualquer perfil do IAM especificado na configuração do pipeline deve ter uma relação de confiança com a entidade principal do serviço de pipelines do CloudWatch.
Política de confiança de perfil de pipeline
Todos os perfis do pipeline devem confiar na entidade principal do serviço da telemetry-pipelines.observabilityadmin.amazonaws.com.
exemplo Política de confiança para perfis de pipelines
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Políticas de recursos
As políticas de recursos do CloudWatch Logs são obrigatórias para pipelines que gravam em grupos de logs, exceto os que usam a fonte cloudwatch_logs.
Política de recurso do CloudWatch Logs
Depois de chamar a API CreateTelemetryPipeline, você receberá o ARN de um pipeline. Para pipelines cuja fonte não é cloudwatch_logs, os clientes devem chamar logs:PutResourcePolicy para permitir que a entidade principal do serviço de pipelines do CloudWatch grave no grupo de logs configurado.
Restrições de tempo
Você tem uma janela de tempo limitada (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
Este guia apresenta as etapas para criar ou atualizar uma política de recurso do CloudWatch Logs para pipelines de telemetria usando a CLI da AWS.
Verifique 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:*
Isso retorna todas as políticas de recursos existentes anexadas ao grupo de logs. Procure uma política que já esteja associada ao grupo de logs.
Se não existir nenhuma política de recurso, crie uma:
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 '{ "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" } } } ] }'
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-ido ID do pipeline de telemetria
Se já existir uma política de recurso, mescle com ela a nova instrução:
-
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:* -
Abra
existing-policy.jsone adicione a nova instrução à matrizStatementexistente:{ "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:*