

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.

# Bloquee el acceso público a Amazon RDS mediante Cloud Custodian
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian"></a>

*abhay kumar y Dwarika Patra, Amazon Web Services*

## Resumen
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-summary"></a>

Muchas organizaciones ejecutan sus cargas de trabajo y servicios en múltiples proveedores de nube. En estos entornos de nube híbrida, la infraestructura de nube necesita un gobierno estricto, además de la seguridad proporcionada por los proveedores de nube individuales. Una base de datos en la nube, como Amazon Relational Database Service (Amazon RDS), es un servicio importante que debe supervisarse para detectar cualquier vulnerabilidad de acceso y permisos. Si bien puede restringir el acceso a la base de datos de Amazon RDS configurando un grupo de seguridad, también puede añadir un segundo nivel de protección para prohibir acciones como el acceso público. Bloquear el acceso público lo ayudará a cumplir con el Reglamento General de Protección de Datos (RGPD), la Ley de Portabilidad y Responsabilidad de Seguros de Salud (HIPAA), el Instituto Nacional de Estándares y Tecnología (NIST) y el Estándar de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS).

Cloud Custodian es un motor de reglas de código abierto que puede usar para imponer restricciones de acceso a los recursos de Amazon Web Services (AWS), como Amazon RDS. Cloud Custodian le permite establecer reglas que validen el entorno según los estándares de seguridad y conformidad definidos. Puede usar Cloud Custodian para administrar sus entornos de nube y así garantizar el cumplimiento de las políticas de seguridad, las políticas de etiquetado, la recopilación de elementos no utilizados y la administración de costos. Con Cloud Custodian puede usar una única interfaz para implementar la gobernanza en su entorno de nube híbrida. Por ejemplo, puede usar la interfaz Cloud Custodian para interactuar con Microsoft Azure AWS y reducir el esfuerzo de trabajar con mecanismos como AWS Config los grupos de AWS seguridad y las políticas de Azure.

Este patrón proporciona instrucciones para usar Cloud Custodian AWS para imponer la restricción de la accesibilidad pública en las instancias de Amazon RDS.

## Requisitos previos y limitaciones
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ [Un par de claves](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds-create)
+ AWS Lambda instalado

## Arquitectura
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-architecture"></a>

En el siguiente diagrama AWS Lambda, se muestra a Cloud Custodian implementando la política AWS CloudTrail e iniciando el `CreateDBInstance` evento y configurando la función Lambda en `PubliclyAccessible` false en Amazon RDS.

![\[Use Cloud Custodian en AWS para restringir el acceso público a las instancias de Amazon RDS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/90f9537e-9365-4da2-8a28-da0ff374743c/images/6d04ca3b-6aa4-4c62-ade9-8b7474928c5e.png)


## Tools (Herramientas)
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-tools"></a>

**Servicios de AWS**
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)le ayuda a auditar la gobernanza, el cumplimiento y el riesgo operativo de su empresa. Cuenta de AWS
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante comandos en su consola de línea de comandos.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) lo ayuda a configurar, utilizar y escalar una base de datos relacional en la Nube de AWS.

**Otras herramientas**
+ [Cloud Custodian](https://cloudcustodian.io/) unifica las herramientas y scripts que emplean muchas organizaciones para administrar sus cuentas de nube pública en una sola herramienta de código abierto. Emplea un motor de reglas sin estado para la definición y aplicación de las políticas con métricas, resultados estructurados e informes detallados de la infraestructura de la nube. Se integra perfectamente con tiempos de ejecución sin servidor para proporcionar soluciones y respuestas en tiempo real con una baja sobrecarga operativa.

## Epics
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-epics"></a>

### Configure el AWS CLI
<a name="set-up-the-cli"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale el AWS CLI. | Para instalar el AWS CLI, siga las instrucciones de la [AWS documentación](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html). | Administrador de AWS | 
| Configure AWS las credenciales. | Configure los ajustes AWS CLI con los que interactuarán AWS, incluidos el Región de AWS formato de salida que desee utilizar.<pre>$>aws configure<br />AWS Access Key ID [None]: <your_access_key_id><br />AWS Secret Access Key [None]: <your_secret_access_key><br />Default region name [None]:<br />Default output format [None]:</pre>Para obtener más información, consulte la [Documentación de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). | Administrador de AWS | 
| Crear un rol de IAM. | Para crear un rol de IAM con el rol de ejecución de Lambda, ejecute el siguiente comando.<pre>aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}</pre> | AWS DevOps | 

