Saltar al contenido

Configuración de Cifrado de Datos

Descripción General

App Builder utiliza el cifrado de datos para dos propósitos:

  • Protección de tokens de seguridad como cookies de sesión
  • cifrado de columnas a nivel de aplicación

Ambos utilizan la misma tecnología de cifrado de datos subyacente. En concreto, utilizan la API de protección de datos ASP.Net. Aunque App Builder intentará configurar la biblioteca de protección de datos automáticamente, por lo que puede ser necesaria una configuración adicional.

Claves de Cifrado de Datos

Las claves de cifrado de datos (DEK) son claves de cifrado simétricas que se utilizan para proteger datos. App Builder admite múltiples políticas de cifrado y almacenamiento de claves configurables. Los administradores deben elegir las políticas adecuadas para su ambiente.

Almacenamiento

App Builder admite las siguientes políticas de almacenamiento clave:

  • Sistema de archivos, ya sea local o compartido en red
  • Base de datos
  • Amazon Web Services (AWS) S3
  • Almacén de parámetros de AWS Systems Manager

Encriptación

Según la ubicación de almacenamiento, los administradores deben considerar la posibilidad de cifrar las claves. App Builder admite las siguientes políticas de cifrado de clave:

  • Certificado
  • Servicio de administración de claves de AWS

Configuración

Las políticas de cifrado y almacenamiento de claves se configuran al iniciar el sistema. La configuración se puede realizar mediante el archivo appsettings.json:

{
  "DataEncryption": {
    "KeyStorage": "FileSystem",
    "KeyEncryption": "None"
  }
}

La configuración también puede ser proporcionada por variables de ambiente:

export DATAENCRYPTION__KEYSTORAGE=FileSystem
export DATAENCRYPTION__KEYENCRYPTION=None

Consulte Configuración App Builder al iniciar para obtener información adicional.

Almacenamiento

Sistema de Archivos

De forma predeterminada, App Builder almacenará las claves en el sistema de archivos como texto sin formato. Se almacenan en el directorio keys debajo del App Builder directorio de instalación.

Ajustes
Configuración Ejemplo Notas
Almacenamiento de claves FileSystem Indica que App Builder debe almacenar las claves en el sistema de archivos. Esta es la política predeterminada.TABLEROWEND
Directorio keys Identifica el directorio en el que se almacenarán las claves. El valor predeterminado es el directorio keys debajo de App Builder directorio de instalación. El App Builder el proceso debe tener control total de este directorio. En Windows, esto se logra otorgando permiso de usuario al grupo de aplicaciones de IIS.
Ejemplo
{
  "DataEncryption": {
     "KeyStorage": "FileSystem",
     "Directory": "keys"
  }
}

Base de Datos

Las claves se pueden almacenar en el App Builder base de datos. Tenga en cuenta que, dado que las claves se utilizan para cifrar datos que también están almacenados en la base de datos, las claves en sí mismas deben cifrarse.

Ajustes
Configuración Ejemplo Notas
Almacenamiento de claves Database Indica que App Builder debe almacenar las claves en el _App Builder _ base de datos.
Ejemplo
{
  "DataEncryption": {
     "KeyStorage": "Database",
     "KeyEncryption": "Certificate",
     "Certificate": "...base64-encoded...",
     "CertificatePassword": "password"
  }
}

AWS S3

El almacenamiento local de instancias EC2 no suele utilizarse para la persistencia a largo plazo. Como alternativa, App Builder admite el almacenamiento de claves en depósitos S3.

Ajustes
Configuración Ejemplo Notas
Almacenamiento de claves S3 Indica que App Builder debe almacenar claves en un depósito AWS S3.
Punto final del depósito S3 https://s3.amazonaws.com/vinyl-data-encryption-keys
-o-
https://vinyl-data-encryption-keys.s3.amazonaws.com/
Identifica la región de AWS y el depósito S3 en el que se almacenarán las claves S3. La URL debe tener uno de los siguientes formatos:
  • https://s3{-aws-region}.amazonaws.com/{bucket}
  • https://{bucket}.s3{-aws-region}.amazonaws.com
Para obtener más información, consulte el siguiente documento: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html
Prefijo de clave S3 dev Opcional. Permite que varios ambientes almacenen claves en el mismo depósito, aislando las claves por prefijo.
Ejemplo
{
  "DataEncryption": {
     "KeyStorage": "S3",
     "S3BucketEndpoint": "https://{bucket}.s3{-aws-region}.amazonaws.com",
     "S3KeyPrefix": "production"
  }
}

Almacén de Parámetros del Administrador de Sistemas de AWS

El almacenamiento local de instancias EC2 no suele utilizarse para la persistencia a largo plazo. Como alternativa, las claves se pueden almacenar en el almacén de parámetros de AWS Systems Manager. Las claves almacenadas en el almacén de parámetros se pueden cifrar mediante el servicio de administración de claves (KMS).

