Saltar al contenido

Instalación App Builder en AWS (windows)

Introducción

Este manual cubrirá varios métodos sugeridos de instalación de App Builder en AWS con Windows y SQL Server. Existen muchos métodos para configurar la arquitectura subyacente para el alojamiento web, la red y los aspectos de seguridad que se indican a continuación 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 pueda adaptarse para cumplir con los requisitos básicos.

Dos métodos generales de uso de AWS para alojamiento App Builder en Windows son:

  • PaaS: ElasticBeanstalk - .NET como plataforma (con y sin alta disponibilidad)
  • IaaS: instancias Ec2 de máquinas virtuales (similar a las locales)

Este documento se centra en el uso de ElasticBeanstalk (EB), ya que es el método más sencillo en AWS para la gestión a largo plazo y la facilidad de actualizaciones. Para Ec2 únicamente, consulte nuestra documentación de VM/on-premise. Además, este documento también se centrará en el uso de RDS (Relational Database Service) para la base de datos.

Nota

Puede ahorrar 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); lo que elimina la necesidad de una puerta de enlace NAT y un alojar bastión. Solo tenga en cuenta que los grupos de seguridad serán la única barrera para el acceso externo y no podrá tener una IP saliente confiable desde App Builder que incluir en la lista de permisos de 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 enrutar que contiene una puerta de enlace de Internet como enrutar predeterminada (pública) – Dos o más asociadas con una tabla de enrutar que utiliza una puerta de enlace NAT como enrutar predeterminada (privada) Las zonas de disponibilidad deben reflejarse en todas las tablas de rutas (es decir: utilizando pública: 1a, 1b - privada: 1a, 1b)
  • Certificado – Necesitará crear o importar un certificado para usar SSL
  • IAM: Usuarios, Roles*, Políticas* – Concesión de permisos de servicio
  • Grupos de seguridad* – Concesión de permisos de entrada y entre servidores
  • Ec2, alojar Bastion: servidor Jump para acceso de administrador de base de datos y servidor de aplicaciones
  • S3 Bucket* - configurado para permitir App Builder acceso de lectura/escritura con el fin de crear y compartir claves de seguridad
  • Base de datos* - Se puede ejecutar mediante RDS o instalar en instancias EC2
  • Elastic Beanstalk* - Administra App Builder instancias de EC2

*Una por instancia

figure.png

Redes Básicas

Ejemplo de VPC:

VPC predeterminada: 172.31.0.0/16

Puerta de enlace NAT (opcional): subred pública, conectividad pública, asignar eIP.

Subredes:

subnets.jpg

Tabla de rutas públicas:

publicroutetable.jpg

Tabla de rutas privadas:

privateroutetable.jpg

figura.png

Configuración de S3 para Claves de Cifrado de Datos

Cree un depósito S3 en la región deseada; esto se utilizará para almacenar metadatos del estado de la sesión y App Builder cifrado de columna:

Nombre de ejemplo: *companyname*-vinyl-encryption-keys-*dev*

*Denegar acceso público

SOY

Políticas

Política de acceso S3:

Crear nueva política con este JSON, editar 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 del ejemplo: *companyname*-vinyl-encryption-keys-s3-*dev*Ejemplo de descripción: otorga acceso a EC2 al depósito S3

Roles

Crear nuevo rol: Tipo=EC2 -> Agregar políticas:

  • <S3 Policy Above>- AWSElasticBeanstalkMulticontainerDocker- AWSElasticBeanstalkWebTier- AWSElasticBeanstalkWorkerTier

Nombre: *companyname*-eb-*dev*

EC2

Dentro del servicio EC2, vaya a cada una de las secciones siguientes y cree lo siguiente:

Grupos de seguridad:

