View a markdown version of this page

Permisos y políticas de IAM para canalizaciones de CloudWatch - Amazon CloudWatch

Permisos y políticas de IAM para canalizaciones de CloudWatch

En esta sección se describen los requisitos de IAM para las canalizaciones de CloudWatch. Los permisos varían según el origen de datos y el método de integración.

La siguiente tabla le ayuda a identificar qué secciones de IAM se aplican a su caso de uso.

Caso de uso Método de integración Tipo de origen en la configuración de la canalización Secciones de IAM necesarias
Integraciones de terceros (extracción mediante API) La canalización extrae datos de la API del proveedor mediante credenciales almacenadas microsoft_office365, okta_sso, palo_alto_ngfw, etc.: Permisos para intermediarios que llaman a la API + Orígenes de terceros (extracción mediante API) + Políticas de recursos
Integraciones de terceros (entrega a S3) El proveedor entrega archivos al bucket de S3 s3 Permisos para intermediarios que llaman a la API + Orígenes de terceros (entrega a S3) + Políticas de recursos
Datos personalizados desde S3 Las aplicaciones escriben datos en S3 y la canalización lee datos del bucket s3 Permisos para intermediarios que llaman a la API + Datos personalizados desde S3 + Políticas de recursos
Datos personalizados desde Registros de CloudWatch Las aplicaciones envían registros a un grupo de registro de Registros de CloudWatch cloudwatch_logs Permisos para intermediarios que llaman a la API + Datos personalizados desde Registros de CloudWatch
Registros de servicios proporcionados por AWS Los servicios de AWS entregan registros a Registros de CloudWatch (registros de flujo de VPC, Route 53) cloudwatch_logs Permisos para intermediarios que llaman a la API + Registros de servicios proporcionados por AWS
nota

Los orígenes basados en S3 (s3) requieren una política de recursos después de crear la canalización. Los orígenes de Registros de CloudWatch (cloudwatch_logs) no la requieren.

Permisos para intermediarios que llaman a la API

La entidad principal de IAM que llama a CreateTelemetryPipeline necesita el permiso iam:PassRole para cualquier rol al que se haga referencia en la configuración de la canalización.

