Saltar al contenido

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

figure.png

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:

subnets.jpg

Tabla de Rutas Pública:

publicroutetable.jpg

Tabla de Rutas Privada:

privateroutetable.jpg

figure.png

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

  1. Abre el servicio RDS en la consola de AWS
  2. 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
  3. 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)
  4. Identificador de instancia de DB: IE: companyname-db-dev

  5. Nombre de usuario maestro: App Builder
  6. Contraseña maestra: Genera una contraseña aleatoria fuerte que excluya símbolos (IE: zpZvLtLmRmrrE68T)
  7. Tamaño de instancia: T3.Medium o mayor, dependiendo de la carga de trabajo (M5.Large o > para CPU alta sostenida.)
  8. Almacenamiento asignado: 20GB para comenzar para dev; se recomienda 200GB o más para Prod debido a una mayor asignación de IOPS
  9. 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 defecto
    Red: 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 utilizadas
    Instancias: 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-06
    Seguridad: <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:

postconfig1.jpg

postconfig2.jpg

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
  1. 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.
  2. DataEncryptionKeyS3BucketEndpoint: Establezca el nombre del bucket creado anteriormente.
  3. 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

  1. Inicia sesión en la Consola de Amazon Web Services
  2. En Servicios, elige Elastic Beanstalk
  3. Selecciona el entorno que estás actualizando
  4. Selecciona Configuración en el menú de la izquierda
  5. En Load Balancer, elige Editar
  6. Si no está presente, agrega Listener Port 443, HTTPS:

    HTTPS1.jpg

  7. Selecciona el SSL Certificate ID que sea aplicable *Para la 'política SSL'; Para Windows 2019, se debe usar TLS 1.2

  8. Haz clic en el botón Guardar, y luego en Aplicar en la página del Load Balancer:

    HTTPS2.jpg

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
  1. Desde App Builder, ve a IDE > Proveedores de Seguridad
  2. Desde el panel de Configuración, haz clic en el botón Más y selecciona Sitios:

    moresites.png

  3. Haz doble clic en la entrada predeterminada

  4. Haz clic en el botón Editar
  5. Ingresa tu URL FQDN con https en el campo URL
  6. Marca para habilitar Redirigir
  7. En el campo Redirigir si existe el encabezado, ingresa X-Forwarded-For:

    siteredirect.png

  8. Haz clic en Guardar