

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration de SQL Server
<a name="sql-server-setup"></a>

Effectuez ces étapes dans votre environnement SQL Server pour activer la modernisation de AWS Transform.

## Installation et configuration de la base de données
<a name="database-setup-configuration"></a>

### Étape 1 : Création d'un utilisateur de base de données avec les autorisations requises
<a name="create-database-user"></a>

Créez un utilisateur de base de données dédié pour AWS Transform avec les autorisations nécessaires. Si vous avez déjà un utilisateur DMS Schema Conversion, vous pouvez le réutiliser.

Connectez-vous à votre instance SQL Server et exécutez les commandes suivantes :

```
-- 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];
```

**Note**  
Répétez les commandes spécifiques à la base de données (USE, CREATE USER, GRANT) pour chaque base de données que vous souhaitez moderniser.

Le rôle db\_datareader n'est nécessaire que pour la migration des données, pas uniquement pour la conversion de schémas.
+ Le rôle db\_datareader accorde un accès en lecture à toutes les tables de la base de données
+ Ce rôle est requis UNIQUEMENT lors de la migration des données.
+ Pour la conversion de schéma uniquement (sans migration de données), le rôle db\_datareader n'est PAS requis
+ Les autres autorisations (VIEW DEFINITION, VIEW DATABASE STATE, etc.) sont suffisantes pour la conversion du schéma

### Étape 2 : Stockez les informations d'identification dans AWS Secrets Manager
<a name="store-credentials-secrets-manager"></a>

Stockez les informations d'identification de votre base de données en toute sécurité dans AWS Secrets Manager. Ignorez cette étape si vous avez déjà créé un secret pour DMS.

1. Accédez à AWS Secrets Manager dans la console

1. Choisissez ** Stocker un nouveau secret **

1. Configurez le secret :
   + **Type de secret : ** informations d'identification pour une autre base de données
   + **Base de données ** : Microsoft SQL Server
   + **Nom d'utilisateur ** : atx\_user (ou nom d'utilisateur que vous avez choisi)
   + **Mot de passe ** : le mot de passe que vous avez créé
   + **Nom du serveur ** : votre point de terminaison SQL Server
   + **Nom de la base de données ** : nom de votre base de données
   + **Port ** : 1433 (ou votre port personnalisé)

1. Choisissez **Next** (Suivant)

1. Entrez le nom secret : atx-db-modernization-sqlserver

1. Ajoutez les balises requises (ces balises sont obligatoires) :
   + Clé : Projet, Valeur : atx-db-modernization
   + Clé : Owner, Valeur : database-connector

1. Choisissez ** Suivant ** dans les autres écrans

1. Choisissez ** Store **

1. Notez l'ARN secret à utiliser à l'étape suivante

**Important**  
Les mots de passe de base de données doivent utiliser uniquement des caractères ASCII imprimables, à l'exception des caractères «/», « @ », et des espaces. Les secrets dont la suppression est programmée peuvent entraîner des échecs de transformation.

### Étape 3 : Création des rôles DMS requis
<a name="create-required-dms-roles"></a>

AWS Transform nécessite des rôles IAM spécifiques pour les opérations DMS. Déployez ces rôles à l'aide du CloudFormation modèle ci-dessous.

**Note**  
Si votre AWS compte possède déjà DMS-related des rôles, modifiez ce modèle pour réutiliser ces ressources plutôt que de créer des doublons.

Créez un fichier nommé dms-roles.yaml avec le contenu suivant :

```
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
```

Déployez la CloudFormation pile à l'aide de la AWS CLI :

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

Ou déployez à l'aide de la AWS console :

1. Accédez CloudFormation à la AWS console

1. Choisissez ** Créer une pile **

1. Sélectionnez ** Charger un fichier modèle **

1. Téléchargez le fichier dms-roles.yaml

1. Entrez le nom de la pile : dms-roles

1. Reconnaître les capacités IAM

1. Choisissez ** Créer une pile **

### Étape 4 : Configuration de la sécurité du réseau
<a name="configure-network-security"></a>

Assurez une connectivité réseau adéquate entre AWS Transform, votre base de données SQL Server et les autres AWS services.

#### Configuration du groupe de sécurité (approche recommandée)
<a name="security-group-configuration"></a>