ejemplo Plantilla de política 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/*" ] } } } ] }

Sustituya service-principal por el valor de la siguiente tabla según su caso de uso.

Caso de uso Valor de entidad principal de servicio
Terceros (extracción mediante API) telemetry-pipelines.observabilityadmin.amazonaws.com
Terceros (entrega a S3) telemetry-pipelines.observabilityadmin.amazonaws.com
Datos personalizados desde S3 telemetry-pipelines.observabilityadmin.amazonaws.com
Datos personalizados desde Registros de CloudWatch logs.amazonaws.com
Registros de servicios proporcionados por AWS logs.amazonaws.com
nota

Se recomienda incluir el bloque Condition, aunque es opcional. Sin este bloque, el rol puede pasarse a cualquier servicio.

Permisos de las reglas de canalización (solo para orígenes de Registros de CloudWatch)

Cuando se utiliza cloudwatch_logs como origen, quien realiza la llamada a la API también necesita permisos para las operaciones relacionadas con las reglas de canalización. El permiso logs:PutPipelineRule es necesario para las operaciones CreateTelemetryPipeline y UpdateTelemetryPipeline. El permiso logs:DeletePipelineRule es necesario para las operaciones DeleteTelemetryPipeline.

ejemplo Política de IAM para reglas de canalización de Registros de CloudWatch
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PipelineRuleForCloudWatchLogs", "Effect": "Allow", "Action": [ "logs:PutPipelineRule", "logs:DeletePipelineRule" ], "Resource": "*" } ] }

Políticas del rol de origen

Cada canalización requiere un rol de IAM dedicado que el servicio asume para leer los datos. En las siguientes subsecciones se presentan las políticas de permisos y confianza completas para cada caso de uso.

Orígenes de terceros (extracción mediante API)

Esta sección se aplica a Microsoft Office 365, Microsoft Entra ID, Okta SSO, Palo Alto NGFW y otras integraciones con API de proveedores que almacenan credenciales en AWS Secrets Manager.

Política de permisos

La siguiente política permite que el rol recupere las credenciales de API almacenadas.

ejemplo Política de IAM para orígenes de 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

La instrucción kms:Decrypt solo es necesaria si el secreto de Secrets Manager está cifrado con una clave de KMS administrada por el cliente.

Política de confianza

ejemplo Política de confianza para orígenes de extracción mediante API
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Configuración completa de IAM para canalizaciones de extracción mediante API

El siguiente ejemplo muestra todas las políticas de IAM necesarias para crear de principio a fin una canalización de extracción mediante una API de terceros.

Política de identidad de quien realiza la llamada: asóciela a la entidad principal que llama a CreateTelemetryPipeline:

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

Política de permisos del rol de origen: asóciela al rol que asume la canalización:

{ "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 confianza del rol de origen:

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

Después de crear la canalización, también debe crear una política de recursos en un plazo de 5 minutos. Consulte Políticas de recursos.

nota

Para un entorno de producción, limite el alcance de iam:PassRole mediante las claves de condición que se muestran en Permisos para intermediarios que llaman a la API. Si el secreto utiliza una clave de KMS administrada por el cliente, agregue kms:Decrypt a la política de permisos del rol de origen.

Orígenes de terceros (entrega a S3)

Esta sección se aplica a cualquier proveedor externo que entregue archivos de registro al bucket de S3 (por ejemplo, CrowdStrike Falcon, Wiz o Cisco Umbrella).

Política de permisos

La siguiente política permite que el rol lea objetos de S3 y consuma notificaciones de SQS.

ejemplo Política de IAM para orígenes de 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

La instrucción kms:Decrypt solo es necesaria si el bucket de S3 o la cola de SQS utilizan una clave de KMS administrada por el cliente para el cifrado.

Política de confianza

ejemplo Política de confianza para orígenes de entrega a S3
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Configuración completa de IAM para canalizaciones de entrega a S3

El siguiente ejemplo muestra todas las políticas de IAM necesarias para crear de principio a fin una canalización de entrega a S3.

Política de identidad de quien realiza la llamada: asóciela a la entidad principal que llama a CreateTelemetryPipeline:

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

Política de permisos del rol de origen: asóciela al rol que asume la canalización:

{ "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 confianza del rol de origen:

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

Después de crear la canalización, también debe crear una política de recursos en un plazo de 5 minutos. Consulte Políticas de recursos.

nota

Para un entorno de producción, limite el alcance de iam:PassRole mediante las claves de condición que se muestran en Permisos para intermediarios que llaman a la API. Si el bucket de S3 o la cola de SQS utilizan una clave de KMS administrada por el cliente, agregue kms:Decrypt a la política de permisos del rol de origen.

Datos personalizados desde S3

Esta sección se aplica a aplicaciones o infraestructura propias que escriben archivos de registro en un bucket de S3.

La configuración de IAM es idéntica a Orígenes de terceros (entrega a S3). Utilice la misma política de permisos y la misma política de confianza. La canalización lee datos del bucket mediante notificaciones de eventos de SQS, independientemente de quién haya escrito los datos.

Datos personalizados desde Registros de CloudWatch

Esta sección se aplica a sus propias aplicaciones que envían registros a un grupo de registro de Registros de CloudWatch (por ejemplo, funciones de Lambda, contenedores de ECS o aplicaciones personalizadas en EC2).

Política de permisos

La siguiente política permite que el rol procese registros de los grupos de registro especificados.

ejemplo Política de IAM para orígenes de Registros de CloudWatch
{ "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" ] } ] }

Puede limitar el alcance de este permiso mediante las claves de condición logs:data_source_name ylogs:data_source_type para restringir qué orígenes de canalización pueden invocar transformaciones. El valor de logs:data_source_name corresponde a data_source_name en la configuración de la canalización y logs:data_source_type corresponde a data_source_type en la configuración de la canalización.

ejemplo Política de permisos para orígenes de Registros de CloudWatch (con alcance limitado mediante claves de condición)
{ "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

El rol de IAM para orígenes de Registros de CloudWatch requiere tanto la política de confianza, para permitir que logs.amazonaws.com asuma el rol, como la política de permisos, para conceder logs:ProcessWithPipeline. Sin ambas políticas, las canalizaciones de CloudWatch no pueden transformar eventos de registro durante la ingesta.

Política de confianza

ejemplo Política de confianza para orígenes de Registros de CloudWatch
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
nota

No se requiere una política de recursos para las canalizaciones con orígenes de Registros de CloudWatch.

Configuración completa de IAM para canalizaciones de Registros de CloudWatch

El siguiente ejemplo muestra todas las políticas de IAM necesarias para crear de principio a fin una canalización de Registros de CloudWatch.

Política de identidad de quien realiza la llamada: asóciela a la entidad principal que llama a CreateTelemetryPipeline:

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

Política de permisos del rol de origen: asóciela al rol que asume la canalización:

{ "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 confianza del rol de origen:

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

Para un entorno de producción, limite el alcance de iam:PassRole mediante las claves de condición que se muestran en Permisos para intermediarios que llaman a la API.

Registros de servicios proporcionados por AWS

Esta sección se aplica a los registros de servicios de AWS entregados a Registros de CloudWatch, como los registros de flujo de VPC, los registros de consultas de Route 53 y otros tipos de registros proporcionados por AWS.

La configuración de IAM es idéntica a Datos personalizados desde Registros de CloudWatch. Use la misma política de permisos (logs:processWithPipeline limitada al grupo de registro) y la misma política de confianza (logs.amazonaws.com).

Debido a que utiliza el tipo de origen cloudwatch_logs, quien realiza la llamada también necesita los permisos logs:PutPipelineRule y logs:DeletePipelineRule. Consulte Permisos de las reglas de canalización (solo para orígenes de Registros de CloudWatch).

Políticas de recursos

Las políticas de recursos de Registros de CloudWatch son necesarias para los orígenes basados en S3 y los orígenes basados en Secrets Manager (integraciones de terceros). No se requieren políticas de recursos para los orígenes de Registros de CloudWatch (datos personalizados o registros proporcionados).

Después de llamar a CreateTelemetryPipeline, recibirá un ARN de canalización. A continuación, debe llamar a logs:PutResourcePolicy para permitir que la entidad principal de servicio de las canalizaciones de CloudWatch escriba en el grupo de registro configurado.

Restricción de la nomenclatura

Dispone de menos de 5 minutos después de recibir el ARN de la canalización para crear esta política de recursos. Si la canalización se activa antes de que se establezca la política, se eliminarán los datos.

ejemplo Solicitud logs: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" } } } ] } }

Administración de políticas de recursos

Utilice la CLI de AWS para crear o actualizar las políticas de recursos de Registros de CloudWatch para las canalizaciones de CloudWatch.

Para comprobar las políticas existentes

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

Creación de una nueva política de

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 combinar con una política existente

Si ya existe una política de recursos, agregue la nueva instrucción a la matriz Statement existente en el documento de política y, a continuación, vuelva a llamar a put-resource-policy con el archivo combinado.

  1. Recupere la 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. Agregue la nueva instrucción a la 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. Actualice la 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 la política se haya creado o actualizado correctamente:

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

Reemplace los siguientes marcadores de posición:

  • your-region: la región de AWS (por ejemplo, us-east-1)

  • your-account-id: el ID de la cuenta de AWS de 12 dígitos

  • your-log-group-name: el nombre del grupo de registro de Registros de CloudWatch

  • your-pipeline-id: el ID de la canalización de telemetría (devuelto por CreateTelemetryPipeline)

Claves de condición de canalización

Las canalizaciones de CloudWatch admiten claves de condición de IAM que permiten restringir quién puede crear canalizaciones y qué cuentas pueden asumir roles de origen. Utilice estas claves de condición para aplicar políticas de gobernanza en toda su organización.

Condiciones de CreateTelemetryPipeline

Utilice estas claves de condición en las políticas de identidad para controlar qué canalizaciones puede crear una entidad principal.

observabilityadmin:SourceType

Restringe la creación de canalizaciones a tipos de origen específicos. Los valores admitidos son cloudwatch_logs, s3, microsoft_office365, okta_sso y palo_alto_ngfw.

ejemplo Restricción de la creación de canalizaciones por tipo de origen
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPipelineCreationForSpecificSourceType", "Effect": "Allow", "Action": "observabilityadmin:CreateTelemetryPipeline", "Resource": "*", "Condition": { "StringEquals": { "observabilityadmin:SourceType": "cloudwatch_logs" } } } ] }

Condiciones de la política de confianza del rol de origen

Utilice estas claves de condición en la política de confianza del rol de origen para restringir qué cuenta puede asumir el rol. Esto ayuda a prevenir ataques de intermediario confundido, en los que el servicio podría actuar en nombre de una cuenta diferente.

aws:SourceAccount

Restringe la asunción del rol a solicitudes que se originan en una cuenta de AWS específica.

aws:SourceArn

Restringe la asunción del rol a solicitudes que se originan en un ARN de recurso específico (por ejemplo, un grupo de registro).

ejemplo Política de confianza con la condición SourceAccount (orígenes de Registros de CloudWatch)
{ "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:*" } } } ] }

Permisos de la configuración de procesadores asistida por IA

Para usar la configuración de procesadores asistida por IA en la consola de canalizaciones de CloudWatch, la entidad principal de IAM debe tener el permiso logs:GeneratePipeline. Este permiso permite la generación de configuraciones de procesadores a partir de descripciones en lenguaje natural.

ejemplo Política de IAM para la configuración de procesadores asistida por IA
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGeneratePipeline", "Effect": "Allow", "Action": "logs:GeneratePipeline", "Resource": "*" } ] }