### Configure Cloud Custodian
<a name="set-up-cloud-custodian"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale Cloud Custodian. | Para instalar Cloud Custodian en su sistema operativo y entorno, siga las instrucciones de la [documentación de Cloud Custodian](https://cloudcustodian.io/docs/quickstart/index.html#install-cc). | DevOps ingeniero | 
| Consulte el esquema de Cloud Custodian. | Para ver una lista completa de los recursos de Amazon RDS con los que puede ejecutar políticas, introduzca el siguiente comando.<pre>custodian schema aws.rds</pre> | DevOps ingeniero | 
| Cree la política de Cloud Custodian. | Guarda el código que se encuentra en el *archivo de políticas de Cloud Custodian* en la sección de [Información adicional](#block-public-access-to-amazon-rds-by-using-cloud-custodian-additional) con una extensión YAML. | DevOps ingeniero | 
| Defina las acciones de Cloud Custodian para cambiar el indicador de acceso público. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/block-public-access-to-amazon-rds-by-using-cloud-custodian.html) | DevOps ingeniero | 
| Ejecute una prueba. | (Opcional) Para comprobar qué recursos identifica la política sin ejecutar ninguna acción en ellos, emplee el siguiente comando.<pre>custodian run -dryrun <policy_name>.yaml -s <output_directory></pre> | DevOps ingeniero | 

### Implemente la política
<a name="deploy-the-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la política mediante Lambda. | Para crear la función de Lambda que ejecutará la política, introduzca el siguiente comando.<pre>custodian run -s policy.yaml</pre>Luego, el AWS CloudTrail `CreateDBInstance` evento iniciará esta política.Como resultado, AWS Lambda configurará el indicador de acceso público `false` para las instancias que cumplan con los criterios. | DevOps ingeniero | 

## Recursos relacionados
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-resources"></a>
+ [AWS Lambda sitio web](https://aws.amazon.com/lambda/)
+ [Sitio web de Amazon RDS](https://aws.amazon.com/rds/)
+ [Documentación de Cloud Custodian](https://cloudcustodian.io/docs/quickstart/index.html)

## Información adicional
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-additional"></a>

**Archivo YAML de política de Cloud Custodian**

```
policies:
  - name: "block-public-access"
    resource: rds
    description: |
      This Enforcement blocks public access for RDS instances.
    mode:
      type: cloudtrail
      events:
        - event: CreateDBInstance # Create RDS instance cloudtrail event
          source: rds.amazonaws.com
          ids: requestParameters.dBInstanceIdentifier
      role: arn:aws:iam::1234567890:role/Custodian-compliance-role
    filters:
      - type: event
        key: 'detail.requestParameters.publiclyAccessible'
        value: true
    actions:
      - type: set-public-access
        state: false
```

**Archivo rds.py de recursos de c7n**

```
@actions.register('set-public-access')
 class RDSSetPublicAvailability(BaseAction):
 
     schema = type_schema(
         "set-public-access",
         state={'type': 'boolean'})
     permissions = ('rds:ModifyDBInstance',)
 
     def set_accessibility(self, r):
         client = local_session(self.manager.session_factory).client('rds')
         waiter = client.get_waiter('db_instance_available')
         waiter.wait(DBInstanceIdentifier=r['DBInstanceIdentifier'])
         client.modify_db_instance(
             DBInstanceIdentifier=r['DBInstanceIdentifier'],
             PubliclyAccessible=self.data.get('state', False))
 
 
     def process(self, rds):
         with self.executor_factory(max_workers=2) as w:
             futures = {w.submit(self.set_accessibility, r): r for r in rds}
             for f in as_completed(futures):
                 if f.exception():
                     self.log.error(
                         "Exception setting public access on %s  \n %s",
                         futures[f]['DBInstanceIdentifier'], f.exception())
         return rds
```

**Integración de Security Hub CSPM**

Cloud Custodian se puede integrar con [AWS Security Hub CSPM](https://aws.amazon.com/security-hub/) para enviar resultados de seguridad y tratar de adoptar medidas correctivas. Para obtener más información, consulte [Anuncio de la integración de Cloud Custodian con](https://aws.amazon.com/blogs/opensource/announcing-cloud-custodian-integration-aws-security-hub/). AWS Security Hub CSPM