**Approche recommandée : ** utilisez un contrôle d'accès basé sur les groupes de sécurité plutôt que IP-based des règles. Cela permet une meilleure sécurité, une gestion plus facile et fonctionne parfaitement avec l'architecture de AWS Transform.

**Pourquoi le contrôle Group-Based d'accès sécurisé ? **
+ La conversion de schéma DMS crée des interfaces réseau élastiques (ENI) au sein de votre VPC
+ Vos bases de données n'ont pas besoin d'être accessibles au public
+ AWS Transform n'expose pas les adresses IP privées, ce qui IP-based complique les règles
+ Les références aux groupes de sécurité fournissent des mises à jour dynamiques et automatiques à mesure que les ressources évoluent

##### Configuration de votre groupe de sécurité SQL Server
<a name="configure-sql-server-security-group"></a>

Lorsque vous configurez le profil d'instance de conversion de schéma DMS dans AWS Transform, vous spécifiez un groupe de sécurité pour l'instance DMS SC. Le groupe de sécurité de votre base de données doit autoriser le trafic entrant provenant de ce groupe de sécurité DMS SC.

Step-by-step configuration :

1. Identifiez le groupe de sécurité de conversion de schéma DMS :
   + Ceci est spécifié lors de la création du profil d'instance dans AWS Transform
   + Notez l'ID du groupe de sécurité (par exemple, sg-0123456789abcdef0)

1. Mettez à jour les règles entrantes de SQL Server Security Group :
   + **Type** : TCP personnalisé
   + **Port ** : 1433 (ou votre port SQL Server personnalisé)
   + **Source ** : ID du groupe de sécurité de conversion de schéma DMS
   + **Description ** : « Autoriser l'accès à la conversion du schéma DMS »

1. Pour la cible Aurora PostgreSQL (après sa création) :
   + **Type ** : PostgreSQL
   + **Port ** : 5432 (ou votre port PostgreSQL personnalisé)
   + **Source ** : ID du groupe de sécurité de conversion de schéma DMS
   + **Description ** : « Autoriser l'accès à la conversion du schéma DMS »

**Important**  
**Important pour les modèles de sécurité les moins privilégiés : ** si votre organisation utilise un modèle de sécurité « moins privilégié » qui bloque tout le trafic par défaut, vous devez autoriser explicitement le trafic entrant depuis le groupe de sécurité de conversion de schéma DMS vers le port de votre base de données. N'ouvrez pas le port 1433 pour toutes les sources ou plages IP.

#### Obligatoire AWS connectivité du service
<a name="required-aws-service-connectivity"></a>

Assurez-vous que votre VPC peut communiquer avec :
+ AWS Transformez les terminaux de service
+ AWS DMS points de terminaison
+ Points de terminaison Aurora PostgreSQL
+ Points de terminaison S3 pour le stockage des artefacts
+ AWS Secrets Manager points de terminaison
+ AWS CodeConnections points de terminaison

**Points de terminaison VPC : ** pour les réseaux privés, configurez les points de terminaison VPC pour les AWS services requis afin d'éviter toute dépendance à la passerelle Internet.

## Exigences relatives aux bases de données hébergées en externe
<a name="external-database-requirements"></a>

Si votre base de données SQL Server est hébergée en dehors de AWS, assurez-vous que les conditions suivantes sont remplies, puis effectuez les étapes de configuration avant de commencer la modernisation.

**Conditions préalables**
+ Un AWS compte avec un VPC
+ Connectivité réseau entre le VPC et la base de données externe. Pour plus d'informations sur la configuration de la connectivité réseau, voir [ Configuration de la connectivité réseau ](https://docs.aws.amazon.com/dms/latest/userguide/instance-profiles-network.html) dans le Guide de AWS DMS l'utilisateur.

**Étapes de configuration **

1. Créez un secret AWS Secrets Manager avec les informations de connexion pour la base de données externe. Pour de plus amples informations, veuillez consulter [Étape 2 : Stockez les informations d'identification dans AWS Secrets Manager](#store-credentials-secrets-manager).

1. Lorsque vous y êtes invité, indiquez l'ID VPC et l'ID du groupe de sécurité pour la connexion à la base de données externe. AWS Transform vous invite à fournir ces informations car le nom d'hôte de la base de données contenu dans le secret ne peut pas être résolu dans le AWS compte.