Configuración de cifrado de datos en Jitterbit App Builder
Descripción general
App Builder utiliza el cifrado de datos con dos fines:
- 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 de ASP.Net. Aunque App Builder intentará configurar la biblioteca de protección de datos automáticamente, es posible que se requiera 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 los datos. App Builder admite múltiples políticas configurables de almacenamiento y cifrado de claves. 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
- Servicios web de Amazon (AWS) S3
- Almacén de parámetros de AWS Systems Manager
Cifrado
Según la ubicación de almacenamiento, los administradores deberían considerar el cifrado de claves. App Builder admite las siguientes políticas de cifrado de claves:
- Certificado
- Servicio de administración de claves de AWS
Configuración
Las políticas de almacenamiento de claves y cifrado se configuran al iniciar. 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 de App Builder al inicio para obtener más información.
Almacenamiento
Sistema de archivos
De forma predeterminada, App Builder almacena las claves en el sistema de archivos como texto sin formato. Se almacenan en el directorio keys, dentro del directorio de instalación de App Builder.
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. | |
Directorio | keys Identifica el directorio donde se almacenarán las claves. El valor predeterminado es el directorio keys, ubicado debajo del directorio de instalación de App Builder. El proceso de App Builder debe tener control total sobre 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 la base de datos de * App Builder*. Tenga en cuenta que, dado que se utilizan para cifrar datos que también se almacenan en la base de datos, las claves en sí deben cifrarse.
Ajustes
Configuración | Ejemplo | Notas |
---|---|---|
Almacenamiento de claves | Database | Indica que App Builder debe almacenar claves en la base de datos App Builder. |
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 buckets de S3.
Ajustes
Configuración | Ejemplo | Notas |
---|---|---|
Almacenamiento de claves | S3 | Indica que App Builder debe almacenar claves en un bucket de AWS S3. |
Punto final del cubo 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 bucket de S3 donde se almacenarán las claves de S3. La URL debe tener uno de los siguientes formatos:
|
S3KeyPrefix | dev | Opcional. Permite que varios ambientes almacenen claves en el mismo contenedor, aislándolas 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 pueden almacenarse en el almacén de parámetros de AWS Systems Manager. Las claves almacenadas en el almacén de parámetros pueden cifrarse 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. |
KmsKeyId | arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab | Opcional. Identifica la clave KMS que debe usarse para cifrar las claves. El valor debe ser 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"
}
}
Cifrado
Ninguno
De forma predeterminada, App Builder no cifrar las claves. Sin embargo, estas pueden cifrarse de forma transparente según la política de almacenamiento. Por ejemplo, un bucket de S3 puede configurarse 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 con un certificado X.509. Los administradores deben proporcionar Certificate o CertificateThumbprint. | |
Certificado | Certificado X.509. El certificado debe proporcionarse como un certificado PKCS#12 (PFX) codificado en base64 con clave privada. Requiere ContraseñaDeCertificado. | |
CertificatePassword | Contraseña del certificado X.509. |
Huella digital del certificado X.509. App Builder intentará cargar el certificado desde el almacén de certificados personal de la cuenta del 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. |
KmsKeyId | arn:aws:kms:us-east-1:1234567890:key/1234abcd-12ab-34cd-56ef-1234567890ab Identifica la clave KMS que debe usarse para cifrar las claves. El valor debe ser 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 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"
]
}
}
Elastic Beanstalk
App Builder viene con 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 inferior | 3.3 y superior |
---|---|---|
Almacenamiento de claves | S3 | Database |
Punto final del cubo S3 | https://{bucket}.s3{-aws-region}.amazonaws.com | |
S3BucketPrefix | {elastic-beanstalk-environment-name} | |
Cifrado de clave | Kms | |
KmsKeyId | {kms-key-arn} |
Precaución
App Builder no se iniciará con las propiedades predeterminadas del ambiente de Elastic Beanstalk. Los administradores deben cambiar el KmsKeyId o elegir una política de cifrado de claves alternativa.
Proveedores de criptografía
App Builder es una aplicación .NET. En .NET, las implementaciones de algoritmos criptográficos pueden ser proporcionadas por uno de tres proveedores de criptografía.
Proveedor de Servicios de Criptografía (CSP): El Proveedor de Servicios de Criptografía es un envoltorio de la API de Criptografía de Windows (CAPI). CAPI ha quedado obsoleto. Por lo tanto, este proveedor no es compatible. Criptografía de Próxima Generación (CNG): Los algoritmos implementados por el proveedor de CNG suelen ser compatibles con 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 entregan 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 son:
|
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 durante 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"
}
}
}