

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Planificación de la implementación
<a name="plan-your-deployment"></a>

En esta sección se describen el [costo](cost.md), la [seguridad](security.md), [las cuotas](quotas.md) y otras consideraciones antes de implementar la solución.

## Regiones de AWS admitidas
<a name="supported-aws-regions"></a>

En función de los valores de los parámetros de entrada de la plantilla que defina, esta solución requiere diferentes recursos. Es posible que estos recursos (que se muestran en la tabla siguiente) no estén disponibles en todas las regiones de AWS. Por lo tanto, debe lanzar esta solución en una región de AWS en la que estén disponibles estos servicios. Para obtener la disponibilidad más reciente de los servicios de AWS por región, consulte la [lista de servicios regionales de AWS](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).


|  | ACL web de AWS WAF | AWS Glue | Amazon Athena | Amazon Kinesis Data Firehose | 
| --- | --- | --- | --- | --- | 
|   **Tipo de punto de conexión**   |  |  |  |  | 
|  CloudFront  |  ✓  |  |  |  | 
|  Application Load Balancer (ALB)  |  ✓  |  |  |  | 
|   **Active la protección contra inundaciones HTTP**   |  |  |  |  | 
|  sí: analizador de registros AWS Lambda  |  |  |  |  ✓  | 
|  sí: analizador de registros Amazon Athena  |  |  ✓  |  ✓  |  ✓  | 
|   **Active la protección del escáner y la sonda**   |  |  |  |  | 
|  sí: analizador de registros Amazon Athena  |  |  ✓  |  ✓  |  | 

**nota**  
Si lo elige `CloudFront` como **punto final**, debe implementar la solución en la región EE. UU. Este (Virginia del Norte) (`us-east-1`).

# Costo
<a name="cost"></a>

Usted es responsable del coste de los servicios de AWS utilizados al ejecutar la solución Security Automations for AWS WAF. El coste total de ejecutar esta solución depende de la protección activada y de la cantidad de datos ingeridos, almacenados y procesados.

Recomendamos crear un [presupuesto](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-create.html) a través de [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/) para ayudar a administrar los costos. Para obtener más información, consulte la página web de precios de cada servicio de AWS que utilizó en esta solución.

Las siguientes tablas son ejemplos de desgloses de costos para ejecutar esta solución en la región EE.UU. Este (Virginia del Norte) (no incluye la capa gratuita de AWS). Los precios están sujetos a cambios.

 **Ejemplo 1: Activar Reputation List Protection, Bad Bot Protection, AWS Lambda Log Parser para HTTP Flood Protection y Scanner & Probe Protection** 


| Servicio de AWS | Dimensiones/mes | Costo [USD] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100 GB  |  \$12,90 \$1  | 
|  Amazon S3  |  100 GB  |  \$12,30 \$1  | 
|  AWS Lambda  |  128 MB: 3 funciones, 1 millón de invocaciones y una duración media de 500 milisegundos por ejecución de Lambda 512 MB: 2 funciones, 1 millón de invocaciones y una duración media de 500 milisegundos por ejecución de Lambda  |  \$15,40 \$1  | 
|  ACL web de AWS WAF  |  1  |  5 DÓLARES  | 
|  Regla WAF de AWS  |  4  |  4,00 DÓLARES  | 
|  Solicitud de AWS WAF  |  1M  |  0,60\$1  | 
|   **Total**   |  |   **\$120,60 \$1 al mes**   | 

 **Ejemplo 2: Activar Reputation List Protection, Bad Bot Protection, Amazon Athena Log Parser para HTTP Flood Protection y Scanner & Probe Protection** 


