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.
Conditions préalables à l'intégration RDS de SQL Server avec S3
Avant de commencer, recherchez ou créez le compartiment S3 que vous souhaitez utiliser. Ajoutez également des autorisations afin que l'RDSinstance de base de données puisse accéder au compartiment S3. Pour configurer cet accès, vous devez créer à la fois une IAM politique et un IAM rôle.
Pour créer une IAM politique d'accès à Amazon S3
-
Dans la console IAM de gestion
, choisissez Policies dans le volet de navigation. -
Créez une nouvelle stratégie et utilisez l'onglet Éditeur visuel pour exécuter les étapes suivantes.
-
Pour Service, saisissez
S3
et choisissez le service S3. -
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 versD:\S3\
-
PutObject
– Obligatoire pour charger des fichiers depuisD:\S3\
vers S3 -
ListMultipartUploadParts
– Obligatoire pour charger des fichiers depuisD:\S3\
vers S3 -
AbortMultipartUpload
– Obligatoire pour charger des fichiers depuisD:\S3\
vers S3
-
-
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 chacun d'entre eux, ajoutez le nom de ressource Amazon approprié (ARN).
Pour le bucket, ajoutez le ARN pour le bucket que vous souhaitez utiliser. Par exemple, si votre compartiment est nommé
amzn-s3-demo-bucket
, réglez la ARN valeur surarn:aws:s3:::
.amzn-s3-demo-bucket
Dans le champ objet, entrez ARN le nom du 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 compartiment, indiquez ARNs les compartiments et objets spécifiques auxquels le SQL serveur doit accéder.
-
-
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 des instructions plus détaillées sur la création de IAM politiques, voir Création de IAM politiques dans le Guide de IAM l'utilisateur.
Pour créer un IAM rôle qui utilise la IAM politique de la procédure précédente
-
Dans la console IAM de gestion
, sélectionnez Rôles dans le volet de navigation. -
Créez un nouveau IAM rôle et choisissez les options suivantes telles qu'elles apparaissent dans la console :
-
AWS web
-
RDS
-
RDS— Ajouter un rôle à la base de données
Ensuite, choisissez Suivant : Autorisations en bas.
-
-
Pour Joindre des politiques d'autorisation, entrez le nom de la IAM politique que vous avez créée précédemment. Ensuite, choisissez la stratégie dans la liste.
-
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. Si vous souhaitez obtenir des instructions plus détaillées sur la création de rôles, consultez IAMles rôles dans le Guide de IAM l'utilisateur.
Pour accorder à Amazon RDS l'accès à un compartiment Amazon S3, suivez le processus suivant :
-
Créez une IAM politique qui accorde à Amazon RDS l'accès à un compartiment S3.
-
Créez un IAM rôle qu'Amazon RDS peut assumer en votre nom pour accéder à vos compartiments S3.
Pour plus d'informations, consultez la section Création d'un rôle pour déléguer des autorisations à un IAM utilisateur dans le Guide de IAM l'utilisateur.
-
Attachez la IAM politique que vous avez créée au IAM rôle que vous avez créé.
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 versD:\S3\
-
PutObject
– Obligatoire pour charger des fichiers depuisD:\S3\
vers S3 -
ListMultipartUploadParts
– Obligatoire pour charger des fichiers depuisD:\S3\
vers S3 -
AbortMultipartUpload
– Obligatoire pour charger des fichiers depuisD:\S3\
vers S3
-
La AWS CLI commande suivante crée une IAM politique nommée
rds-s3-integration-policy
avec ces options. Il donne accès à un bucket nomméamzn-s3-demo-bucket
.Dans 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
/*" } ] }'Dans 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'avoir à échapper aux guillemets dans leJSON, vous pouvez plutôt 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 :{ "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 -
Une fois la politique créée, notez le nom de la ressource Amazon (ARN) de la politique. Vous en aurez besoin ARN pour une étape ultérieure.
Pour créer le rôle IAM
-
La AWS CLI commande suivante crée le
rds-s3-integration-role
IAM rôle à cette fin.Dans 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" } ] }'Dans 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'avoir à échapper aux guillemets dans leJSON, vous pouvez plutôt 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 :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
Utilisez ensuite la commande suivante pour créer le IAM rôle :
aws iam create-role ^ --role-name
rds-s3-integration-role
^ --assume-role-policy-document file://file_path
/assume_role_policy.jsonExemple d'utiliser la clé de contexte de condition globale pour créer le IAM rôle
Nous vous recommandons d'utiliser les clés de contexte de condition globale
aws:SourceArn
etaws: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.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 valeuraws:SourceAccount
et le compte dans la valeuraws: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
aws:SourceArn
globale avec le nom complet de la ressource Amazon (ARN) des ressources accédant au rôle. Pour l'intégration S3, assurez-vous d'inclure l'instance de base de donnéesARNs, comme indiqué dans l'exemple suivant.Dans 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
" } } } ] }'Dans Windows:
Ajoutez la clé de contexte de condition globale à
assume_role_policy.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 associer la IAM politique au IAM rôle
-
La AWS CLI commande suivante associe la politique au rôle nommé
rds-s3-integration-role
.
Remplacez-la par la politique ARN que vous avez notée à l'étape précédente.your-policy-arn
Dans Linux, macOS, ou Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
Dans Windows:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role