Ir para o conteúdo

Configuração de Criptografia de Dados

Visão Geral

App Builder usa criptografia de dados para dois propósitos:

  • Proteger tokens de segurança, como cookies de sessão
  • criptografia de coluna em nível de aplicativo

Ambos usam a mesma tecnologia de criptografia de dados subjacente. Especificamente, eles usam ASP.Net Data Protection API. Embora App Builder tentará configurar a biblioteca de Proteção de Dados automaticamente, configuração adicional pode ser necessária.

Chaves de Criptografia de Dados

Chaves de Criptografia de Dados (DEKs) são chaves de criptografia simétricas usadas para proteger dados. App Builder suporta múltiplas políticas de armazenamento e criptografia de chaves configuráveis. Os administradores devem escolher as políticas apropriadas para seu ambiente.

Armazenar

App Builder suporta as seguintes políticas de armazenamento de chaves:

  • Sistema de arquivos, compartilhamento local ou de rede
  • Banco de dados
  • Amazon Web Services (AWS) S3
  • AWS Systems Manager Parameter Store

Criptografia

Dependendo do local de armazenamento, os administradores devem considerar a criptografia de chaves. App Builder suporta as seguintes políticas de criptografia principais:

  • Certificado
  • Serviço de gerenciamento de chaves da AWS

Configuração

As políticas de armazenamento e criptografia de chaves são configuradas na inicialização. A configuração pode ser fornecida usando o arquivo appsettings.json:

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

A configuração também pode ser fornecida por variáveis de ambiente:

export DATAENCRYPTION__KEYSTORAGE=FileSystem
export DATAENCRYPTION__KEYENCRYPTION=None

Veja Configurando App Builder na inicialização para obter informações adicionais.

Armazenar

Sistema de Arquivos

Por padrão, App Builder armazenará chaves no sistema de arquivos como texto simples. Elas são armazenadas no diretório keys abaixo do App Builder diretório de instalação.

Configurações
Configuração Exemplo Notas
Armazenamento de Chaves FileSystem Indica que App Builder deve armazenar chaves no sistema de arquivos. Esta é a política padrão.
Diretório keys Identifica o diretório no qual as chaves serão armazenadas. O padrão é o diretório keys abaixo do App Builder diretório de instalação. O App Builder processo deve ter controle total deste diretório. No Windows, isso é obtido concedendo ao usuário do pool de aplicativos do IIS permissão.
Exemplo
{
  "DataEncryption": {
     "KeyStorage": "FileSystem",
     "Directory": "keys"
  }
}

Base de Dados

As chaves podem ser armazenadas no App Builder banco de dados. Observe que, como as chaves são usadas para criptografar dados que também são armazenados no banco de dados, as próprias chaves devem ser criptografadas.

Configurações

| Configuração | Exemplo | Notas |TABLEROWEND| ...TABLEROWEND | Armazenamento de Chaves | Database| Indica que App Builder deve armazenar as chaves no _App Builder _ banco de dados. |

Exemplo
{
  "DataEncryption": {
     "KeyStorage": "Database",
     "KeyEncryption": "Certificate",
     "Certificate": "...base64-encoded...",
     "CertificatePassword": "password"
  }
}

AWS S3

O armazenamento local da instância EC2 não é normalmente usado para persistência de longo prazo. Como alternativa, App Builder suporta armazenamento de chaves em buckets S3.

Configurações
Configuração Exemplo Notas
Armazenamento de Chaves S3 Indica que App Builder deve armazenar chaves em um bucket AWS S3.
Ponto de extremidade do S3Bucket https://s3.amazonaws.com/vinyl-data-encryption-keys
-ou-
https://vinyl-data-encryption-keys.s3.amazonaws.com/
Identifica a região da AWS e o bucket S3 no qual as chaves S3 serão armazenadas. A URL deve assumir um dos seguintes formatos:
  • https://s3{-aws-region}.amazonaws.com/{bucket}
  • https://{bucket}.s3{-aws-region}.amazonaws.com
Para obter mais informações, consulte o seguinte documento: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html
_Prefixo_da_Chave_S3 dev Opcional. Permite que vários ambientes armazenem chaves no mesmo bucket, isolando as chaves por prefixo.
Exemplo
{
  "DataEncryption": {
     "KeyStorage": "S3",
     "S3BucketEndpoint": "https://{bucket}.s3{-aws-region}.amazonaws.com",
     "S3KeyPrefix": "production"
  }
}

Armazenamento de Parâmetros do Gerenciador de Sistemas AWS

O armazenamento local da instância EC2 normalmente não é usado para persistência de longo prazo. Como alternativa, as chaves podem ser armazenadas no AWS Systems Manager Parameter Store. As chaves armazenadas no Parameter Store podem ser criptografadas usando o Key Management Service (KMS).

Configurações

| Configuração | Exemplo | Notas |TABLEROWEND| ...TABLEROWEND | Armazenamento de Chaves | ParameterStore| Indica que App Builder deve armazenar chaves no AWS Systems Manager Parameter Store. | | PrefixoNomeDoParâmetro | /production| Isola chaves por prefixo. | | KmsKeyId | arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab | Opcional. Identifica a chave KMS que deve ser usada para criptografar chaves. O valor deve assumir a forma de um Amazon Resource Name (ARN). |