| Servicio de AWS | Dimensiones/mes | Costo [USD] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100 GB  |  \$12,90 \$1  | 
|  Amazon S3  |  100 GB  |  \$12,30 \$1  | 
|  AWS Lambda  |  128 MB: 3 funciones, 1 millón de invocaciones y una duración media de 500 milisegundos por ejecución de Lambda 512 MB: 2 funciones, 7560 invocaciones y una duración media de 500 milisegundos por ejecución de Lambda  |  \$11,26 \$1  | 
|  Amazon Athena  |  1,2 millones de visitas a CloudFront objetos o 1,2 millones de solicitudes de ALB al día, lo que genera un registro de aproximadamente 500 bytes por visita o solicitud  |  \$14,32 \$1  | 
|  ACL web de AWS WAF  |  1  |  5 DÓLARES  | 
|  Regla WAF de AWS  |  4  |  4,00 DÓLARES  | 
|  Solicitud de AWS WAF  |  1M  |  0,60\$1  | 
|   **Total**   |  |   ****\$120,38 \$1 al mes****   | 

 **Ejemplo 3: Activar la retención de IP para conjuntos de IP permitidos y denegados** 


| Servicio de AWS | Dimensiones/mes | Costo [USD] | 
| --- | --- | --- | 
|  Amazon DynamoDB  |  1000 escrituras y 1 MB de almacenamiento de datos  |  \$10,00 \$1  | 
|  AWS Lambda  |  128 MB: 1 función, 2000 invocaciones y una duración media de 500 milisegundos por ejecución de Lambda 512 MB: 1 función, 2000 invocaciones y una duración media de 500 milisegundos por ejecución de Lambda  |  \$10,01 \$1  | 
|  Amazon CloudWatch  |  Eventos 2K  |  \$10,00 \$1  | 
|  ACL web de AWS WAF  |  1  |  5,00 DÓLARES  | 
|  Regla WAF de AWS  |  2  |  2,00 DÓLARES  | 
|  Solicitud WAF de AWS  |  1M  |  0,60\$1  | 
|   **Total**   |  |   ****\$17,61 \$1 al mes****   | 

## Estimación del costo de los troncos CloudWatch
<a name="cost-estimate-of-cloudwatch-logs"></a>