Cree al menos dos grupos, uno para EC2/EB (aplicado en EB) y otro para RDS. El grupo EB se agregará como una fuente en el grupo RDS, como se ve a continuación. Estos otorgan permisos a RDP para 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 empresa
RDP TCP 3389 <Yourself> PDR
RDP TCP 3389 sgr-091a912ec59ae4184 Bastión
Nombre: RDS-DEV (Permite puertos a RDS)
MSSQL TCP 1433 <VPN Endpoint> VPN de empresa
MSSQL TCP 1433 sgr-082d6e34327ee6b9c8 (EB-DEV)
MSSQL TCP 1433 <Yourself> RDS
MSSQL TCP 1433 sgr-091a912ec59ae4184 Bastión
Nombre: Bastion (Opcional) (Se agrega arriba para permitirle acceso a instancias en subredes privadas)
MSSQL TCP 1433 <VPN Endpoint> VPN de empresa

Pares de claves:
Crear par de claves -> <companyname-%dev%> -> PEM -> Crear

Instancias: Crear un alojar de Bastion (Opcional)
Inicie una instancia básica de Windows 2019 para usarla como host de salto RDP si usa subredes privadas para App Builder instancias.

Crear una Base de Datos Utilizando RDS

  1. Abra el servicio RDS en la consola de AWS
  2. Elija Grupos de subredes > Crear grupo de subredes de base de datos > Etiquete como privado o público, dependiendo de si desea la capacidad de acceso externo (si los grupos de seguridad lo permiten) > Elija su VPC y seleccione el par de zonas de disponibilidad que utilizó al configurar las subredes para la VPC anterior > Ahora seleccione las dos subredes correctas que sean privadas o públicas. > Crear
  3. Seleccione Crear base de datos > Microsoft SQL Server > Elegir licencia:

    • SQL Server Express Edition *(Aceptable para bases de datos pequeñas de menos de 10 GB e instancias de tamaño 'grande' o más pequeñas).
    • SQL Web Edition (para bases de datos > 10 GB; para tamaños de instancia > 'grandes')
    • SQL Standard Edition (para Multi-AZ; muy costoso)
  4. Identificador de instancia de base de datos: IE: companyname-db-dev

  5. Nombre de usuario maestro: App Builder
  6. Contraseña maestra: genere una contraseña aleatoria segura que excluya los símbolos (por ejemplo, zpZvLtLmRmrrE68T)
  7. Tamaño de la instancia: T3.Medium o mayor, según la carga de trabajo (M5.Large o mayor para un uso elevado y sostenido de la CPU).
  8. Almacenamiento asignado: 20 GB para comenzar para el desarrollo; se recomiendan 200 GB o más para la producción debido a la mayor asignación de IOPS
  9. Grupo de subredes: elige el que creaste anteriormente.

    • Acceso público: Sí, si el grupo anterior utilizó subredes públicas; de lo contrario, no.
    • Grupos de seguridad de VPC existentes: elija el grupo RDS creado anteriormente.

Establezca los valores restantes como desee (mantenga 1433 como puerto DB).

Nota

Si es anfitrión 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 ambiente: *companyname*-app-*dev*
  • Plataforma: .NET en Windows; IIS 10 Windows 2019, última plataforma
  • Subir App Builder paquete .zip con el nombre de archivo terminado en '-eb'. Por ejemplo: vinyl-3.3.12345-win-eb.zip
  • Seleccione Configurar más opciones - Desplácese hasta la parte superior de la página Seleccione: Configuración personalizada Para lo siguiente, haga clic en Editar en cada sección y guarde en el siguiente orden:

    Configuración de Elastic Beanstalk
    Capacidad: Carga equilibrada; mín. 1/máx. 1 (consulte el manual de alta disponibilidad para obtener más información);
    Tipo de instancia: T3.medium o superior (según la carga);
    ID de AMI: use la ID de AMI predeterminada
    Red: Seleccionar VPC creada
    Subredes del balanceador de carga: Seleccionar 2 subredes públicas
    Subredes de instancia: Seleccionar 2 subredes privadas
    Subredes de base de datos: Sin usar
    Instancias: Tamaño: 150 GB; Grupos: Grupo EB creado en la sección EC2.
    Balanceador de carga: Tipo: Aplicación -> Procesos; Editar predeterminado;
    Código HTTP: 200; Ruta /ping
    Para SSL: (Consulte Configuración de HTTPS) Agregar oyente - 443/HTTPS - Su certificado - TLS-1-2-Ext-2018-06
    Seguridad: <EC2 Key pair from above>; Perfil de instancia de IAM creado anteriormente. Deje el rol de servicio tal como está (generado automáticamente)
  • ¡Crear!

