Ir para o conteúdo

Implantação de Alta Disponibilidade no Local

Introdução

O diagrama a seguir ilustra os principais componentes em uma implantação de alta disponibilidade do Vinyl:

anexo

O Vinyl requer sincronização de chave de criptografia, Redis como um barramento de mensagens e sincronização simples de dados e configuração do servidor de aplicativos.

Chaves de Criptografia de Dados

O Vinyl usa criptografia de dados para duas finalidades:

  1. Proteção de tokens de segurança, como cookies de sessão.

  2. criptografia de coluna em nível de aplicativo.

Ambos usam a mesma tecnologia subjacente de criptografia de dados. Especificamente, eles usam API ASP.Net Data Protection. Embora o Vinyl tente configurar a biblioteca de proteção de dados automaticamente, configurações adicionais podem ser necessárias.

Armazenamento de Chave de Criptografia de Dados

Chaves de criptografia de dados (DEKs) são chaves de criptografia simétricas usadas para proteger dados. Como as DEKs são usadas para criptografar dados armazenados no banco de dados, as próprias DEKs não podem ser armazenadas no banco de dados. O Vinyl oferece suporte a diversas políticas de armazenamento DEK configuráveis. Os administradores devem escolher a política de armazenamento apropriada para seu ambiente. O Vinyl oferece suporte às seguintes políticas de armazenamento:

  • Sistema de arquivo

  • S3

A política de armazenamento é configurada via AppSettings. Consulte Configuração .Net personalizada para obter informações adicionais sobre AppSettings.

Armazenamento do Sistema de Arquivos

Por padrão, o Vinyl armazenará DEKs no sistema de arquivos em texto simples, abaixo do diretório raiz do aplicativo web do Vinyl.

Configuração Exemplo Notas
DataEncryption.KeyStorage FileSystem Indica que o Vinyl deve armazenar DEKs no sistema de arquivos. Este é o valor padrão.
DataEncryption.Directory C:\inetpub\wwwroot\Vinyl\App_Data\Keys Identifica o diretório no qual os DEKs serão armazenados. O padrão é o diretório App_Data\Keysd, abaixo do diretório de instalação do Vinyl. O usuário do pool de aplicativos deve ter controle total desse diretório.
DateEncryption.CertificateThumbprint C123B3E899807189F11F0EC4AC320760F00ECE34 Opcional. Impressão digital X.509 da chave de criptografia (KEK). O certificado KEK deve ser registrado no armazenamento de certificados pessoais do computador local. A impressão digital pode ser encontrada observando as propriedades do certificado.
Example AppSettings JSON Configuration
{
    "DataEncryption": {
        "KeyStorage": "FileSystem",
        "Directory": "C:\Path\To\Keys",
        "CertificateThumbprint": "C123B3E899807189F11F0EC4AC320760F00ECE34"
    }
}

Armazenamento Amazon S3

Como o armazenamento local da instância do EC2 não pode ser usado para armazenamento de longo prazo, os DEKs devem ser armazenados em outro lugar. O Vinyl oferece suporte ao armazenamento de DEKs em buckets S3. As configurações a seguir configuram o armazenamento S3 DEK.

Configuração Exemplo Notas
DataEncryption.KeyStorage S3 Indica que o Vinyl deve armazenar DEKs no Amazon S3.
DataEncryption.S3BucketEndpoint https://s3.amazonaws.com/vinyl-data-encryption-keys ou https://vinyl-data-encryption-keys.s3.amazonaws.com/ Identifica a região AWS e o bucket S3 nos quais as chaves S3 serão armazenadas. A URL deve assumir um dos seguintes formatos: https://s3{-aws-region}.amazonaws.com/{bucket} ou https://{bucket}.s3{-aws-region}.amazonaws.com. Para obter mais informações, consulte o seguinte documento: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html
DataEncryption.S3KeyPrefix dev Opcional. Permite que vários ambientes armazenem DEKs no mesmo bucket, isolando as chaves por prefixo.
Example AppSettings JSON Configuration
{
    "DataEncryption": {
        "KeyStorage": "S3",
        "S3BucketEndpoint": "https://bucket.s3.us-east-2.amazonaws.com",
        "S3KeyPrefix": "dev"
    }
}

Configuração do Redis

Use Redis para facilitar a comunicação entre servidores Vinyl. Basta um servidor pequeno, sem réplicas ou fragmentos.

O Vinyl foi testado para funcionar com Redis versão 3.2 e também com Redis 6.X

Configuração do Servidor de Aplicativos

Você precisará fazer as seguintes alterações na configuração padrão do Vinyl – essas configurações devem ser aplicadas a todas as instâncias do Vinyl. Todas as configurações devem ser idênticas para instâncias do Vinyl que atendem ao mesmo ambiente (DEV, QA ou PROD).

O seguinte deve ser configurado em C:\inetpub\wwwroot\Vinyl\AppSettings.json (Usando S3 para armazenamento de chave de criptografia de dados)

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

O seguinte deve ser configurado em C:\inetpub\wwwroot\Vinyl\AppSettings.json (Usando NFS para armazenamento de chave de criptografia de dados)

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

Cada instância do Vinyl deve ter o mesmo arquivo connection.xml.

Após fazer as alterações e reiniciar o Vinyl, verifique os logs para verificar se as configurações estão sendo selecionadas corretamente.