Exemplo
{
  "DataEncryption": {
     "KeyStorage": "ParameterStore",
     "ParameterNamePrefix": "/production",
     "KmsKeyId": "arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  }
}

Criptografia

Nenhum

Por padrão, App Builder não criptografar chaves. No entanto, as chaves podem ser criptografadas de forma transparente com base na política de armazenamento. Por exemplo, um bucket S3 pode ser configurado para criptografar todos os dados.

Configurações

| Configuração | Exemplo | Notas |TABLEROWEND| ...TABLEROWEND | Criptografia de Chave | None| Indica que as chaves devem ser armazenadas em texto simples. |

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

Certificado

As chaves podem ser criptografadas usando um certificado X.509.

Configurações

| Configuração | Exemplo | Notas |TABLEROWEND| ...TABLEROWEND | Criptografia de Chave | Certificate| Indica que as chaves devem ser criptografadas usando um certificado X.509. Os administradores devem fornecer Certificate ou CertificateThumbprint. | | Certificate | | Certificado X.509. O certificado deve ser fornecido como um PKCS#12 (PFX) codificado em base64 com chave privada. Requer CertificatePassword. | | CertificatePassword | | Senha do certificado X.509. | | CertificateThumbprint | | Impressão digital do certificado X.509. App Builder tentará carregar o certificado do armazenamento de certificados Pessoal da conta Computador Local. |

Exemplo
{
  "DataEncryption": {
     "KeyStorage": "FileSystem",
     "CertificateThumbprint": "C123B3E899807189F11F0EC4AC320760F00ECE34"
  }
}

Serviço de Gerenciamento de Chaves AWS

App Builder pode ser configurado para criptografar chaves usando o AWS Key Management Service (KMS).

Configurações

| Configuração | Exemplo | Notas |TABLEROWEND| ...TABLEROWEND | Criptografia de Chave | Kms| Indica que App Builder deve criptografar chaves com AWS KMS. | | KmsKeyId | arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab | Identifica a chave KMS que deve ser usada para criptografar chaves. O valor deve assumir a forma de um Amazon Resource Name (ARN). |

Exemplo
{
  "DataEncryption": {
     "KeyStorage": "Database",
     "KeyEncryption": "Kms",
     "KmsKeyId": "arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  }
}

Serviços da Web da Amazon

Política de Bucket S3

Ao armazenar chaves de criptografia em um bucket S3, considere usar uma política de papel para conceder à instância do EC2 acesso ao bucket.

Exemplo
{
    "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 Chave KMS

Ao criptografar chaves com o KMS, considere usar uma política de papel para conceder à instância do EC3 acesso à chave.

Exemplo
{
  "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"
    ]
  }
}

Pé de Feijão Elástico

App Builder vem com um script .ebextensions que registra automaticamente as propriedades do ambiente.

Padrões

A configuração padrão do Elastic Beanstalk varia de acordo com a versão do App Builder.

Configuração 3.2 e inferior 3.3 e superior
Armazenamento de Chaves S3 Database
Ponto de extremidade do S3Bucket https://{bucket}.s3{-aws-region}.amazonaws.com
PrefixoS3Bucket {elastic-beanstalk-environment-name}
Criptografia de Chave Kms
KmsKeyId {kms-key-arn}

Cuidado

App Builder não iniciará com as propriedades de ambiente padrão do Elastic Beanstalk. Os administradores devem alterar o KmsKeyId ou escolher uma política de criptografia de chave alternativa.

Provedores de Criptografia

App Builder é um aplicativo .NET. No .NET, implementações de algoritmos criptográficos podem ser fornecidas por um dos três provedores de criptografia.

  • Crypto Service Provider (CSP) - O Crypto Service Provider é um wrapper em torno da Windows Cryptography API (CAPI). A CAPI foi descontinuada. Portanto, esse provedor não é suportado.
  • Criptografia de Próxima Geração (CNG) - Algoritmos implementados pelo provedor CNG são tipicamente compatíveis com FIPS. Este é o provedor de criptografia padrão.
  • Gerenciado - Algoritmos implementados por este provedor não são tipicamente compatíveis com FIPS. Eles podem ser mais lentos do que implementações CNG equivalentes. No entanto, implementações gerenciadas são enviadas com .NET e, portanto, estão disponíveis em todas as plataformas.

Configurações

| Configuração | Exemplo | Notas |TABLEROWEND| ...TABLEROWEND | CriptoProvedor | Cng| Determina o provedor de criptografia. Os valores válidos incluem:

  • Cng- Criptografia de Próxima Geração. Padrão.
  • Managed- Implementações gerenciadas.
|

Exemplo

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

Import

Chaves de criptografia de dados podem ser importadas na inicialização. Normalmente, isso é feito para migrar chaves de um local de armazenamento para outro. As chaves serão descriptografadas e criptografadas no processo.

Configurações

Configuração Exemplo Notas
Importar Conjunto alternativo de políticas de armazenamento e criptografia de chaves.

Exemplo

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