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:
|
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:
|
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"
}
}
}