

# Asegurar las variables de entorno Lambda
<a name="configuration-envvars-encryption"></a>

A fin de proteger las variables de entorno, puede utilizar el cifrado en el servidor para proteger los datos en reposo y el cifrado del lado del cliente para proteger los datos en tránsito.

**nota**  
Para aumentar la seguridad de la base de datos, se recomienda utilizar AWS Secrets Manager en lugar de variables de entorno para almacenar las credenciales de la base de datos. Para obtener más información, consulte [Uso de secretos de Secrets Manager en Funciones de Lambda](with-secrets-manager.md).

**Seguridad en reposo**  
Lambda siempre proporciona cifrado en el servidor en reposo con una AWS KMS key. De forma predeterminada, Lambda utiliza una Clave administrada de AWS. Si este comportamiento predeterminado se ajusta a su flujo de trabajo, no tiene que configurar nada más. Lambda crea la Clave administrada de AWS en su cuenta y administra los permisos por usted. AWS no cobra por usar esta clave.

Si lo prefiere, puede proporcionar una clave administrada por el cliente de AWS KMS en su lugar. Puede hacerlo para tener control sobre la rotación de la clave de KMS o para cumplir con los requisitos de su organización para administrar claves de KMS. Cuando usa una clave administrada por el usuario, solo los usuarios de su cuenta con acceso a la clave de KMS pueden ver o administrar las variables de entorno de la función.

Las claves administradas por el cliente ocasionan cargos de AWS KMS estándar. Para más información, consulte [Precios de AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

**Seguridad en tránsito**  
Para mayor seguridad, puede habilitar las funciones auxiliares del cifrado en tránsito, de modo que garantiza que las variables de entorno se cifren en el lado del cliente para su protección en tránsito.

**Configuración del cifrado de las variables de entorno**

1. Use AWS Key Management Service (AWS KMS) a fin de crear claves administradas por el cliente para que Lambda las utilice para el cifrado del lado del cliente y del servidor. Para obtener más información, consulte [Creación de claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) en la *Guía para desarrolladores de AWS Key Management Service*.

1. Mediante la consola de Lambda, vaya a la página **Editar variables de entorno**.

   1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

   1. Elija una función.

   1. Elija **Configuración** y, a continuación, elija **Variables de entorno** en la barra de navegación izquierda.

   1. En la sección **Variables de entorno**, elija **Editar**.

   1. Expanda **Configuración de cifrado**.

1. (Opcional) Habilite las funciones auxiliares de cifrado de la consola para que utilicen el cifrado del cliente a fin de proteger los datos en tránsito.

   1. En **Cifrado en tránsito**, elija **Activar funciones auxiliares para el cifrado en tránsito**.

   1. Para cada variable de entorno para la que desee habilitar las funciones auxiliares de cifrado de la consola, elija **Cifrar** junto a la variable de entorno.

   1.  En la AWS KMS key para el cifrado en tránsito, elija una clave administrada por el cliente que haya creado al principio de este procedimiento.

   1. Elija **Política de rol de ejecución** y copie la política. Esta política concede permiso al rol de ejecución de la función para descifrar las variables de entorno.

      Guarde esta política para usarla en el último paso de este procedimiento.

   1. Agregue el código a la función que descifre las variables de entorno. Para ver un ejemplo, elija **Fragmento para descifrar secretos**.

1. (Opcional) Especifique su clave administrada por el cliente para el cifrado en reposo.

   1. Elija **Use una clave maestra del cliente**.

   1. Elija una clave administrada por el cliente que haya creado al principio de este procedimiento.

1. Seleccione **Save**.

1. Configure los permisos.

   Si está utilizando una clave administrada por el cliente con cifrado en el servidor, conceda permisos a cualquier usuario o rol que desee que pueda ver o administrar variables de entorno en la función. Para obtener más información, consulte [Administración de permisos para la clave de KMS de cifrado en el servidor](#managing-permissions-to-your-server-side-encryption-key).

   Si habilita el cifrado del lado del cliente para la seguridad en tránsito, su función necesita permiso para llamar a la operación de la API `kms:Decrypt`. Agregue la política que guardó anteriormente en este procedimiento al [rol de ejecución](lambda-intro-execution-role.md) de la función.

## Administración de permisos para la clave de KMS de cifrado en el servidor
<a name="managing-permissions-to-your-server-side-encryption-key"></a>

No se requieren permisos de AWS KMS para el usuario o el rol de ejecución de la función para utilizar la clave de cifrado predeterminada. Para utilizar una clave administrada por el cliente, necesita permisos de uso de la clave. Lambda usa sus permisos para crear una concesión en la clave. Esto permite a Lambda usarlo para el cifrado.
+ `kms:ListAliases`: para ver las teclas en la consola de Lambda.
+ `kms:CreateGrant`, `kms:Encrypt`: para configurar una clave administrada por el cliente en una función.
+ `kms:Decrypt`: para ver y administrar variables de entorno cifradas con una clave administrada por el cliente.

Puede obtener estos permisos de su Cuenta de AWS o de la política de permisos basada en recursos de una clave. `ListAliases` surge de las [políticas administradas en Lambda](access-control-identity-based.md). Las políticas clave conceden los permisos restantes a los usuarios del grupo **Usuarios clave** .

Los usuarios sin permisos `Decrypt` todavía pueden administrar funciones, pero no pueden ver variables de entorno ni administrarlas en la consola de Lambda. Para evitar que un usuario vea variables de entorno, añada una instrucción a los permisos del usuario que deniegue el acceso a la clave predeterminada, a una clave administrada por el cliente o a todas las claves.

**Example Política de IAM: denegar acceso por ARN de clave**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-2:111122223333:key/3be10e2d-xmpl-4be4-bc9d-0405a71945cc"
        }
    ]
}
```

Para obtener información detallada sobre la administración de permisos de clave, consulte [Uso de políticas de claves en AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) en la *Guía para desarrolladores de AWS Key Management Service*.