Ajustes
Configuración Ejemplo Notas
Almacenamiento de claves ParameterStore Indica que App Builder debe almacenar claves en el almacén de parámetros de AWS Systems Manager.
PrefijoNombreParámetro /production Aísla las claves por prefijo.
Id. de clave de Kms arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab Opcional. Identifica la clave KMS que se debe utilizar para cifrar las claves. El valor debe adoptar la forma de un nombre de recurso de Amazon (ARN).
Ejemplo
{
  "DataEncryption": {
     "KeyStorage": "ParameterStore",
     "ParameterNamePrefix": "/production",
     "KmsKeyId": "arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  }
}

Encriptación

Ninguno

De forma predeterminada, App Builder no cifrar las claves. Sin embargo, las claves se pueden encriptar de forma transparente según la política de almacenamiento. Por ejemplo, un depósito S3 se puede configurar para cifrar todos los datos.

Ajustes
Configuración Ejemplo Notas
Cifrado de clave None Indica que las claves deben almacenarse en texto sin formato.
Ejemplo
{
  "DataEncryption": {
    "KeyStorage": "FileSystem",
    "KeyEncryption": "None"
  }
}

Certificado

Las claves se pueden cifrar mediante un certificado X.509.

Ajustes
Configuración Ejemplo Notas
Cifrado de clave Certificate Indica que las claves deben cifrarse mediante un certificado X.509. Los administradores deben proporcionar Certificate o CertificateThumbprint.
Certificado Certificado X.509. El certificado debe proporcionarse como código base64, PKCS#12 (PFX) con clave privada. Requiere CertificatePassword.
CertificatePassword Contraseña del certificado X.509.
CertificateThumbprint Huella digital del certificado X.509. App Builder intentará cargar el certificado desde el almacén de certificados Personal de la cuenta Equipo local.
Ejemplo
{
  "DataEncryption": {
     "KeyStorage": "FileSystem",
     "CertificateThumbprint": "C123B3E899807189F11F0EC4AC320760F00ECE34"
  }
}

Servicio de Gestión de Claves de AWS

App Builder se puede configurar para cifrar claves mediante AWS Key Management Service (KMS).

Ajustes
Configuración Ejemplo Notas
Cifrado de clave Kms Indica que App Builder debe cifrar claves con AWS KMS.
Id. de clave de Kms arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab Identifica la clave KMS que se debe utilizar para cifrar las claves. El valor debe tener la forma de un nombre de recurso de Amazon (ARN).
Ejemplo
{
  "DataEncryption": {
     "KeyStorage": "Database",
     "KeyEncryption": "Kms",
     "KmsKeyId": "arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  }
}

Servicios Web de Amazon

Política de Depósito de S3

Al almacenar claves de cifrado en un depósito S3, considere usar una política de rol para otorgarle a la instancia EC2 acceso al depósito.

Ejemplo
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::{bucket-name}/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": "*"
        }
    ]
}

Política de Claves KMS

Al cifrar claves con KMS, considere usar una política de rol para otorgarle a la instancia EC3 acceso a la clave.

Ejemplo
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:GenerateDataKey",
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    ]
  }
}

Tallo de Frijol Elástico

App Builder incluye un secuencia de comandos .ebextensions que registra automáticamente las propiedades del ambiente.

Valores Predeterminados

La configuración predeterminada de Elastic Beanstalk varía según la versión de App Builder.

Configuración 3.2 y anteriores 3.3 y superiores
Almacenamiento de claves S3 Database
Punto final del depósito S3 https://{bucket}.s3{-aws-region}.amazonaws.com
PrefijoS3Bucket {elastic-beanstalk-environment-name}
Cifrado de clave Kms
Id. de clave de Kms {kms-key-arn}

Precaución

App Builder no se iniciará con las propiedades de ambiente predeterminadas de Elastic Beanstalk. Los administradores deben cambiar KmsKeyId o elegir una política de cifrado de clave alternativa.

Proveedores de Criptografía

App Builder es una aplicación .NET. En .NET, las implementaciones de algoritmos criptográficos pueden ser suministradas por uno de tres proveedores de criptografía.

  • Proveedor de servicios de cifrado (CSP): el proveedor de servicios de cifrado es un contenedor de la API de criptografía de Windows (CAPI). CAPI ha quedado obsoleto, por lo que este proveedor no es compatible.
  • Criptografía de próxima generación (CNG): los algoritmos implementados por el proveedor de CNG suelen cumplir con la normativa FIPS. Este es el proveedor de criptografía predeterminado.
  • Administrado: los algoritmos implementados por este proveedor no suelen ser compatibles con FIPS. Pueden ser más lentos que las implementaciones CNG equivalentes. Sin embargo, las implementaciones administradas se envían con .NET y, por lo tanto, están disponibles en todas las plataformas.

Ajustes

Configuración Ejemplo Notas
Proveedor de criptomonedas Cng Determina el proveedor de cifrado. Los valores válidos incluyen:
  • Cng- Criptografía de próxima generación. Predeterminado.
  • Managed- Implementaciones gestionadas.

Ejemplo

{
  "DataEncryption": {
    "CryptoProvider": "Managed"
  }
}

Importar

Las claves de cifrado de datos se pueden importar al iniciar el sistema. Normalmente, esto se hace para migrar claves de una ubicación de almacenamiento a otra. Las claves se descifrarán y cifrarán en el proceso.

Ajustes

Configuración Ejemplo Notas
Importar Conjunto alternativo de políticas de cifrado y almacenamiento de claves.

Ejemplo

{
  "DataEncryption": {
    "KeyStorage": "Database",
    "KeyEncryption": "Certificate",
    "Certificate": "...base64-encoded...",
    "CertificatePassword": "password",
    "Import": {
      "KeyStorage": "FileSystem",
      "Directory": "keys"
    }
  }
}