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:
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:
-
Proteção de tokens de segurança, como cookies de sessão.
-
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. |
{
"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. |
{
"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.