

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.

# Prérequis pour l'intégration de RDS for SQL Server avec S3
<a name="Appendix.SQLServer.Options.S3-integration.preparing"></a>

Avant de commencer, recherchez ou créez le compartiment S3 que vous souhaitez utiliser. De plus, ajoutez des autorisations afin que l'instance de base de données RDS puisse accéder au compartiment S3. Pour configurer cet accès, vous créez une stratégie et un rôle IAM.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.preparing.console"></a>

**Pour créer une stratégie IAM afin d'accéder à Amazon S3**

1. Dans la console [IAM Management Console](https://console.aws.amazon.com/iam/home?#home), choisissez **Stratégie** dans le panneau de navigation.

1. Créez une nouvelle stratégie et utilisez l'onglet **Éditeur visuel** pour exécuter les étapes suivantes.

1. Pour **Service**, saisissez **S3** et choisissez le service **S3**.

1. Pour **Actions**, choisissez les actions suivantes pour accorder l'accès nécessaire à votre instance de base de données :
   + `ListAllMyBuckets` – Obligatoire
   + `ListBucket` – Obligatoire
   + `GetBucketAcl` – Obligatoire
   + `GetBucketLocation` – Obligatoire
   + `GetObject` : obligatoire pour télécharger des fichiers depuis S3 vers `D:\S3\`
   + `PutObject` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
   + `ListMultipartUploadParts` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
   + `AbortMultipartUpload` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3

1. Pour **Ressources**, les options qui s'affichent dépendent des actions choisies dans l'étape précédente. Vous pourrez voir des options pour **compartiment**, **objet** ou les deux. Pour chacune d'entre elles, ajoutez l'Amazon Resource Name (ARN) approprié.

   Pour **compartiment**, ajoutez l'ARN du compartiment que vous souhaitez utiliser. Par exemple, si votre compartiment est nommé *amzn-s3-demo-bucket*, définissez l'ARN sur `arn:aws:s3:::amzn-s3-demo-bucket`.

   Pour **objet**, saisissez l'ARN pour le compartiment, puis choisissez l'une des options suivantes :
   + Pour accorder l'accès à tous les fichiers d'un compartiment spécifié, choisissez **Tous** pour le **Bucket name (Nom du compartiment)** et le **Object name (Nom de l'objet)**.
   + Pour accorder l'accès à des fichiers ou à des dossiers spécifiques du bucket, ARNs indiquez les buckets et les objets spécifiques auxquels vous souhaitez que SQL Server accède. 

1. Suivez les instructions dans la console jusqu'à la création de la stratégie.

   Ce qui précède est un guide abrégé pour configurer une stratégie. Pour obtenir des instructions détaillées sur la création de stratégies IAM, consultez [Création de stratégies IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM.*

**Pour créer un rôle IAM utilisant la stratégie IAM de la procédure précédente.**

1. Dans la console [IAM Management Console](https://console.aws.amazon.com/iam/home?#home), choisissez **Rôles** dans le panneau de navigation.

1. Créez un rôle IAM et choisissez les options suivantes à mesure qu'elles s'affichent dans la console :
   + **AWSweb**
   + **RDS**
   + **RDS – Ajoutez un rôle à la base de données**

   Ensuite, choisissez **Suivant : Autorisations** en bas.

1. Pour **Attach permissions policies (Attacher des stratégies d'autorisations)**, saisissez le nom de la stratégie IAM précédemment créée. Ensuite, choisissez la stratégie dans la liste.

1. Suivez les instructions dans la console jusqu'à la création du rôle.

   Ce qui précède est un guide abrégé pour configurer un rôle. Pour obtenir des instructions plus détaillées sur la création des rôles, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dans le *Guide de l’utilisateur IAM.*

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.preparing.CLI"></a>

Pour accorder à Amazon RDS l'accès à un compartiment Amazon S3, procédez comme suit :

1. Créez une stratégie IAM qui accorde à Amazon RDS l'accès à un compartiment S3.

1. Créez un rôle IAM qu'Amazon RDS peut endosser en votre nom pour accéder à vos compartiments S3.

   Pour plus d’informations, consultez [Création d’un rôle pour déléguer des autorisations à un utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.

1. Attachez la politique IAM que vous avez créée au rôle IAM que vous venez de créer.

**Pour créer la stratégie IAM**

Ajoutez les actions appropriées pour accorder l'accès nécessaire à votre instance de base de données :
+ `ListAllMyBuckets` – Obligatoire
+ `ListBucket` – Obligatoire
+ `GetBucketAcl` – Obligatoire
+ `GetBucketLocation` – Obligatoire
+ `GetObject` : obligatoire pour télécharger des fichiers depuis S3 vers `D:\S3\`
+ `PutObject` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
+ `ListMultipartUploadParts` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
+ `AbortMultipartUpload` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3

1. La AWS CLI commande suivante crée une politique IAM nommée `rds-s3-integration-policy` avec ces options. Elle accorde un accès à un compartiment nommé *amzn-s3-demo-bucket*.  
**Example**  

   Pour Linux, macOS ou Unix :

   ```
   aws iam create-policy \
   	 --policy-name rds-s3-integration-policy \
   	 --policy-document '{
   	        "Version": "2012-10-17",		 	 	 
   	        "Statement": [
   	            {
   	                "Effect": "Allow",
   	                "Action": "s3:ListAllMyBuckets",
   	                "Resource": "*"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:ListBucket",
   	                    "s3:GetBucketAcl",
   	                    "s3:GetBucketLocation"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:GetObject",
   	                    "s3:PutObject",
   	                    "s3:ListMultipartUploadParts",
   	                    "s3:AbortMultipartUpload"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
   	            }
   	        ]
   	    }'
   ```

   Pour Windows :

   Veillez à remplacer les fins de ligne par celles prises en charge par votre interface (`^` au lieu de `\`). De plus, dans Windows, vous devez utiliser une séquence d'échappement sur tous les guillemets doubles avec un `\`. Pour éviter d'utiliser une séquence d'échappement sur tous les guillemets dans le JSON, vous pouvez l'enregistrer dans un fichier et le transmettre en tant que paramètre. 

   Tout d'abord, créez le fichier `policy.json` avec la stratégie d'autorisation suivante :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:ListAllMyBuckets",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketACL",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
           }
       ]
   }
   ```

