Instalación de Jitterbit App Builder en AWS (Windows)
Introducción
Este manual cubrirá varios métodos sugeridos para la instalación de App Builder en AWS utilizando Windows y SQL Server. Hay muchos métodos para configurar la arquitectura subyacente para el alojamiento web, la red y los aspectos de seguridad que se pueden adaptar según sea necesario.
Esta guía está destinada principalmente a ayudar con una nueva cuenta de AWS en blanco, o una existente que se pueda adaptar para cumplir con los requisitos básicos.
Dos métodos generales para usar AWS para alojar App Builder en Windows son:
- PaaS: ElasticBeanstalk - .NET como plataforma (Con y sin alta disponibilidad)
- IaaS: instancias de VM Ec2 - (Similar a en las instalaciones)
Este documento se centra en el uso de ElasticBeanstalk (EB), ya que este es el método más fácil en AWS para la gestión a largo plazo y la facilidad de actualizaciones. Para solo Ec2, consulte nuestro documento de VM/en las instalaciones. Además, este documento también se centrará en el uso de RDS (Servicio de Base de Datos Relacional) para la base de datos.
Nota
Puede ahorrar en costos y aumentar la simplicidad al colocar todos los objetos en subredes públicas (Subredes que están en una tabla de rutas donde la puerta de enlace predeterminada ((0.0.0.0/0)) es una puerta de enlace de Internet.); Negando la necesidad de una puerta de enlace NAT y un host Bastion. Solo tenga en cuenta que los Grupos de Seguridad serán entonces la única barrera contra el acceso externo y no podrá tener una IP de salida confiable desde App Builder que se pueda incluir en listas blancas en sistemas externos. (Las puertas de enlace NAT tienen una eIP estática que será la IP de salida).
Elementos de AWS
- VPC con 4 o más subredes; Dos o más asociadas con una tabla de rutas que contiene una puerta de enlace de Internet como la ruta predeterminada (pública) – Dos o más asociadas con una tabla de rutas que utiliza una puerta de enlace NAT como la ruta predeterminada (privada). Las zonas de disponibilidad deben reflejarse en las tablas de rutas (Ej: usando Pública: 1a,1b - Privada: 1a,1b)
- Certificado – Necesitará crear o importar un certificado para usar SSL
- IAM: Usuarios, Roles*, Políticas* – Concediendo permisos de servicio
- Grupos de Seguridad* – Concediendo permisos de entrada y permisos entre servidores
- Ec2, host Bastion – Servidor de salto para el servidor de aplicaciones y acceso de administración de base de datos
- Bucket S3* - configurado para permitir acceso de lectura/escritura a App Builder con el propósito de crear y compartir claves de seguridad
- Base de datos* - Puede ejecutarse utilizando RDS o instalarse en instancias de EC2
- Elastic Beanstalk* - Administra las instancias de Ec2 de App Builder
*Uno por instancia
Redes básicas
Ejemplo de VPC:
VPC predeterminado: 172.31.0.0/16
Puerta de enlace NAT (Opcional): Subred como pública, Conectividad como Pública, asignar eIP.
Subredes:
Tabla de Rutas Pública:
Tabla de Rutas Privada:
Configuración de S3 para claves de cifrado de datos
Crea un bucket S3 en la región deseada; este se utilizará para almacenar metadatos del estado de la sesión y la cifrado de columnas de App Builder:
Nombre de ejemplo: *nombredeempresa*-vinyl-encryption-keys-*dev*
*Negar acceso público
IAM
Políticas
Política de Acceso a S3:
Crea una nueva Política con este JSON, edita el Recurso con el nombre anterior:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource":
"arn:aws:s3:::companyname-vinyl-encryption-keys-dev/*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": "*"
}
]
}
Nombre de ejemplo: *nombredeempresa*-vinyl-encryption-keys-s3-*dev*
Descripción de ejemplo: Concede acceso de EC2 al Bucket S3
Roles
Crea un nuevo Rol: Tipo=EC2 -> Agregar políticas:
<Política S3 Arriba>
AWSElasticBeanstalkMulticontainerDocker
AWSElasticBeanstalkWebTier
AWSElasticBeanstalkWorkerTier
Nombre: *nombredeempresa*-eb-*dev*
EC2
Dentro del servicio EC2, ve a cada una de las secciones a continuación y crea lo siguiente:
Grupos de Seguridad:
Crea al menos dos grupos, uno para EC2/EB (Aplicado en EB) y uno para RDS. El grupo EB se añadirá como fuente en el grupo RDS, como se ve a continuación. Estos otorgan permisos para RDP a la instancia EC2 y para que la instancia EC2 acceda a la instancia RDS:
Configuración del Grupo de Seguridad | ||||
---|---|---|---|---|
Nombre: EB-DEV (Permite puertos a EC2) | ||||
RDP | TCP | 3389 | <VPN Endpoint> |
VPN de la Empresa |
RDP | TCP | 3389 | <Tú mismo> |
RDP |
RDP | TCP | 3389 | sgr-091a912ec59ae4184 |
Bastión |
Nombre: RDS-DEV (Permite puertos a RDS) | ||||
MSSQL | TCP | 1433 | <VPN Endpoint> |
VPN de la Empresa |
MSSQL | TCP | 1433 | sgr-082d6e34327ee6b9c8 |
(EB-DEV) |
MSSQL | TCP | 1433 | <Tú mismo> |
RDS |
MSSQL | TCP | 1433 | sgr-091a912ec59ae4184 |
Bastión |
Nombre: Bastión (Opcional) (Se añade arriba para permitir el acceso a instancias en Subredes Privadas) | ||||
MSSQL | TCP | 1433 | <VPN Endpoint> |
VPN de la Empresa |
Pares de claves:
Crear par de claves -> <companyname-%dev%>
-> PEM -> Crear
Instancias: Crear un host Bastion (Opcional)
Lanzar una instancia básica de Windows 2019 para usarla como un host de salto RDP si se utilizan subredes privadas para las instancias de App Builder.
Crear una base de datos usando RDS
- Abre el servicio RDS en la consola de AWS
- Elige Grupos de subredes > Crear grupo de subredes de DB > Etiqueta como privada o pública, dependiendo de si deseas la capacidad de acceso externo (con los grupos de seguridad permitiendo) > Elige tu VPC y selecciona el par de Zona de Disponibilidad que usaste al configurar las subredes para la VPC anterior > Ahora selecciona las dos subredes correctas que sean ambas privadas o ambas públicas. > Crear
-
Elige Crear base de datos > Microsoft SQL Server > Elegir licencia:
- Edición Express de SQL Server *(Aceptable para bases de datos pequeñas de menos de 10GB y tamaños de instancia 'grande' o menores.)
- Edición Web de SQL (Para bases de datos > 10GB; para tamaños de instancia > 'grande')
- Edición Estándar de SQL (Para Multi-AZ; Muy cara)
-
Identificador de instancia de DB: IE: companyname-db-dev
- Nombre de usuario maestro: App Builder
- Contraseña maestra: Genera una contraseña aleatoria fuerte que excluya símbolos (IE: zpZvLtLmRmrrE68T)
- Tamaño de instancia: T3.Medium o mayor, dependiendo de la carga de trabajo (M5.Large o > para CPU alta sostenida.)
- Almacenamiento asignado: 20GB para comenzar para dev; se recomienda 200GB o más para Prod debido a una mayor asignación de IOPS
-
Grupo de subredes: Elige el que creaste anteriormente.
- Acceso público: Sí si se usó el grupo anterior con subredes públicas; de lo contrario, no.
- Grupos de seguridad de VPC existentes: Elige el grupo RDS creado anteriormente.
Establece los valores restantes como desees (Mantén 1433 como el puerto de DB).
Nota
Si se aloja App Builder con Jitterbit, SQL Server Express no es una opción de base de datos compatible.
Configuración de Elastic Beanstalk (EB)
- Nombre de la aplicación:
App Builder
- Nombre del entorno:
*companyname*-app-*dev*
- Plataforma: .NET en Windows; IIS 10 Windows 2019, Plataforma más reciente
- Sube el paquete .zip de App Builder con el sufijo de nombre de archivo '-eb'. Por ejemplo:
vinyl-3.3.12345-win-eb.zip
-
Selecciona Configurar más opciones - Desplázate hasta la parte superior de la página Selecciona: Configuración personalizada Para lo siguiente, haz clic en Editar en cada sección y guarda en el siguiente orden:
Configuración de Elastic Beanstalk Capacidad: Balanceado por carga; min 1/max 1 (Consulta el manual de Alta Disponibilidad para más);
Tipo de instancia: T3.medium o mayor (Dependiendo de la carga);
ID de AMI: Usa el ID de AMI por defectoRed: Selecciona la VPC creada
Subredes del balanceador de carga: Selecciona 2 Subredes Públicas
Subredes de Instancias: Selecciona 2 Subredes Privadas
Subredes de Base de Datos: No utilizadasInstancias: Tamaño: 150GB; Grupos: Grupo de EB creado en la sección de EC2. Balanceador de Carga: Tipo: Aplicación -> Procesos; Editar por defecto;
Código HTTP: 200; Ruta /ping
Para SSL: (Consulta Configurando HTTPS) Agregar listener - 443/HTTPS - Tu Cert - TLS-1-2-Ext-2018-06Seguridad: <Par de claves de EC2 de arriba>
; Perfil de instancia IAM como se creó arriba. Deja el rol de servicio tal como está (autogenerado) -
¡Crear!
Configuración posterior de EB
El entorno tardará aproximadamente de 15 a 20 minutos en levantarse.
Una vez que EB haya completado la configuración de los componentes, es normal que el estado sea rojo en esta fase, ya que es necesario actualizar las propiedades predeterminadas del entorno de EB.
En el Entorno de ElasticBeanstalk: Ve a: Configuración -> Software -> Editar:
Desplácese hacia abajo hasta Propiedades del entorno:
Nombre de la propiedad | Predeterminado | Ejemplo |
---|---|---|
ConnectionInfo | DatabaseType=SQLServer;HostName=;DatabaseName=App Builder;UserName=vinyl;Password=password |
DatabaseType=SQLServer;HostName=example-db-dev.cmpgei1x4tzz.us-east-1.rds.amazonaws.com;DatabaseName=App Builder;UserName=vinyl;Password=P@SSW**RD~!! |
DataEncryption:S3BucketEndpoint | https://{bucket}s3{-aws-region}.amazonaws.com |
https://companyname-vinyl-encryption-keys-dev |
DataEncryption:S3KeyPrefix | {elastic-beanstalk-environment-name} |
Companyname-app-Dev |
ConnectionInfo
: Edite las partes de la cadena para que coincidan con el nombre de host de su base de datos, nombre de usuario y contraseña.DataEncryptionKeyS3BucketEndpoint
: Establezca el nombre del bucket creado anteriormente.DataEncryptionKeyS3KeyPrefix
: Establezca el nombre del entorno de Elastic Beanstalk.
Después de aplicar estos pasos y completar las actualizaciones, dirígete a la URL del sitio de App Builder en EB. Esto activará una instalación o actualización de la base de datos si es necesario.
Configurando HTTPS
Por defecto, los nuevos entornos de Elastic Beanstalk no están configurados para HTTPS. Como se indica en la documentación de App Builder, se recomienda encarecidamente HTTPS para todos los nuevos entornos de Elastic Beanstalk.
Elastic Beanstalk termina la conexión HTTPS en el Elastic Load Balancer.
Nota
Para el proceso a continuación, ya debes haber creado o importado un certificado en el servicio de Certificate Manager.
Configurando Elastic Beanstalk para aceptar solicitudes HTTPS
- Inicia sesión en la Consola de Amazon Web Services
- En Servicios, elige Elastic Beanstalk
- Selecciona el entorno que estás actualizando
- Selecciona Configuración en el menú de la izquierda
- En Load Balancer, elige Editar
-
Si no está presente, agrega Listener Port 443, HTTPS:
-
Selecciona el SSL Certificate ID que sea aplicable *Para la 'política SSL'; Para Windows 2019, se debe usar TLS 1.2
-
Haz clic en el botón Guardar, y luego en Aplicar en la página del Load Balancer:
Forzar HTTPS y redirección FQDN
Asegúrate de haber creado y probado una entrada DNS CNAME para tu dominio con tu registrador o servidores de nombres actuales antes de configurar lo siguiente. El URI de ElasticBeanstalk será el valor objetivo que debe usar tu entrada DNS. También debe coincidir con el certificado SSL que estás utilizando.
Ejemplo
- Host/Nombre:
demo1.companydomain.com
- Tipo:
CNAME
- Objetivo/Valor:
demo1.us-east-1.elasticbeanstalk.com
- Desde App Builder, ve a IDE > Proveedores de Seguridad
-
Desde el panel de Configuración, haz clic en el botón Más y selecciona Sitios:
-
Haz doble clic en la entrada predeterminada
- Haz clic en el botón Editar
- Ingresa tu URL FQDN con https en el campo URL
- Marca para habilitar Redirigir
-
En el campo Redirigir si existe el encabezado, ingresa X-Forwarded-For:
-
Haz clic en Guardar