Configuración de Publicación EB

El ambiente tardará aproximadamente entre 15 y 20 minutos en aparecer.

Una vez que EB haya terminado de instalar los componentes, es normal que el estado sea rojo en esta fase, ya que es necesario actualizar las propiedades del ambiente EB predeterminadas.

En el ambiente ElasticBeanstalk: vaya a: Configuración -> Software -> Editar:

postconfig1.jpg

postconfig2.jpg

Desplácese hacia abajo hasta Propiedades del ambiente:

Nombre de la propiedad Predeterminado Ejemplo
Información de conexión 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~!!
  1. ConnectionInfo: Edite partes de la cadena para que coincidan con el nombre de host, el nombre de usuario y la contraseña de su base de datos.
  2. DataEncryptionKeyS3BucketEndpoint: Establezca el nombre del depósito creado anteriormente.
  3. DataEncryptionKeyS3KeyPrefix: Establezca el nombre del ambiente de Elastic Beanstalk.

Después de aplicar estos pasos y completar las actualizaciones, vaya a la App Builder uRL del sitio en EB. Esto activará la instalación o actualización de la base de datos, si es necesario.

Configurando HTTPS

De manera predeterminada, los nuevos ambientes de Elastic Beanstalk no están configurados para HTTPS. Como se indica en la App Builder documentación: se recomienda enfáticamente el uso de HTTPS para todos los nuevos ambientes de Elastic Beanstalk.

Los ambientes de Elastic Beanstalk finalizan la conexión HTTPS en Elastic Load Balancer.

Nota

Para el siguiente proceso, debe haber creado o importado un certificado en el servicio Administrador de certificados.

Configuración de Elastic Beanstalk para Aceptar Solicitudes HTTPS

  1. Inicie sesión en la consola de Amazon Web Services
  2. En Servicios, seleccione Elastic Beanstalk
  3. Seleccione el ambiente que está actualizando
  4. Seleccione Configuración en el menú de la izquierda.
  5. En Load Balancer, seleccione Editar
  6. Si no está presente, agregue Puerto de escucha 443, HTTPS:

    HTTPS1.jpg

  7. Seleccione el ID del certificado SSL que corresponda. Para la 'política SSL'; en el caso de Windows 2019, se debe utilizar TLS 1.2.

  8. Haga clic en el botón Guardar y luego en Aplicar en la página Balanceador de carga:

    HTTPS2.jpg

Aplicar HTTPS y Redireccionamiento FQDN

Asegúrese de haber creado y probado una entrada CNAME de DNS para su dominio con su registrador o servidores de nombres actuales antes de configurar lo siguiente. El URI de ElasticBeanstalk será el valor de destino que debe utilizar su entrada de DNS. También debe coincidir con el certificado SSL que está utilizando.

Ejemplo

  • Host/Nombre: demo1.companydomain.com
  • Tipo: CNAME
  • Objetivo/Valor: demo1.us-east-1.elasticbeanstalk.com
  1. Desde App Builder, vaya a IDE > Proveedores de seguridad
  2. Desde el panel Configuración, haga clic en el botón Más y seleccione Sitios:

    moresites.png

  3. Haga doble clic en la entrada predeterminada

  4. Haga clic en el botón Editar
  5. Ingrese su URL FQDN con https en el campo URL
  6. Marque para habilitar Redireccionar
  7. En el campo Redirigir si existe encabezado, ingrese X-Forwarded-For:

    siteredirect.png

  8. Haga clic en Guardar