

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.

# Biblioteca de controles preventivos y de detección AMS
<a name="scp-library"></a>

AWS Managed Services (AMS) le proporciona una selección library/catalog de políticas de control de servicios comprobadas (SCPs) y ConfigRules que puede aprovechar para mejorar su postura de seguridad y mitigar las brechas de conformidad en sus cuentas de AMS.

**Topics**
+ [Reglas seleccionadas SCPs y Config](scp-library-compliance.md)
+ [Notificación personalizada para las reglas de Config](scp-lib-custom-notice.md)

# Reglas seleccionadas SCPs y Config
<a name="scp-library-compliance"></a>

Reglas seleccionadas SCPs y de configuración para AMS Advanced.
+ **Políticas de control de servicios (SCPs)**: las que SCPs se proporcionan se suman a las de AMS predeterminadas.

  Puede utilizar estos controles de biblioteca junto con los predeterminados para cumplir requisitos de seguridad específicos.
+ **Reglas de configuración**: Como medida de referencia, AMS recomienda aplicar paquetes de conformidad (consulte los paquetes de [conformidad](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html) en la AWS Config guía) además de las reglas de configuración de AMS predeterminadas (consulte AMS Artifacts para ver las reglas predeterminadas). Los paquetes de conformidad cubren la mayoría de los requisitos de conformidad y AWS los actualiza periódicamente.

  Las reglas que se enumeran aquí se pueden usar para cubrir brechas específicas de cada caso de uso que no están cubiertas por los paquetes de conformidad

