View a markdown version of this page

Configuración de SQL Server - AWS Transformar

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de SQL Server

Realice estos pasos en su entorno de SQL Server para habilitar la modernización de AWS Transform.

Instalación y configuración de la base de datos

Paso 1: Crear un usuario de base de datos con los permisos necesarios

Cree un usuario de base de datos dedicado para AWS Transform con los permisos necesarios. Si ya tiene un usuario de DMS Schema Conversion, puede reutilizarlo.

Conéctese a su instancia de SQL Server y ejecute los siguientes comandos:

-- Create the login in master database USE master; CREATE LOGIN [atx_user] WITH PASSWORD = 'YourStrongPassword123!'; -- Switch to your application database USE [YourDatabaseName]; CREATE USER [atx_user] FOR LOGIN [atx_user]; -- Grant required permissions GRANT VIEW DEFINITION TO [atx_user]; GRANT VIEW DATABASE STATE TO [atx_user]; ALTER ROLE [db_datareader] ADD MEMBER [atx_user]; -- Grant master database permissions USE master; GRANT VIEW SERVER STATE TO [atx_user]; GRANT VIEW ANY DEFINITION TO [atx_user];
nota

Repita los comandos específicos de la base de datos (USE, CREATE USER, GRANT) para cada base de datos que desee modernizar.

La función db_datareader solo es necesaria para la migración de datos, no solo para la conversión de esquemas.

  • La función db_datareader concede acceso de lectura a todas las tablas de la base de datos

  • Esta función solo es necesaria cuando se realiza una migración de datos.

  • Solo para la conversión de esquemas (sin migración de datos), NO se requiere la función db_datareader

  • Los demás permisos (VIEW DEFINITION, VIEW DATABASE STATE, etc.) son suficientes para la conversión del esquema

Paso 2: Almacene las credenciales en AWS Secrets Manager 

Guarde las credenciales de su base de datos de forma segura en AWS Secrets Manager. Omita este paso si ya ha creado un secreto para DMS.

  1. Navega hasta AWS Secrets Manager en la consola

  2. Selecciona Guardar un secreto nuevo

  3. Configura el secreto:

    • Tipo de secreto: credenciales de otra base de datos

    • Base de datos: Microsoft SQL Server

    • Nombre de usuario: atx_user (o el nombre de usuario que elija)

    • Contraseña: la contraseña que creaste

    • Nombre del servidor: su punto final de SQL Server

    • Nombre de la base de datos: nombre de su base de datos

    • Puerto: 1433 (o su puerto personalizado)

  4. Elija Siguiente.

  5. Introduzca el nombre secreto: atx-db-modernization-sqlserver

  6. Añada las etiquetas necesarias (estas etiquetas son obligatorias):

    • Clave: proyecto, valor: atx-db-modernization

    • Clave: propietario, valor: conector de base de datos

  7. Seleccione Siguiente en el resto de las pantallas

  8. Elige Tienda

  9. Anote el ARN secreto para usarlo en el siguiente paso

importante

Las contraseñas de las bases de datos deben utilizar únicamente caracteres ASCII imprimibles, excluyendo '/', '@', '"' y los espacios. Los secretos cuya eliminación está programada pueden provocar errores de transformación.

Paso 3: Cree las funciones de DMS necesarias

AWS Transform requiere funciones de IAM específicas para las operaciones de DMS. Implemente estas funciones mediante la siguiente CloudFormation plantilla.

nota

Si su AWS cuenta ya tiene DMS-related roles existentes, modifique esta plantilla para reutilizar esos recursos en lugar de crear duplicados.

Crea un archivo llamado dms-roles.yaml con el siguiente contenido:

AWSTemplateFormatVersion: '2010-09-09' Description: 'DMS Service Roles for AWS Transform SQL Server Modernization' Resources: DMSCloudWatchLogsRole: Type: AWS::IAM::Role Properties: RoleName: dms-cloudwatch-logs-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole DMSS3AccessRole: Type: AWS::IAM::Role Properties: RoleName: dms-s3-access-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: S3TaggedAccess PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - s3:GetBucketLocation - s3:GetBucketVersioning - s3:PutObject - s3:PutBucketVersioning - s3:GetObject - s3:GetObjectVersion - s3:ListBucket - s3:DeleteObject Resource: arn:aws:s3:::atx-db-modernization-* Condition: StringEquals: aws:ResourceAccount: !Ref AWS::AccountId DMSSecretsManagerRole: Type: AWS::IAM::Role Properties: RoleName: dms-secrets-manager-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: SecretsManagerTaggedAccess PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue - secretsmanager:DescribeSecret Resource: '*' Condition: StringEquals: secretsmanager:ResourceTag/Project: atx-db-modernization secretsmanager:ResourceTag/Owner: database-connector DMSVPCRole: Type: AWS::IAM::Role Properties: RoleName: dms-vpc-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole DMSServerlessRole: Type: AWS::IAM::ServiceLinkedRole Properties: AWSServiceName: dms.amazonaws.com Description: 'Service Linked Role for AWS DMS Serverless' Outputs: DMSCloudWatchLogsRoleArn: Description: ARN of the DMS CloudWatch Logs Role Value: !GetAtt DMSCloudWatchLogsRole.Arn DMSS3AccessRoleArn: Description: ARN of the DMS S3 Access Role Value: !GetAtt DMSS3AccessRole.Arn DMSSecretsManagerRoleArn: Description: ARN of the DMS Secrets Manager Role Value: !GetAtt DMSSecretsManagerRole.Arn DMSVPCRoleArn: Description: ARN of the DMS VPC Role Value: !GetAtt DMSVPCRole.Arn Export: Name: !Sub ${AWS::StackName}-VPCRole DMSServerlessRoleArn: Description: ARN of the DMS Serverless Role Value: !Sub 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/dms.amazonaws.com/AWSServiceRoleForDMSServerless' Export: Name: !Sub ${AWS::StackName}-ServerlessRole