Algunos servicios de AWS que se utilizan en esta solución, como Lambda, generan CloudWatch registros. [Estos registros conllevan cargos.](https://aws.amazon.com/cloudwatch/pricing/) Recomendamos eliminar o archivar los registros para reducir el coste. Para obtener información detallada sobre el archivo de registros, consulte [Exportación de datos de registro a Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3Export.html) en la *Guía del usuario de Amazon CloudWatch Logs*.

Si opta por utilizar el analizador de registros Athena durante la instalación, esta solución programa una consulta para que se ejecute en los registros de acceso a aplicaciones o WAF de AWS de sus buckets de Amazon S3, tal y como están configurados. Se le cobrará en función de la cantidad de datos escaneados por cada consulta. La solución divide los registros y las consultas en particiones para minimizar los costos. De forma predeterminada, la solución mueve los registros de acceso a las aplicaciones de su ubicación original de Amazon S3 a una estructura de carpetas particionada. También puede conservar el original, pero se le cobrará por el almacenamiento de registros duplicados. Esta solución utiliza [grupos de trabajo](https://docs.aws.amazon.com/athena/latest/ug/manage-queries-control-costs-with-workgroups.html) para segmentar las cargas de trabajo y puede configurarlas para gestionar el acceso a las consultas y los costes. Consulte la [estimación de costes de Athena](#cost-estimate-of-athena) para ver un ejemplo de cálculo de la estimación de costes. Para obtener más información, consulta los precios de [Amazon Athena](https://aws.amazon.com/athena/pricing/).

## Estimación de costes de Athena
<a name="cost-estimate-of-athena"></a>

Si utiliza la opción de analizador de registros de Athena mientras ejecuta las reglas **HTTP Flood Protection**, **Scanner & Probe Protection o **Bad Bot Protection****, se le cobrará por el uso de Athena. De forma predeterminada, cada consulta de Athena se ejecuta cada cinco minutos y analiza los datos de las últimas cuatro horas. La solución aplica particiones a los registros y a las consultas de Athena para minimizar los costes. Puede configurar el número de horas de datos que escanea una consulta cambiando el valor del parámetro de plantilla **WAF Block Period**. Sin embargo, aumentar la cantidad de datos escaneados probablemente aumentará el costo de Athena.

**sugerencia**  
A continuación se muestra un ejemplo de cálculo del coste CloudFront de los registros:  
En promedio, cada CloudFront visita puede generar alrededor de 500 bytes de datos.  
Si se reciben 1,2 millones de CloudFront objetos al día, habrá 200 000 (1,2 M/6) visitas cada cuatro horas, suponiendo que los datos se ingieran a un ritmo constante. Tenga en cuenta sus patrones de tráfico reales a la hora de calcular sus costes.  
 `[500 bytes of data] * [200K hits per four hours] = [an average 100 MB (0.0001TB) data scanned per query]`   
Athena cobra 5 USD por TB de datos escaneados.  
 `[0.0001 TB] * [$5] = [$0.0005 per query scan]`   
La consulta de Athena se ejecuta cada cinco minutos, lo que equivale a 12 ejecuciones por hora.  
 `[12 runs] * [24 hours] = [288 runs per day]`   
 `[$0.0005 per query scan] * [288 runs per day] * [30 days] = [$4.32 per month]`   
Los costes reales varían en función de los patrones de tráfico de la aplicación. Para obtener más información, consulta los precios de [Amazon Athena](https://aws.amazon.com/athena/pricing/).

# Seguridad
<a name="security"></a>

Cuando crea sistemas en la infraestructura de AWS, las responsabilidades de seguridad se comparten entre usted y AWS. Este [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) reduce su carga operativa, ya que AWS opera, administra y controla los componentes, desde el sistema operativo host y la capa de virtualización hasta la seguridad física en las instalaciones en las que operan los servicios. Para obtener más información sobre la seguridad de AWS, visite [Seguridad en la nube de AWS](https://aws.amazon.com/security/).

## Roles de IAM
<a name="iam-roles"></a>

Con las funciones de IAM, puede asignar acceso, políticas y permisos detallados a los servicios y usuarios de la nube de AWS. Esta solución crea funciones de IAM con los privilegios mínimos y estas funciones otorgan los recursos de la solución con los permisos necesarios.

## Datos
<a name="data"></a>

Todos los datos almacenados en los buckets de Amazon S3 y en las tablas de DynamoDB tienen cifrado en reposo. Los datos en tránsito con Firehose también están cifrados.

## Capacidades de protección
<a name="protection-capabilities"></a>

Las aplicaciones web son vulnerables a diversos ataques. Estos ataques incluyen solicitudes especialmente diseñadas para aprovechar una vulnerabilidad o tomar el control de un servidor; ataques volumétricos diseñados para destruir un sitio web; o robots y rastreadores maliciosos programados para extraer y robar contenido web.

Esta solución se utiliza CloudFormation para configurar las reglas de AWS WAF, incluidos los grupos de reglas administradas de AWS y las reglas personalizadas, para bloquear los siguientes ataques comunes:
+  **Reglas administradas por AWS**: este servicio administrado proporciona protección contra las vulnerabilidades comunes de las aplicaciones u otro tráfico no deseado. Esta solución incluye grupos de [reglas de reputación de IP gestionada por AWS, grupos](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html) [de reglas de referencia gestionados por AWS y grupos](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html) [de reglas de casos de uso específicos gestionados](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html) por AWS. Tiene la opción de seleccionar uno o más grupos de reglas para su ACL web, hasta alcanzar la cuota máxima de unidades de capacidad (WCU) de la ACL web.
+  **Inyección de SQL**: los atacantes insertan código SQL malicioso en las solicitudes web para extraer datos de la base de datos. Diseñamos esta solución para bloquear las solicitudes web que contienen código SQL potencialmente malicioso.
+  **XSS**: Los atacantes utilizan las vulnerabilidades de un sitio web benigno como medio para introducir scripts maliciosos del sitio del cliente en el navegador web de un usuario legítimo. Lo diseñamos para inspeccionar los elementos más explorados de las solicitudes entrantes a fin de identificar y bloquear los ataques XSS.
+  **Inundaciones de HTTP**: los servidores web y otros recursos de back-end corren el riesgo de sufrir ataques DDo S, como las inundaciones de HTTP. Esta solución invoca automáticamente una regla basada en la velocidad cuando las solicitudes web de un cliente superan una cuota configurable. Como alternativa, puede aplicar esta cuota procesando los registros de AWS WAF mediante una función de Lambda o una consulta de Athena.
+  **Escáneres y sondeos: las** fuentes malintencionadas escanean e investigan las aplicaciones web con acceso a Internet en busca de vulnerabilidades mediante el envío de una serie de solicitudes que generan códigos de error HTTP 4xx. Puedes usar este historial para identificar y bloquear las direcciones IP de origen malintencionadas. Esta solución crea una función de Lambda CloudFront o una consulta de Athena que analiza automáticamente los registros de acceso a ALB, cuenta el número de solicitudes incorrectas de direcciones IP de origen único por minuto y actualiza AWS WAF para bloquear nuevos escaneos de direcciones que alcanzaron la cuota de error definida.
+  **Orígenes conocidos de los atacantes (listas de reputación de IP)**: muchas organizaciones mantienen listas de reputación de direcciones IP gestionadas por atacantes conocidos, como remitentes de spam, distribuidores de malware y botnets. Esta solución aprovecha la información de estas listas de reputación para ayudarle a bloquear las solicitudes de direcciones IP malintencionadas. Además, esta solución bloquea a los atacantes identificados por los grupos de reglas de reputación de IP basándose en la inteligencia de amenazas interna de Amazon.
+  **Bots y rastreadores: los** operadores de aplicaciones web de acceso público deben confiar en que los clientes que acceden a su contenido se identifican con precisión y utilizan los servicios según lo previsto. Sin embargo, algunos clientes automatizados, como los rastreadores de contenido o los bots maliciosos, se autointerpretan mal para eludir las restricciones. Esta solución le ayuda a identificar y bloquear los robots y rastreadores defectuosos.

# Cuotas
<a name="quotas"></a>

Las cuotas de servicio (que también se denominan límites) establecen el número máximo de recursos u operaciones de servicio para su cuenta de AWS.

## Cuotas para servicios de AWS en esta solución
<a name="quotas-for-aws-services-in-this-solution"></a>

Asegúrese de tener una cuota suficiente para cada uno de los [servicios implementados en esta solución](architecture-details.md#aws-services-in-this-solution). Para obtener más información, consulte las [cuotas de servicio de AWS](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html). Para ver las cuotas de servicio de todos los servicios de AWS en la documentación sin cambiar de página, consulte la información en la página de [puntos finales y cuotas del servicio](https://docs.aws.amazon.com/general/latest/gr/aws-general.pdf#aws-service-information) en el PDF.

## Cuotas de AWS WAF
<a name="aws-waf-quotas"></a>

AWS WAF puede bloquear un máximo de 10 000 rangos de direcciones IP en la notación de enrutamiento entre dominios sin clase (CIDR) por condición de coincidencia de IP. Cada lista que crea esta solución está sujeta a esta cuota. Para obtener más información, consulte las cuotas de [AWS WAF.](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html) A partir de la versión 3.0, esta solución crea dos conjuntos de IP para adjuntarlos a cada regla, uno para IPv4 y otro para IPv6.

AWS WAF permite un máximo de una solicitud por segundo, por cuenta y región de AWS para las llamadas a la API dirigidas a cualquier persona `Create` o `Put` `Update` acción. Si realiza estas llamadas a la API fuera de la solución, es posible que se produzca un problema de limitación de la API. Para evitar este problema, te recomendamos que evites ejecutar otras aplicaciones que realicen estas llamadas a la API en la misma cuenta y región en la que está implementada esta solución.

# Consideraciones sobre la implementación
<a name="deployment-considerations"></a>

En las siguientes secciones, se describen las limitaciones y consideraciones a la hora de implementar esta solución.

## Reglas de AWS WAF
<a name="aws-waf-rules"></a>

La ACL web que genera esta solución está diseñada para ofrecer una protección integral para las aplicaciones web. La solución proporciona un conjunto de reglas administradas por AWS y reglas personalizadas que puede añadir a la ACL web. Para incluir una regla, elija `yes` los parámetros pertinentes al lanzar la CloudFormation pila. Consulte [el paso 1. Inicie la pila](step-1.-launch-the-stack.md) de la lista de parámetros.

**nota**  
La out-of-box solución no es compatible con [AWS Firewall Manager](https://aws.amazon.com/firewall-manager). Si desea utilizar las reglas del Firewall Manager, le recomendamos que aplique personalizaciones a su [código fuente](https://github.com/aws-solutions/aws-waf-security-automations).

## Registro de tráfico de ACL web
<a name="web-acl-traffic-logging"></a>

Si crea la pila en una región de AWS que no sea EE. UU. Este (Virginia del Norte) y establece el **punto de enlace** como`CloudFront`, debe establecer **Activate HTTP Flood Protection** en `no` o`yes - AWS WAF rate based rule`.

Las otras dos opciones (`yes - AWS Lambda log parser`y`yes - Amazon Athena log parser`) requieren la activación de los registros de AWS WAF en una ACL web que se ejecute en todas las ubicaciones perimetrales de AWS, y esto no es compatible fuera de EE. UU. Este (norte de Virginia). Para obtener más información sobre cómo registrar el tráfico de ACL web, consulte la guía para [desarrolladores de AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html).

## Gestión de sobredimensionamiento de los componentes de las solicitudes
<a name="oversize-handling-for-request-components"></a>

AWS WAF no admite la inspección de contenido sobredimensionado para el cuerpo, los encabezados o las cookies del componente de solicitud web. Al escribir una declaración de reglas que inspeccione uno de estos tipos de componentes de solicitud, puede elegir una de estas opciones para indicar a AWS WAF qué hacer con estas solicitudes:
+  `yes`(continuar) - Inspeccione el componente de la solicitud normalmente de acuerdo con los criterios de inspección de la regla. AWS WAF inspecciona el contenido de los componentes de la solicitud que se encuentra dentro de los límites de tamaño. Esta es la opción predeterminada que se utiliza en la solución.
+  `yes - MATCH`: trate la solicitud web como coincidente con la instrucción de regla. AWS WAF aplica la acción de la regla a la solicitud sin evaluarla en función de los criterios de inspección de la regla. En el caso de una regla con `Block` acción, esto bloquea la solicitud con el componente de sobretamaño.
+  `yes - NO_MATCH`- Considera que la solicitud web no coincide con el enunciado de la regla, sin evaluarla en función de los criterios de inspección de la regla. AWS WAF continúa inspeccionando la solicitud web mediante el resto de las reglas de la ACL web, como haría con cualquier regla que no coincida.

Para obtener más información, consulte [Gestión de componentes de solicitudes web de gran tamaño en AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html).

## Implementaciones de múltiples soluciones
<a name="multiple-solution-deployments"></a>

Puede implementar la solución varias veces en la misma cuenta y región. Debe usar un nombre de CloudFormation pila único y un nombre de bucket de Amazon S3 para cada implementación. Cada implementación única conlleva cargos adicionales y está sujeta a las cuotas de [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html) por cuenta y región.

## Permisos mínimos de rol para la implementación (opcional)
<a name="minimum-role-permissions"></a>

Los clientes pueden crear manualmente un rol de IAM con los permisos mínimos necesarios para la implementación:
+ Permisos WAF

```
        {
            "Effect": "Allow",
            "Action": [
                "wafv2:CreateWebACL",
                "wafv2:UpdateWebACL",
                "wafv2:DeleteWebACL",
                "wafv2:GetWebACL",
                "wafv2:ListWebACLs",
                "wafv2:CreateIPSet",
                "wafv2:UpdateIPSet",
                "wafv2:DeleteIPSet",
                "wafv2:GetIPSet",
                "wafv2:AssociateWebACL",
                "wafv2:DisassociateWebACL",
                "wafv2:PutLoggingConfiguration",
                "wafv2:DeleteLoggingConfiguration",
                "wafv2:ListWebACLs",
                "wafv2:ListIPSets",
                "wafv2:ListTagsForResource"
            ],
            "Resource": [
                "arn:aws:wafv2:*:*:regional/webacl/*",
                "arn:aws:wafv2:*:*:regional/ipset/*",
                "arn:aws:wafv2:*:*:global/webacl/*",
                "arn:aws:wafv2:*:*:global/ipset/*"
            ]
        }
```
+ Permisos Lambda

```
        {
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction",
                "lambda:InvokeFunction",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration",
                "lambda:AddPermission",
                "lambda:RemovePermission"
            ],
            "Resource": "arn:aws:lambda:*:*:function:*"
        }
```
+ Permisos Firehose

```
        {
            "Effect": "Allow",
            "Action": [
                "firehose:CreateDeliveryStream",
                "firehose:DeleteDeliveryStream",
                "firehose:DescribeDeliveryStream",
                "firehose:StartDeliveryStreamEncryption",
                "firehose:StopDeliveryStreamEncryption",
                "firehose:UpdateDestination"
            ],
            "Resource": "arn:aws:firehose:*:*:deliverystream/*"
        }
```
+ Permisos de S3

```
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucketPolicy",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketVersioning",
                "s3:PutEncryptionConfiguration",
                "s3:PutObject",
                "s3:PutBucketTagging",
                "s3:PutLifecycleConfiguration",
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListMultipartUploadParts",
                "s3:PutBucketLogging",
                "s3:GetBucketLogging"
            ],
            "Resource": "arn:aws:s3:::*"
        }
```
+ Permisos de Athena

```
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:GetWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:StopQueryExecution"
            ],
            "Resource": "arn:aws:athena:*:*:workgroup/WAF*"
        }
```
+ Permisos de Glue

```
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateDatabase",
                "glue:DeleteDatabase",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:UpdateDatabase",
                "glue:CreateTable",
                "glue:DeleteTable",
                "glue:GetTable",
                "glue:GetTables",
                "glue:UpdateTable"
            ],
            "Resource": [
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*",
                "arn:aws:glue:*:*:table/*/*",
                "arn:aws:glue:*:*:userDefinedFunction/*"
            ]
        }
```
+ CloudWatch Registra los permisos

```
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DeleteLogGroup",
                "logs:DeleteLogStream",
                "logs:PutRetentionPolicy",
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/lambda/*",
                "arn:aws:logs:*:*:log-group:*",
                "arn:aws:logs:*:*:log-group:/aws/kinesisfirehose/*"
            ]
        }
```
+ CloudWatch Permisos

```
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DeleteDashboards",
                "cloudwatch:GetDashboard",
                "cloudwatch:ListDashboards",
                "cloudwatch:PutDashboard",
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        }
```
+ Permisos de SNS

```
        {
            "Effect": "Allow",
            "Action": [
                "sns:CreateTopic",
                "sns:DeleteTopic",
                "sns:Subscribe",
                "sns:Unsubscribe",
                "sns:SetTopicAttributes"
            ],
            "Resource": "arn:aws:sns:*:*:*"
        }
```
+ Permisos de DynamoDB

```
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:CreateTable",
                "dynamodb:DeleteTable",
                "dynamodb:DescribeTable",
                "dynamodb:PutItem",
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*"
        }
```
+ CloudFormation Permisos

```
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:UpdateStack",
                "cloudformation:ListStacks"
            ],
            "Resource": "arn:aws:cloudformation:*:*:stack/*/*"
        }
```
+ Permisos de registro de aplicaciones de Service Catalog

```
        {
            "Effect": "Allow",
            "Action": [
                "servicecatalog:CreateApplication",
                "servicecatalog:DeleteApplication",
                "servicecatalog:GetApplication",
                "servicecatalog:TagResource",
                "servicecatalog:CreateAttributeGroup",
                "servicecatalog:DeleteAttributeGroup",
                "servicecatalog:GetAttributeGroup",
                "servicecatalog:AssociateAttributeGroup",
                "servicecatalog:DisassociateAttributeGroup",
                "servicecatalog:AssociateResource",
                "servicecatalog:DisassociateResource"
            ],
            "Resource": "arn:aws:servicecatalog:*:*:*"
        }
```
+ Permisos de X-Ray

```
        {
            "Effect": "Allow",
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": "*"
        }
```
+ Permisos de IAM

```
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreatePolicy",
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListRoles",
                "iam:PassRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/*"
        }
```
+ EventBridge Permisos

```
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:RemoveTargets",
                "events:DescribeRule",
                "events:EnableRule",
                "events:ListRules",
                "events:PutRule",
                "events:DeleteRule",
                "events:ListEventSources",
                "events:DescribeEventSource",
                "events:ActivateEventSource",
                "events:DeactivateEventSource"
            ],
            "Resource": "arn:aws:events:*:*:rule/*"
        }
```