**nota**  
A medida que las reglas y los paquetes de conformidad predeterminados de AMS se actualicen con el tiempo, es posible que veas duplicados de estas reglas.  
AMS recomienda realizar una limpieza periódica de las Config Rules duplicadas en general.  
En el caso de AMS Advanced, las reglas de configuración no deben utilizar correcciones automáticas (consulte [Remediar recursos de AWS no conformes mediante reglas de AWS Config Rules](https://docs.aws.amazon.com/config/latest/developerguide/remediation.html)) para evitar cambios. out-of-band

## SCP-AMS-001: Restrinja la creación de EBS
<a name="scp-ebs-create"></a>

Impida la creación de volúmenes de EBS si no tiene el cifrado activado.

```
{
      "Condition": {
        "Bool": {
          "ec2:Encrypted": "false"
        }
      },
      "Action": "ec2:CreateVolume",
      "Resource": "*",
      "Effect": "Deny"
    }
```

## SCP-AMS-002: Restringe el lanzamiento de EC2
<a name="scp-ec2-launch"></a>

Impida el lanzamiento de una instancia EC2 si el volumen de EBS no está cifrado. Esto incluye denegar un lanzamiento de EC2 sin cifrar, AMIs ya que este SCP también se aplica a los volúmenes raíz.

```
{
      "Condition": {
        "Bool": {
          "ec2:Encrypted": "false"
        }
      },
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Effect": "Deny"
    }
```

## SCP-ADV-001: Restrinja los envíos de RFC
<a name="scp-restrict-rfcs"></a>

Impida que las funciones de AMS predeterminadas envíen automatizaciones específicas, RFCs como **Crear VPC o Eliminar** **VPC**. Esto resulta útil si desea aplicar permisos más detallados a sus funciones federadas.

Por ejemplo, es posible que desee que la opción predeterminada sea `AWSManagedServicesChangeManagement Role` capaz de enviar la mayoría de las disponibles, RFCs excepto las que permiten la creación y eliminación de una VPC, la creación de subredes adicionales, la desconexión de una cuenta de aplicación y la actualización o eliminación de los proveedores de identidad de SAML:

## SCP-AMS-003: Restringe la creación de EC2 o RDS en AMS
<a name="scp-restrict-ec2-rds-creation"></a>

Impida la creación de instancias de Amazon EC2 y RDS que no tengan etiquetas específicas y, al mismo tiempo, permita que lo haga el `AMS Backup IAM` rol predeterminado de AMS. Esto es necesario para la recuperación ante desastres o DR.

```
{
    "Sid": "DenyRunInstanceWithNoOrganizationTag",
    "Effect": "Deny",
    "Action": [
        "ec2:RunInstances",
        "rds:CreateDBInstance"
    ],
    "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:rds:*:*:db:*"
    ],
    "Condition": {
        "Null": {
            "aws:RequestTag/organization": "true"
        },
        "StringNotLike": {
            "aws:PrincipalArn": [
                "arn:aws:iam::<Account_Number>:role/ams-backup-iam-role"
            ]
        }
    }
}
```

## SCP-AMS-004: Restringe las subidas a S3
<a name="scp-prevent-s3-uploads"></a>

Impida la carga de objetos S3 no cifrados.

```
{
            "Sid": "DenyUnencryptedS3Uploads",
            "Effect": "Deny",
            "Action": "s3:PutObject",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-server-side-encryption": ["aws:kms", "AES256"]
                },
                "Null": {
                    "s3:x-amz-server-side-encryption": "false"
                }
            }
        }
    ]
}
```

## SCP-AMS-005: Restringe el acceso a la API y a la consola
<a name="scp-prevent-access"></a>

Impida el acceso a la consola y a la API de AWS para las solicitudes procedentes de direcciones IP incorrectas conocidas como cliente determinado InfoSec.

## SCP-AMS-006: Impide que la entidad de IAM elimine la cuenta de un miembro de la organización
<a name="scp-prevent-iam-entity"></a>

Impedir que una AWS Identity and Access Management entidad elimine las cuentas de los miembros de la organización.

```
{
  "Effect": "Deny",
  "Action": ["organizations:LeaveOrganization"],
  "Resource": ["*"]
}
```

## SCP-AMS-007: Impida compartir recursos con cuentas ajenas a su organización
<a name="scp-prevent-sharing-resources"></a>

Evite compartir recursos con cuentas externas ajenas a su AWS organización

```
  {
    "Effect": "Deny",
    "Action": [
      "ram:*"
    ],
    "Resource": [
      "*"
    ],
    "Condition": {
      "Bool": {
        "ram:AllowsExternalPrincipals": "true"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": [
      "ram:CreateResourceShare",
      "ram:UpdateResourceShare"
    ],
    "Resource": "*",
    "Condition": {
      "Bool": {
        "ram:RequestedAllowsExternalPrincipals": "true"
      }
    }
  }
```

## SCP-AMS-008: Impida compartir con organizaciones o unidades organizativas () OUs
<a name="scp-prevent-sharing-with-organizations"></a>

Impida compartir recursos con una and/or unidad organizativa de cuentas que esté en una organización.

```
{
  "Effect": "Deny",
  "Action": [
    "ram:CreateResourceShare",
    "ram:AssociateResourceShare"
  ],
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringLike": {
      "ram:Principal": [
        "arn:aws:organizations::*:account/o-${OrganizationId}/${AccountId}",
        "arn:aws:organizations::*:ou/o-${OrganizationId}/ou-${OrganizationalUnitId}"
      ]
    }
  }
}
```

## SCP-AMS-009: Impide que los usuarios acepten invitaciones para compartir recursos
<a name="scp-prevent-resource-share-acceptance"></a>

Impida que las cuentas de los miembros acepten invitaciones AWS RAM para unirse a recursos compartidos. Esta API no admite ninguna condición y solo impide que se comparta contenido desde cuentas externas.

```
{
  "Effect": "Deny",
  "Action": ["ram:AcceptResourceShareInvitation"],
  "Resource": ["*"]
}
```

## SCP-AMS-010: Impide las acciones de activación y desactivación de la región de la cuenta
<a name="scp-prevent-account-region-enable-disable"></a>

Impida activar o desactivar nuevas AWS regiones para sus AWS cuentas.

```
{
  "Effect": "Deny",
  "Action": [
    "account:EnableRegion",
    "account:DisableRegion"
  ],
  "Resource": "*"
}
```

## SCP-AMS-011: Impida las acciones de modificación de la facturación
<a name="scp-prevent-billing-modification"></a>

Impida modificaciones en la configuración de facturación y pago.

```
{
  "Effect": "Deny",
  "Action": [
    "aws-portal:ModifyBilling",
    "aws-portal:ModifyAccount",
    "aws-portal:ModifyPaymentMethods"
  ],
  "Resource": "*"
}
```

## SCP-AMS-012: Impide la eliminación o modificación de datos específicos CloudTrails
<a name="scp-prevent-cloudtrail-modification"></a>

Impida modificaciones en AWS CloudTrail senderos específicos.

```
{
  "Effect": "Deny",
  "Action": [
    "cloudtrail:DeleteEventDataStore",
    "cloudtrail:DeleteTrail",
    "cloudtrail:PutEventSelectors",
    "cloudtrail:PutInsightSelectors",
    "cloudtrail:UpdateEventDataStore",
    "cloudtrail:UpdateTrail",
    "cloudtrail:StopLogging"
  ],
  "Resource": [
    "arn:${Partition}:cloudtrail:${Region}:${Account}:trail/${TrailName}"
  ]
}
```

## SCP-AMS-013: Impide la desactivación del cifrado EBS predeterminado
<a name="scp-prevent-disable-ebs-encryption"></a>

Impida la desactivación del cifrado predeterminado de Amazon EBS.

```
{
  "Effect": "Deny",
  "Action": [
    "ec2:DisableEbsEncryptionByDefault"
  ],
  "Resource": "*"
}
```

## SCP-AMS-014: Impedir la creación de una VPC y una subred predeterminadas
<a name="scp-prevent-default-vpc-subnet-creation"></a>

Impida la creación de una Amazon VPC y subredes predeterminadas.

```
{
  "Effect": "Deny",
  "Action": [
    "ec2:CreateDefaultSubnet",
    "ec2:CreateDefaultVpc"
  ],
  "Resource": "*"
}
```

## SCP-AMS-015: Impide la desactivación y la modificación GuardDuty
<a name="scp-prevent-default-vpc-subnet-creation"></a>

Evita que Amazon GuardDuty se modifique o desactive.

```
{
  "Effect": "Deny",
  "Action": [
    "guardduty:AcceptInvitation",
    "guardduty:ArchiveFindings",
    "guardduty:CreateDetector",
    "guardduty:CreateFilter",
    "guardduty:CreateIPSet",
    "guardduty:CreateMembers",
    "guardduty:CreatePublishingDestination",
    "guardduty:CreateSampleFindings",
    "guardduty:CreateThreatIntelSet",
    "guardduty:DeclineInvitations",
    "guardduty:DeleteDetector",
    "guardduty:DeleteFilter",
    "guardduty:DeleteInvitations",
    "guardduty:DeleteIPSet",
    "guardduty:DeleteMembers",
    "guardduty:DeletePublishingDestination",
    "guardduty:DeleteThreatIntelSet",
    "guardduty:DisableOrganizationAdminAccount",
    "guardduty:DisassociateFromMasterAccount",
    "guardduty:DisassociateMembers",
    "guardduty:InviteMembers",
    "guardduty:StartMonitoringMembers",
    "guardduty:StopMonitoringMembers",
    "guardduty:TagResource",
    "guardduty:UnarchiveFindings",
    "guardduty:UntagResource",
    "guardduty:UpdateDetector",
    "guardduty:UpdateFilter",
    "guardduty:UpdateFindingsFeedback",
    "guardduty:UpdateIPSet",
    "guardduty:UpdateMalwareScanSettings",
    "guardduty:UpdateMemberDetectors",
    "guardduty:UpdateOrganizationConfiguration",
    "guardduty:UpdatePublishingDestination",
    "guardduty:UpdateThreatIntelSet"
  ],
  "Resource": "*"
}
```

## SCP-AMS-016: Impide la actividad de los usuarios root
<a name="scp-prevent-root-user-activity"></a>

Impida que el usuario root realice cualquier acción.

```
{
  "Action": "*",
  "Resource": "*",
  "Effect": "Deny",
  "Condition": {
    "StringLike": {
      "aws:PrincipalArn": [
        "arn:aws:iam::*:root"
      ]
    }
  }
}
```

## SCP-AMS-017: Impide la creación de claves de acceso para el usuario root
<a name="scp-prevent-access-key-creation"></a>

Impida la creación de claves de acceso para el usuario root.

```
{
  "Effect": "Deny",
  "Action": "iam:CreateAccessKey",
  "Resource": "arn:aws:iam::*:root"
}
```

## SCP-AMS-018: Impide deshabilitar el bloqueo de acceso público de la cuenta S3
<a name="scp-prevent-disabling-s3-public-access-block"></a>

Evite deshabilitar el bloqueo de acceso público de una cuenta Amazon S3. Esto evita que cualquier segmento de la cuenta pase a ser público.

```
{
  "Effect": "Deny",
  "Action": "s3:PutAccountPublicAccessBlock",
  "Resource": "*"    
}
```

## SCP-AMS-019: Impedir la desactivación de AWS Config o la modificación de las reglas de Config
<a name="scp-prevent-modifying-config-rules"></a>

Impida deshabilitar o modificar AWS Config las reglas.

```
{
  "Effect": "Deny",
  "Action": [
    "config:DeleteConfigRule",
    "config:DeleteConfigurationRecorder",
    "config:DeleteDeliveryChannel",
    "config:DeleteEvaluationResults",
    "config:StopConfigurationRecorder"
  ],
  "Resource": "*"
}
```

## SCP-AMS-020: Impide todas las acciones de IAM
<a name="scp-prevent-iam-actions"></a>

Impida todas las acciones de IAM.

```
{
  "Effect": "Deny",
  "Action": [
    "iam:*"
  ],
  "Resource": "*"
}
```

## SCP-AMS-021: Impida la eliminación de registros, grupos y transmisiones CloudWatch
<a name="scp-prevent-iam-actions"></a>

Evita que se eliminen grupos y transmisiones de Amazon CloudWatch Logs.

```
{
  "Effect": "Deny",
  "Action": [
    "logs:DeleteLogGroup",
    "logs:DeleteLogStream"
  ],
  "Resource": "*"
}
```

## SCP-AMS-022: Impide la eliminación de Glacier
<a name="scp-prevent-glacier-deletion"></a>

Impida la eliminación de Amazon Glacier.

```
{
  "Effect": "Deny",
  "Action": [
    "glacier:DeleteArchive",
    "glacier:DeleteVault"
  ],
  "Resource": "*"
}
```

## SCP-AMS-023: Impida la eliminación del IAM Access Analyzer
<a name="scp-prevent-iam-access-analyzer-deletion"></a>

Impida la eliminación del IAM Access Analyzer.

```
{
  "Action": [
    "access-analyzer:DeleteAnalyzer"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-024: Impedir modificaciones en el Security Hub CSPM
<a name="scp-prevent-security-hub-modification"></a>

Impida la eliminación de. AWS Security Hub CSPM

```
{
  "Action": [
    "securityhub:DeleteInvitations",
    "securityhub:DisableSecurityHub",
    "securityhub:DisassociateFromMasterAccount",
    "securityhub:DeleteMembers",
    "securityhub:DisassociateMembers"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-025: Impedir la eliminación en Directory Service
<a name="scp-prevent-directory-service-deletion"></a>

Impida la eliminación de los recursos de Directory Service.

```
{
  "Action": [
    "ds:DeleteDirectory",
    "ds:DeleteLogSubscription",
    "ds:DeleteSnapshot",
    "ds:DeleteTrust",
    "ds:DeregisterCertificate",
    "ds:DeregisterEventTopic",
    "ds:DisableLDAPS",
    "ds:DisableRadius",
    "ds:DisableSso",
    "ds:UnshareDirectory"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-026: Impida el uso de un servicio excluido
<a name="scp-prevent-denylisted-service"></a>

Impida el uso de servicios que figuran en la lista denegada.

**nota**  
Sustituya *service1* y por *service2* sus nombres de servicio. Ejemplo *access-analyzer* o*IAM*.

```
{
  "Effect": "Deny",
  "Resource": "*",
  "Action": ["service1:*", "service2:*"]
}
```

## SCP-AMS-027: Impedir el uso de un servicio excluido en regiones específicas
<a name="scp-prevent-denylisted-service-specifc-regions"></a>

Impida el uso de servicios que figuran en la lista de personas excluidas en regiones específicas. AWS 

**nota**  
Sustituya *service1* y por *service2* los nombres de sus servicios. Ejemplo *access-analyzer* o*IAM*.  
Sustituya *region1* y *region2* por sus nombres de servicio. Ejemplo *us-west-2* o*use-east-1*.

```
{
  "Effect": "Deny",
  "Resource": "*",
  "Action": ["service1:*", "service2:*"],
  "Condition": {
    "StringEquals": {
      "aws:RequestedRegion": [
        "region1",
        "region2"
      ]
    }
  }
}
```

## SCP-AMS-028: Impide que las etiquetas sean modificadas excepto por directores autorizados
<a name="scp-prevent-tag-modifications"></a>

Impida que cualquier usuario modifique las etiquetas, excepto los directores autorizados. Utilice etiquetas de autorización para autorizar a los directores. Las etiquetas de autorización deben estar asociadas a los recursos y a los directores. A solo user/role se considera autorizada si la etiqueta del recurso y la principal coinciden. Para obtener más información, consulte los siguientes recursos:
+ [Proteger las etiquetas de recursos utilizadas para la autorización mediante una política de control de servicios en AWS Organizations](https://aws.amazon.com/blogs/security/securing-resource-tags-used-for-authorization-using-service-control-policy-in-aws-organizations/)
+ [Impida que las etiquetas se modifiquen excepto por parte de responsables autorizados](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples_tagging.html#example-require-restrict-tag-mods-to-admin)

```
{
  "Effect": "Deny",
  "Action": [
    "ec2:CreateTags",
    "ec2:DeleteTags"
  ],
  "Resource": [
    "*"
  ],
  "Condition": {
    "StringNotEquals": {
      "ec2:ResourceTag/access-project": "${aws:PrincipalTag/access-project}",
      "aws:PrincipalArn": "arn:aws:iam::{ACCOUNT_ID}:{RESOURCE_TYPE}/{RESOURCE_NAME}"
    },
    "Null": {
      "ec2:ResourceTag/access-project": false
    }
  }
},
{
  "Effect": "Deny",
  "Action": [
    "ec2:CreateTags",
    "ec2:DeleteTags"
  ],
  "Resource": [
    "*"
  ],
  "Condition": {
    "StringNotEquals": {
      "aws:RequestTag/access-project": "${aws:PrincipalTag/access-project}",
      "aws:PrincipalArn": "arn:aws:iam::{ACCOUNT_ID}:{RESOURCE_TYPE}/{RESOURCE_NAME}"
    },
    "ForAnyValue:StringEquals": {
      "aws:TagKeys": [
        "access-project"
      ]   
    }   
  }
},
{       
  "Effect": "Deny", 
  "Action": [
    "ec2:CreateTags",
    "ec2:DeleteTags"
  ],      
  "Resource": [
    "*"     
  ],      
  "Condition": {
    "StringNotEquals": {
      "aws:PrincipalArn": "arn:aws:iam::{ACCOUNT_ID}:{RESOURCE_TYPE}/{RESOURCE_NAME}"
    },      
    "Null": {
      "aws:PrincipalTag/access-project": true
    }       
  }       
}
```

## SCP-AMS-029: Impedir que los usuarios eliminen los registros de flujo de Amazon VPC
<a name="scp-prevent-vpc-flow-log-deletion"></a>

Impida la eliminación de los registros de flujo de Amazon VPC.

```
{
  "Action": [
    "ec2:DeleteFlowLogs",
    "logs:DeleteLogGroup",
    "logs:DeleteLogStream",
    "s3:DeleteBucket",
    "s3:DeleteObject",
    "s3:DeleteObjectVersion",
    "s3:PutLifecycleConfiguration",
    "firehose:DeleteDeliveryStream"
  ],
  "Resource": "*",
  "Effect": "Deny"
}
```

## SCP-AMS-030: Impedir compartir la subred de VPC con una cuenta que no sea la cuenta de red
<a name="scp-prevent-sharing-vpc-subnet"></a>

Impida compartir las subredes de Amazon VPC con cuentas distintas de la cuenta de red.

**nota**  
*NETWORK\$1ACCOUNT\$1ID*Sustitúyalo por el ID de su cuenta de red.

```
{
  "Effect": "Deny",
  "Action": [
    "ram:AssociateResourceShare",
    "ram:CreateResourceShare"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "ram:Principal": "NETWORK_ACCOUNT_ID"
    },
    "StringEquals": {
      "ram:RequestedResourceType": "ec2:Subnet"
    }
  }
}
```

## SCP-AMS-031: Impida lanzar instancias con tipos de instancias prohibidos
<a name="scp-prevent-launching-prohibited-instances"></a>

Impida el lanzamiento de tipos de instancias de Amazon EC2 prohibidos.

**nota**  
Sustituya *instance\$1type1* y *instance\$1type2* por los tipos de instancias que desee restringir, por ejemplo, *t2.micro* o una cadena comodín, por ejemplo. *\$1.nano*

```
{
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": [
    "arn:aws:ec2:*:*:instance/*"
  ],
  "Condition": {
    "ForAnyValue:StringLike": {
      "ec2:InstanceType": [
        "instance_type1", 
        "instance_type2"
      ]
    }
  }
}
```

## SCP-AMS-032: Impide el lanzamiento de instancias sin IMDSv2
<a name="scp-prevent-launching-instances-without-imdsv2"></a>

Evite las instancias de Amazon EC2 sin. IMDSv2

```
[
  {
    "Effect": "Deny",
    "Action": "ec2:RunInstances",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "StringNotEquals": {
        "ec2:MetadataHttpTokens": "required"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": "ec2:RunInstances",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "NumericGreaterThan": {
        "ec2:MetadataHttpPutResponseHopLimit": "3"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "NumericLessThan": {
        "ec2:RoleDelivery": "2.0"
      }
    }
  },
  {
    "Effect": "Deny",
    "Action": "ec2:ModifyInstanceMetadataOptions",
    "Resource": "*"
  }
]
```

## SCP-AMS-033: Impida modificaciones en una función específica de IAM
<a name="scp-prevent-modifications-to-iam-roles"></a>

Impida que se modifiquen funciones de IAM específicas.

```
{
  "Action": [
    "iam:AttachRolePolicy",
    "iam:DeleteRole",
    "iam:DeleteRolePermissionsBoundary",
    "iam:DeleteRolePolicy",
    "iam:DetachRolePolicy",
    "iam:PutRolePermissionsBoundary",
    "iam:PutRolePolicy",
    "iam:TagRole",
    "iam:UntagRole",
    "iam:UpdateAssumeRolePolicy",
    "iam:UpdateRole",
    "iam:UpdateRoleDescription"
  ],
  "Resource": [
     "arn:aws:iam::{ACCOUNT_ID}:role/{RESOURCE_NAME}"
  ],
  "Effect": "Deny"
}
```

## SCP-AMS-034: Impide la modificación de funciones específicas de IAM AssumeRolePolicy
<a name="scp-prevent-assumerolepolicy-modifications"></a>

Impida que se modifiquen las cuatro AssumeRolePolicy funciones de IAM especificadas.

```
{
  "Action": [
    "iam:UpdateAssumeRolePolicy"
  ],
  "Resource": [
     "arn:aws:iam::{ACCOUNT_ID}:role/{RESOURCE_NAME}"
  ],
  "Effect": "Deny"
}
```

## ConfigRule: Etiquetas obligatorias
<a name="cnfgrl-required-tags"></a>

Compruebe si las instancias EC2 tienen las etiquetas personalizadas que necesita. Además InfoSec, esto también es útil para la gestión de costes

```
ConfigRuleName: required-tags
      Description: >-
        A Config rule that checks whether EC2 instances have the required tags.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::EC2::Instance'
      InputParameters:
        tag1Key: COST_CENTER
        tag2Key: APP_ID
      Source:
        Owner: AWS
        SourceIdentifier: REQUIRED_TAGS
```

## ConfigRule: La clave de acceso está girada
<a name="cnfgrl-access-key-rotate"></a>

Compruebe que las claves de acceso se estén rotando dentro del período de tiempo especificado. Por lo general, se establece en 90 días según los requisitos de conformidad típicos.

```
ConfigRuleName: access-keys-rotated
      Description: >-
        A config rule that checks whether the active access keys are rotated
        within the number of days specified in maxAccessKeyAge. The rule is
        NON_COMPLIANT if the access keys have not been rotated for more than
        maxAccessKeyAge number of days.
      InputParameters:
        maxAccessKeyAge: '90'
      Source:
        Owner: AWS
        SourceIdentifier: ACCESS_KEYS_ROTATED
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: clave de acceso raíz de IAM en AMS
<a name="cnfgrl-iam-root-rotate"></a>

Compruebe que la clave de acceso raíz no esté presente en la cuenta. En el caso de las cuentas AMS Advanced, se espera que sea compatible out-of-the-box.

```
ConfigRuleName: iam-root-access-key-check
      Description: >-
        A config rule that checks whether the root user access key is available. The rule is COMPLIANT if the user access key does not exist.
      Source:
        Owner: AWS
        SourceIdentifier: IAM_ROOT_ACCESS_KEY_CHECK
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: EC2 gestionado por SSM
<a name="cnfgrl-ssm-managed"></a>

Compruebe que EC2s está siendo gestionado por SSM Systems Manager.

```
ConfigRuleName: ec2-instance-managed-by-systems-manager
      Description: >-
        A Config rule that checks whether the EC2 instances in the
        account are managed by AWS Systems Manager.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::EC2::Instance'
          - 'AWS::SSM::ManagedInstanceInventory'
      Source:
        Owner: AWS
        SourceIdentifier: EC2_INSTANCE_MANAGED_BY_SSM
```

## ConfigRule: Usuario de IAM no utilizado en AMS
<a name="cnfgrl-unused-user"></a>

Compruebe si hay credenciales de usuario de IAM que no se hayan utilizado durante un período específico. Al igual que la comprobación de rotación de claves, esta suele tener un valor predeterminado de 90 días según los requisitos de conformidad típicos.

```
ConfigRuleName: iam-user-unused-credentials-check
      Description: >-
        A config rule that checks whether IAM users have passwords
        or active access keys that have not been used within the
        specified number of days provided.
      InputParameters:
        maxCredentialUsageAge: '90'
      Source:
        Owner: AWS
SourceIdentifier: IAM_USER_UNUSED_CREDENTIALS_CHECK
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: registro de cubos en S3
<a name="cnfgrl-s3-logging"></a>

Comprueba que el registro esté habilitado para los depósitos de S3 de la cuenta.

```
ConfigRuleName: s3-bucket-logging-enabled
      Description: >-
        A Config rule that checks whether logging is enabled for S3 buckets.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::S3::Bucket'
      Source:
        Owner: AWS
SourceIdentifier: S3_BUCKET_LOGGING_ENABLED
```

## ConfigRule: Control de versiones de cubos de S3
<a name="cnfgrl-s3-versioning"></a>

Compruebe que el control de versiones y la eliminación de MFA (opcional) estén habilitados en todos los buckets de S3

```
ConfigRuleName: s3-bucket-versioning-enabled
      Description: >-
        A Config rule that checks whether versioning is enabled for S3
        buckets. Optionally, the rule checks if MFA delete is enabled for S3 buckets.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::S3::Bucket'
      Source:
        Owner: AWS
SourceIdentifier: S3_BUCKET_VERSIONING_ENABLED
```

## ConfigRule: Acceso público a S3
<a name="cnfgrl-s3-public-access"></a>

Comprueba que la configuración de acceso público (ACL pública, política pública, buckets públicos) esté restringida en toda la cuenta

```
ConfigRuleName: s3-account-level-public-access-blocks
      Description: >-
        A Config rule that checks whether the required public access block
        settings are configured from account level. The rule is only
        NON_COMPLIANT when the fields set below do not match the corresponding
        fields in the configuration item.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::S3::AccountPublicAccessBlock'
      InputParameters:
        IgnorePublicAcls: 'True'
        BlockPublicPolicy: 'True'
        BlockPublicAcls: 'True'
        RestrictPublicBuckets: 'True'
      Source:
        Owner: AWS
SourceIdentifier: S3_ACCOUNT_LEVEL_PUBLIC_ACCESS_BLOCKS
```

## ConfigRule: Hallazgos no archivados GuardDuty
<a name="cnfgrl-gd-findings"></a>

Compruebe si hay GuardDuty hallazgos no archivados que tengan una duración superior a la especificada. La duración predeterminada es de 30 días para los resultados de baja resolución, 7 días para los de media y de 1 día para los de alta.

```
ConfigRuleName: guardduty-non-archived-findings
      Description: >-
        A Config rule that checks whether the Amazon GuardDuty has findings that
        are non archived. The rule is NON_COMPLIANT if GuardDuty has non
        archived low/medium/high severity findings older than the specified number.
      InputParameters:
        daysLowSev: '30'
        daysMediumSev: '7'
        daysHighSev: '1'
      Source:
        Owner: AWS
        SourceIdentifier: GUARDDUTY_NON_ARCHIVED_FINDINGS
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: Eliminación de CMK
<a name="cnfgrl-cmk-deletion"></a>

Compruebe si hay claves maestras AWS Key Management Service personalizadas (CMKs) cuya eliminación esté programada (también conocida como pendiente). Esto es crucial, ya que el hecho de no darse cuenta de la eliminación de la CMK puede provocar que los datos sean irrecuperables

```
ConfigRuleName: kms-cmk-not-scheduled-for-deletion
      Description: >-
        A config rule that checks whether customer master keys (CMKs) are not
        scheduled for deletion in AWS Key Management Service (AWS KMS). The rule is
        NON_COMPLIANT if CMKs are scheduled for deletion.
      Source:
        Owner: AWS
SourceIdentifier: KMS_CMK_NOT_SCHEDULED_FOR_DELETION
      MaximumExecutionFrequency: TwentyFour_Hours
```

## ConfigRule: Rotación CMK
<a name="cnfgrl-cmk-rotation"></a>

Comprueba que la rotación automática esté habilitada para cada CMK de la cuenta

```
ConfigRuleName: cmk-backing-key-rotation-enabled
      Description: >-
        A config rule that checks that key rotation is enabled for each customer
        master key (CMK). The rule is COMPLIANT, if the key rotation is enabled
        for specific key object. The rule is not applicable to CMKs that have
        imported key material.
      Source:
        Owner: AWS
SourceIdentifier: CMK_BACKING_KEY_ROTATION_ENABLED
      MaximumExecutionFrequency: TwentyFour_Hours
```

# Notificación personalizada para las reglas de Config
<a name="scp-lib-custom-notice"></a>

Es posible que se produzcan casos de reglas de Config críticas que no cumplan con las normas y que requieran una mayor sensibilización directamente con sus equipos InfoSec y con los de liderazgo. En estos casos, AMS recomienda configurar una notificación personalizada basada en eventos de incumplimiento.

Por ejemplo:

```
ConfigRuleName: required-tags
      Description: >-
        A Config rule that checks whether EC2 instances have the mandated tags.
      Scope:
        ComplianceResourceTypes:
          - 'AWS::EC2::Instance'
      InputParameters:
        tag1Key: COST_CENTER
        tag2Key: APP_ID
      Source:
        Owner: AWS
SourceIdentifier: REQUIRED_TAGS
  NotificationEventRule:
    Type: 'AWS::Events::Rule'
    Properties:
      Name: CWEventForrequired-tags
      Description: >-
        SNS Notification for Non-Compliant Events of Config Rule:
        required-tags
      State: ENABLED
      EventPattern:
        detail-type:
          - Config Rules Compliance Change
        source:
          - aws.config
        detail:
          newEvaluationResult:
            complianceType:
              - NON_COMPLIANT
          configRuleARN:
            - 'Fn::GetAtt':
                - RequiredEC2Tags
                - Arn
      Targets:
        - Id: RemediationNotification
          Arn:
            Ref: SnsTopic
          InputTransformer:
            InputTemplate: >-
              "EC2 Instance <Instance_ID> is non-compliant. Please add required tags: COST_CENTER, APP_ID, Name, and Backup."
            InputPathsMap:
              instance_id: $.detail.resourceId
  SnsTopic:
    Type: 'AWS::SNS::Topic'
    Properties:
      Subscription:
        - Endpoint: Cloud_Ops_Leaders@customer.com
          Protocol: email
      TopicName: noncompliant-instance-notification
  SnsTopicPolicy:
    Type: 'AWS::SNS::TopicPolicy'
    Properties:
      PolicyDocument:
        Statement:
          - Sid: __default_statement_ID
            Effect: Allow
            Principal:
              AWS: '*'
            Action:
              - 'SNS:GetTopicAttributes'
              - 'SNS:SetTopicAttributes'
              - 'SNS:AddPermission'
              - 'SNS:RemovePermission'
              - 'SNS:DeleteTopic'
              - 'SNS:Subscribe'
              - 'SNS:ListSubscriptionsByTopic'
              - 'SNS:Publish'
              - 'SNS:Receive'
            Resource:
              Ref: SnsTopic
            Condition:
              StringEquals:
                'AWS:SourceOwner':
                  Ref: 'AWS::AccountId'
          - Sid: TrustCWEToPublishEventsToMyTopic
            Effect: Allow
            Principal:
              Service: events.amazonaws.com
            Action: 'sns:Publish'
            Resource:
              Ref: SnsTopic
      Topics:
        - Ref: SnsTopic
```