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 permitir la modernización de AWS Transform.

Instalación y configuración de bases 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 conversión de esquemas de DMS, 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 otorga acceso de lectura a todas las tablas de la base de datos

  • Esta función es necesaria ÚNICAMENTE cuando se realiza la 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 de esquemas

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. Navegue hasta AWS Secrets Manager en la consola

  2. Selecciona Almacenar un secreto nuevo

  3. Configura el secreto:

    • Tipo de secreto: credenciales para otra base de datos

    • Base de datos: Microsoft SQL Server

    • Nombre de usuario: atx_user (o el nombre de usuario elegido)

    • Contraseña: la contraseña que ha creado

    • Nombre del servidor: Su punto final de SQL Server

    • Nombre de 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 obligatorias (estas etiquetas son obligatorias):

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

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

  7. Seleccione Siguiente en las pantallas restantes

  8. Elige Tienda

  9. Anota 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 programados para su eliminación pueden provocar errores de transformación.

Paso 3: Cree los roles de DMS necesarios

AWS La transformación requiere funciones de IAM específicas para las operaciones de DMS. Implemente estas funciones mediante la CloudFormation plantilla que aparece a continuación.

nota

Si tu AWS cuenta ya tiene DMS-related funciones, modifica 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 pila mediante la CLI: CloudFormation AWS

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

O impleméntelo mediante la AWS consola:

  1. Navegue hasta CloudFormation la AWS consola

  2. Elige Crear pila

  3. Selecciona Cargar un archivo de plantilla

  4. Sube el archivo dms-roles.yaml

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

  6. Reconozca las capacidades de IAM

  7. Elija Create stack

Paso 4: Configurar la seguridad de la red

Garantice una conectividad de red adecuada entre AWS Transform, su base de datos de SQL Server y otros AWS servicios.

Configuración del grupo 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 un control de Group-Based acceso seguro?

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

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

  • AWS Transform no expone las direcciones IP privadas, lo que hace que IP-based las reglas sean complejas

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

Configure su grupo de seguridad de SQL Server

Al configurar el perfil de instancia de conversión del esquema 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 de DMS SC.

Step-by-step configuración:

  1. Identifique el grupo de seguridad de conversión de esquemas de 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 de SQL Server personalizado)

    • Fuente: el ID del grupo de seguridad de conversión del esquema DMS

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

  3. Para el objetivo 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 del esquema DMS

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

importante

Importante para los modelos de seguridad con menos privilegios: 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 desde el grupo de seguridad de conversión de esquemas del 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 de 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 finales de la VPC: en el caso de las redes privadas, configure los puntos de enlace de la VPC para los AWS servicios necesarios a fin de evitar las dependencias de las pasarelas de Internet.

Requisitos para las bases de datos alojadas externamente

Si la base de datos de SQL Server está alojada fuera de AWS ella, 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 Configurar 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, introduzca 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 secreto no se puede resolver en la cuenta. AWS