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 proporcionan los requisitos de IAM detallados para canalizaciones de CloudWatch, lo que incluye los permisos para intermediarios que llaman a la API, las políticas específicas del origen, las relaciones de confianza y las políticas de los recursos.

Permisos para intermediarios que llaman a la API

Cualquier rol especificado en la configuración de la canalización que llame a la API CreateTelemetryPipeline (como los roles de origen de S3, los roles de acceso de Secrets Manager o los roles de origen de Registros de CloudWatch) debe tener permisos específicos para transferir roles.

Permisos PassRole

Son obligatorios para todos los roles especificados en la configuración de la canalización (roles de origen de S3, roles de acceso de Secrets Manager o roles de origen de Registros de CloudWatch).

ejemplo Política de IAM para orígenes de 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" } ] }
ejemplo Política de IAM para orígenes de 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" } ] }
ejemplo Política de IAM para orígenes de Registros de CloudWatch
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForCloudWatchLogsSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-cloudwatch-logs-role"" } ] }

Permisos para reglas de canalización

Al utilizar el origen cloudwatch_logs para las operaciones de creación y actualización (logs:PutPipelineRule) y eliminación (logs:DeletePipelineRule), el rol también debe tener permisos para llevar a cabo esas operaciones.

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

Reducción del ámbito con claves de condición

Para limitar la política de permisos a las canalizaciones de telemetría, puede especificar claves de condición, como se muestra en los siguientes ejemplos:

ejemplo Política de IAM para orígenes de S3 (básica)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForS3Source", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-s3-source-role" } ] }
ejemplo Política de IAM para orígenes de S3 (limitada con claves de condición)
{ "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/*" ] } } } ] }
ejemplo Política de IAM para orígenes de Secrets Manager (básica)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForSecretsManagerSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-secrets-manager-role" } ] }
ejemplo Política de IAM para orígenes de Secrets Manager (detallada con claves de condición)
{ "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/*" ] } } } ] }
ejemplo Política de IAM para orígenes de Registros de CloudWatch (detallada con claves de condición)
{ "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 de IAM específicas del origen

Los diferentes tipos de origen requieren permisos de IAM específicos para acceder a sus respectivos orígenes de datos.

Orígenes de Registros de CloudWatch

En el caso de los orígenes de Registros de CloudWatch, cualquier rol de IAM especificado en la configuración de la canalización debe tener una relación de confianza con logs.amazonaws.com.

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

Orígenes de S3

En el caso de los orígenes de S3, los clientes deben proporcionar un rol de IAM con permisos para acceder a los objetos de S3 y a las colas 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", "Condition": { "Comment": "Only required if S3 buckets and/or SQS queue uses KMS encryption" } } ] }

Orígenes que utilizan AWS Secrets Manager

En el caso de los orígenes que hacen referencia a AWS Secrets Manager (Microsoft Office 365, Microsoft Entra ID, NGFW de Palo Alto), los clientes deben proporcionar un rol de IAM con acceso de Secrets Manager.

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", "Condition": { "Comment": "Only required if Secrets Manager uses KMS encryption" } } ] }

Relaciones de confianza

Cualquier rol de IAM especificado en la configuración de la canalización debe tener una relación de confianza con la entidad principal del servicio de canalizaciones de CloudWatch.

Política de confianza de rol de canalización

Todos los roles de canalización deben confiar en la entidad principal del servicio telemetry-pipelines.observabilityadmin.amazonaws.com.

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

Políticas de recursos

Las políticas de recursos de Registros de CloudWatch son obligatorias para canalizaciones que escriben en grupos de registro, excepto para las canalizaciones que utilizan el origen cloudwatch_logs.

Política de recursos de Registros de CloudWatch

Tras llamar a la API CreateTelemetryPipeline, recibirás un ARN de canalización. En el caso de las canalizaciones en las que el origen no sea cloudwatch_logs, los clientes deben llamar a logs:PutResourcePolicy para permitir que la entidad principal del servicio de canalizaciones de CloudWatch escriba en el grupo de registro configurado.

Restricción de la nomenclatura

Dispone de un periodo de tiempo limitado (menos de 5 minutos) para crear la política de recursos tras recibir el ARN de canalización. 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

En esta guía, se proporcionan los pasos para crear o actualizar una política de recursos de Registros de CloudWatch para canalizaciones de telemetría mediante la AWS CLI.

Compruebe 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:*

Esto devuelve todas las políticas de recursos existentes adjuntas al grupo de registro. Busque cualquier política que ya esté asociada al grupo de registro.

Si no existe ninguna política de recursos, cree una nueva:

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

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

Si ya existe una política de recursos, combine la nueva instrucción con ella:

  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. Abra existing-policy.json y 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:*