Implemente la CloudFormation pila mediante AWS CLI:

aws cloudformation create-stack \ --stack-name dms-roles \ --template-body file://dms-roles.yaml \ --capabilities CAPABILITY_NAMED_IAM \ --region us-east-1

O despliéguelo mediante la AWS consola:

  1. Navegue hasta CloudFormation en la AWS consola

  2. Selecciona Crear pila

  3. Selecciona Cargar un archivo de plantilla

  4. Carga el archivo dms-roles.yaml

  5. Introduce el nombre de la pila: dms-roles

  6. Reconozca las capacidades de IAM

  7. Elija Crear pila

Paso 4: Configurar la seguridad de la red

Asegúrese de que la conectividad de red sea adecuada entre AWS Transform, su base de datos de SQL Server y otros AWS servicios.

Configuración de grupos de seguridad (enfoque recomendado)

Enfoque recomendado: utilice un control de acceso basado en grupos de seguridad en lugar de IP-based reglas. Esto proporciona una mayor seguridad, una administración más sencilla y funciona a la perfección con la arquitectura de AWS Transform.

¿Por qué elegir Security Group-Based Access Control?

  • La conversión de esquemas de DMS crea interfaces de red elásticas (ENI) dentro de su VPC

  • No es necesario que sus bases de datos sean de acceso público

  • AWS Transform no expone las direcciones IP privadas, lo que complica IP-based las reglas

  • Las referencias a los grupos de seguridad proporcionan actualizaciones dinámicas y automáticas a medida que los recursos aumentan

Configure su grupo de seguridad de SQL Server

Al configurar el perfil de instancia de conversión del esquema de DMS en AWS Transform, se especifica un grupo de seguridad para la instancia SC de DMS. El grupo de seguridad de su base de datos debe permitir el tráfico entrante desde este grupo de seguridad SC del DMS.

Step-by-step configuración:

  1. Identifique el grupo de seguridad de conversión del esquema DMS:

    • Esto se especifica al crear el perfil de instancia en Transform AWS

    • Anote el ID del grupo de seguridad (por ejemplo, sg-0123456789abcdef0)

  2. Actualice las reglas de entrada del grupo de seguridad de SQL Server:

    • Tipo: TCP personalizado

    • Puerto: 1433 (o su puerto personalizado de SQL Server)

    • Fuente: El ID del grupo de seguridad de conversión de esquemas de DMS

    • Descripción: «Permitir el acceso a la conversión de esquemas de DMS»

  3. Para el destino de Aurora PostgreSQL (después de la creación):

    • Tipo: PostgreSQL

    • Puerto: 5432 (o su puerto PostgreSQL personalizado)

    • Fuente: El ID del grupo de seguridad de conversión de esquemas de DMS

    • Descripción: «Permitir el acceso a la conversión de esquemas de DMS»

importante

Importante para los modelos de seguridad menos privilegiados: si su organización utiliza un modelo de seguridad «menos privilegiado» que bloquea todo el tráfico de forma predeterminada, debe permitir explícitamente el tráfico entrante del grupo de seguridad de conversión del esquema de DMS al puerto de su base de datos. No abra el puerto 1433 a todas las fuentes o rangos de IP.

Obligatorio AWS conectividad del servicio

Asegúrese de que su VPC pueda comunicarse con:

  • AWS Transforme los puntos finales del servicio

  • AWS DMS puntos finales

  • Puntos finales de Aurora PostgreSQL

  • Terminales S3 para almacenamiento de artefactos

  • AWS Secrets Manager puntos finales

  • AWS CodeConnections puntos finales

Puntos de enlace de VPC: en el caso de las redes privadas, configure los puntos de enlace de VPC para los AWS servicios necesarios a fin de evitar las dependencias de las puertas de enlace de Internet.

Requisitos para las bases de datos alojadas externamente

Si la base de datos de SQL Server está alojada fuera de AWS, asegúrese de que se cumplen los siguientes requisitos previos y, a continuación, complete los pasos de configuración antes de comenzar la modernización.

Requisitos previos

  • Una AWS cuenta con una VPC

  • Conectividad de red entre la VPC y la base de datos externa. Para obtener información sobre la configuración de la conectividad de red, consulte Configuración de la conectividad de red en la Guía del AWS DMS usuario.

Pasos de configuración

  1. Cree una entrada secreta AWS Secrets Manager con los detalles de conexión de la base de datos externa. Para obtener más información, consulte Paso 2: Almacene las credenciales en AWS Secrets Manager .

  2. Cuando se le solicite, proporcione el ID de VPC y el ID del grupo de seguridad para conectarse a la base de datos externa. AWS Transform le solicita esta información porque el nombre de host de la base de datos que figura en el secreto no se puede resolver en la cuenta. AWS