Saltar al contenido

Despliegue de Alta Disponibilidad Local

Introducción

El siguiente diagrama ilustra los componentes clave en una despliegue de alta disponibilidad de Vinyl:

adjunto

Vinyl requiere sincronización de clave de cifrado, Redis como bus de mensajes y sincronización de datos simple, y configuración del servidor de aplicaciones.

Claves de Cifrado de Datos

Vinyl utiliza el cifrado de datos para dos propósitos:

  1. Proteger tokens de seguridad como las cookies de sesión.

  2. cifrado de columnas a nivel de aplicación.

Ambos utilizan la misma tecnología de cifrado de datos subyacente. Específicamente, utilizan API de protección de datos ASP.Net. Aunque Vinyl intentará configurar la biblioteca de protección de datos automáticamente, es posible que sea necesaria una configuración adicional.

Almacenamiento de Claves de Cifrado de Datos

Las claves de cifrado de datos (DEK) son claves de cifrado simétricas que se utilizan para proteger los datos. Debido a que las DEK se utilizan para cifrar datos almacenados en la base de datos, las DEK en sí no se pueden almacenar en la base de datos. Vinyl admite múltiples políticas de almacenamiento DEK configurables. Los administradores deben elegir la política de almacenamiento adecuada para su ambiente. Vinyl admite las siguientes políticas de almacenamiento:

  • Sistema de archivos

  • T3

La política de almacenamiento se configura a través de AppSettings. Consulte Configuración .Net personalizada para obtener información adicional sobre AppSettings.

Almacenamiento del Sistema de Archivos

De forma predeterminada, Vinyl almacenará las DEK en el sistema de archivos en texto sin formato, debajo del directorio raíz de la aplicación web Vinyl.

Configuración Ejemplo Notas
DataEncryption.KeyStorage FileSystem Indica que Vinyl debe almacenar DEK en el sistema de archivos. Este es el valor predeterminado.
DataEncryption.Directory C:\inetpub\wwwroot\Vinyl\App_Data\Keys Identifica el directorio en el que se almacenarán las DEK. El valor predeterminado es el directorio App_Data\Keysd, debajo del directorio de instalación de Vinyl. El usuario del grupo de aplicaciones debe tener control total de este directorio.
DateEncryption.CertificateThumbprint C123B3E899807189F11F0EC4AC320760F00ECE34 Opcional. Huella digital X.509 de la clave de cifrado de clave (KEK). El certificado KEK debe registrarse en el almacén de certificados personales de la computadora local. La huella digital se puede encontrar consultando las propiedades del certificado.
Example AppSettings JSON Configuration
{
    "DataEncryption": {
        "KeyStorage": "FileSystem",
        "Directory": "C:\Path\To\Keys",
        "CertificateThumbprint": "C123B3E899807189F11F0EC4AC320760F00ECE34"
    }
}

Almacenamiento de Amazon S3

Debido a que el almacenamiento local de la instancia EC2 no se puede utilizar para almacenamiento a largo plazo, las DEK deben almacenarse en otro lugar. Soportes de Vinyl para almacenar DEK en cubos S3. Las siguientes configuraciones configuran el almacenamiento S3 DEK.

Configuración Ejemplo Notas
DataEncryption.KeyStorage S3 Indica que Vinyl debería almacenar DEK en Amazon S3.
DataEncryption.S3BucketEndpoint 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 de S3 en el que se almacenarán las claves de S3. La URL debe adoptar una de las siguientes formas: https://s3{-aws-region}.amazonaws.com/{bucket} o https://{bucket}.s3{-aws-region}.amazonaws.com. Para obtener más información, consulte el siguiente documento: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html
DataEncryption.S3KeyPrefix dev Opcional. Permite que múltiples ambientes almacenen DEK en el mismo depósito, aislando las claves por prefijo.
Example AppSettings JSON Configuration
{
    "DataEncryption": {
        "KeyStorage": "S3",
        "S3BucketEndpoint": "https://bucket.s3.us-east-2.amazonaws.com",
        "S3KeyPrefix": "dev"
    }
}

Configuración de Redis

Utilice Redis para facilitar la comunicación entre servidores de Vinyl. Todo lo que se necesita es un servidor pequeño, sin réplicas ni fragmentos.

Se ha probado que Vinyl funciona con Redis versión 3.2 y Redis 6.X.

Configuración del Servidor de Aplicaciones

Deberá realizar los siguientes cambios en la configuración predeterminada de Vinyl; estas configuraciones deben aplicarse a cada instancia de Vinyl. Todas las configuraciones deben ser idénticas para las instancias de Vinyl que sirven el mismo ambiente (DEV, QA o PROD).

Se debe configurar lo siguiente en C:\inetpub\wwwroot\Vinyl\AppSettings.json (Usando S3 para el almacenamiento de claves de cifrado de datos)

{
    "SharedState": {
        "Provider": "Redis",
        "RedisConnectionString": "REDISSERVER:6379,password=abc123"
    },
    "DataEncryption": {
        "KeyStorage": "S3",
        "S3BucketEndpoint": "https://BUCKET.s3.us-east-2.amazonaws.com",
        "S3KeyPrefix": "ENV"
    }
}

Se debe configurar lo siguiente en C:\inetpub\wwwroot\Vinyl\AppSettings.json (Usando NFS para el almacenamiento de claves de cifrado de datos)

{
    "SharedState": {
        "Provider": "Redis",
        "RedisConnectionString": "REDISSERVER:6379,password=abc123"
    },
    "DataEncryption": {
        "KeyStorage": "FileSystem",
        "Directory": "C:\Path\To\Keys"
    }
}

Cada instancia de Vinyl debe tener el mismo archivo Connection.xml.

Después de realizar cambios y reiniciar Vinyl, verifique los registros para verificar que la configuración se esté seleccionando correctamente.