

# Permisos y políticas de IAM para canalizaciones de CloudWatch
<a name="pipeline-iam-reference"></a>

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
<a name="api-caller-permissions"></a>

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).

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

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

**Example 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. 

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

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

**Example 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/*"
                ]
              }
            }
        }
    ]
}
```

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

**Example 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/*"
              ]
            }
          }
        }
    ]
}
```

**Example 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/*"
              ]
            }
          }
        }
    ]
}
```

## Claves de condición de canalización
<a name="pipeline-condition-keys"></a>

Las canalizaciones de CloudWatch admiten claves de condición de IAM que permiten restringir quién puede crear canalizaciones en función del nombre y el tipo de origen de registro. Utilice estas claves de condición para aplicar políticas de gobernanza en toda su organización.Claves de condición disponibles

`observabilityadmin:SourceName`  
Restringe la creación de canalizaciones a nombres de orígenes de registro específicos.

`observabilityadmin:SourceType`  
Restringe la creación de canalizaciones a tipos de orígenes de registro específicos.

**Example Política de IAM que restringe 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"
                }
            }
        }
    ]
}
```

**Example Política de IAM que restringe la creación de canalizaciones por nombre de origen**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPipelineCreationForSpecificSource",
            "Effect": "Allow",
            "Action": "observabilityadmin:CreateTelemetryPipeline",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "observabilityadmin:SourceName": "your-source-name"
                }
            }
        }
    ]
}
```

## Permisos de la configuración de procesadores asistida por IA
<a name="ai-assisted-permissions"></a>

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.

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

## Políticas de IAM específicas del origen
<a name="source-specific-iam-policies"></a>

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`.

**Example 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.

**Example 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.

**Example 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
<a name="trust-relationships"></a>

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`.

**Example 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
<a name="resource-policies"></a>

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](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutResourcePolicy.html)` 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.

**Example 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
<a name="managing-resource-policies"></a>

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

1.  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"
                   }
               }
           }
       ]
   }
   ```

1. 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:*
```