------

   Ensuite, utilisez la commande suivante pour créer la stratégie :

   ```
   aws iam create-policy ^
        --policy-name rds-s3-integration-policy ^
        --policy-document file://file_path/assume_role_policy.json
   ```

1. Après avoir créé la stratégie, notez son ARN (Amazon Resource Name). Vous aurez besoin de l'ARN lors d'une étape ultérieure.

**Pour créer le rôle IAM**
+ La AWS CLI commande suivante crée le rôle `rds-s3-integration-role` IAM à cette fin.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole"
  	       }
  	     ]
  	   }'
  ```

  Pour Windows :

  Veillez à remplacer les fins de ligne par celles prises en charge par votre interface (`^` au lieu de `\`). De plus, dans Windows, vous devez utiliser une séquence d'échappement sur tous les guillemets doubles avec un `\`. Pour éviter d'utiliser une séquence d'échappement sur tous les guillemets dans le JSON, vous pouvez l'enregistrer dans un fichier et le transmettre en tant que paramètre. 

  Tout d'abord, créez le fichier `assume_role_policy.json` avec la stratégie suivante :

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------

  Ensuite, utilisez la commande suivante pour créer le rôle IAM :

  ```
  aws iam create-role ^
       --role-name rds-s3-integration-role ^
       --assume-role-policy-document file://file_path/assume_role_policy.json
  ```  
**Example d'utiliser la clé de contexte de condition globale pour créer le rôle IAM**  

  Nous vous recommandons d'utiliser les clés de contexte de condition globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) et [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) dans des politiques basées sur les ressources pour limiter les autorisations du service à une ressource spécifique. C’est le moyen le plus efficace de se protéger contre le [problème du député confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

  Vous pouvez utiliser les deux clés de contexte de condition globale et faire en sorte que la valeur `aws:SourceArn` contienne l'ID de compte. Dans ce cas, la valeur `aws:SourceAccount` et le compte dans la valeur `aws:SourceArn` doivent utiliser le même ID de compte lorsqu'ils sont utilisés dans la même instruction de politique.
  + Utilisez `aws:SourceArn` si vous souhaitez un accès interservices pour une seule ressource.
  + Utilisez `aws:SourceAccount` si vous souhaitez autoriser une ressource de ce compte à être associée à l’utilisation interservices.

  Dans la politique, assurez-vous d'utiliser la clé de contexte de condition globale `aws:SourceArn` avec l'Amazon Resource Name (ARN) complet des ressources qui accèdent au rôle. Pour l'intégration S3, assurez-vous d'inclure l'instance de base de données ARNs, comme indiqué dans l'exemple suivant.

  Pour Linux, macOS ou Unix :

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                      }
                  }
  	       }
  	     ]
  	   }'
  ```

  Pour Windows :

  Ajoutez la clé de contexte de condition globale à `assume_role_policy.json`.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                  }
              }
          }
      ]
  }
  ```

------

**Pour attacher la politique IAM à un rôle IAM**
+ La AWS CLI commande suivante associe la politique au rôle nommé`rds-s3-integration-role`. Remplacez `your-policy-arn` par l’ARN de stratégie que vous avez noté lors d’une étape précédente.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws iam attach-role-policy \
  	   --policy-arn your-policy-arn \
  	   --role-name rds-s3-integration-role
  ```

  Pour Windows :

  ```
  aws iam attach-role-policy ^
  	   --policy-arn your-policy-arn ^
  	   --role-name rds-s3-integration-role
  ```