Configuration de l’accès à un compartiment Amazon S3
Pour exporter des données vers Amazon S3, accordez à votre instance l'autorisation d'accéder au compartiment Amazon S3 dans lequel les fichiers doivent être stockés.
Pour cela, procédez comme suit :
Pour donner à une instance de base de données PostgreSQL l'accès à Amazon S3 via un rôle IAM
-
Créez une politique IAM.
Cette stratégie fournit le compartiment et les autorisations d'objet permettant à votre instance de base de données PostgreSQL d'accéder à Amazon S3.
Dans le cadre de la création de cette politique, procédez comme suit :
-
Incluez dans la stratégie les actions obligatoires suivantes pour permettre le transfert de fichiers de votre instance de base de données PostgreSQL vers un compartiment Amazon S3 :
-
s3:PutObject -
s3:AbortMultipartUpload
-
-
Incluez l'Amazon Resource Name (ARN) qui identifie le compartiment Amazon S3 et les objets du compartiment. Le format ARN pour l'accès à Amazon S3 est le suivant :
arn:aws:s3:::amzn-s3-demo-bucket/*
Pour plus d’informations sur la création d’une politique IAM pour Amazon RDS pour PostgreSQL, consultez Création et utilisation d'une politique IAM pour l'accès à une base de données IAM. Consultez également Didacticiel : création et attachement de votre première politique gérée par le client dans le Guide de l’utilisateur IAM.
La commande AWS CLI suivante crée une stratégie IAM nommée
rds-s3-export-policyavec ces options. Elle accorde un accès à un compartiment nomméamzn-s3-demo-bucket.Avertissement
Nous vous recommandons de configurer votre base de données dans un VPC privé dont les politiques de point de terminaison sont configurées pour accéder à des compartiments spécifiques. Pour plus d’informations, consultez Utilisation des stratégies de point de terminaison pour Amazon S3 dans le Guide de l’utilisateur Amazon VPC.
Nous vous recommandons vivement de ne pas créer de politique avec accès à toutes les ressources. Cet accès peut constituer une menace pour la sécurité des données. Si vous créez une stratégie qui accorde à
S3:PutObjectun accès à toutes les ressources à l'aide de"Resource":"*", un utilisateur disposant de privilèges d'exportation peut exporter des données vers tous les compartiments de votre compte. En outre, l'utilisateur peut exporter des données vers n'importe quel compartiment accessible publiquement en écriture dans votre région AWS.Après avoir créé la politique, notez son ARN (Amazon Resource Name). Vous en aurez besoin par la suite pour attacher la politique à un rôle IAM.
aws iam create-policy --policy-name rds-s3-export-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3export", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation", "s3:AbortMultipartUpload" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }' -
-
Créez un rôle IAM.
L'objectif est ici de permettre à Amazon RDS d'endosser ce rôle IAM en votre nom pour accéder à vos compartiments Amazon S3. Pour plus d’informations, consultez Création d’un rôle pour déléguer des autorisations à un utilisateur IAM dans le Guide de l’utilisateur IAM.
Nous vous recommandons d'utiliser les clés de contexte de condition globale
aws:SourceArnetaws:SourceAccountdans 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.Si vous utilisez les deux clés de contexte de condition globale et que la valeur de
aws:SourceArncontient l'ID de compte, la valeur deaws:SourceAccountet le compte indiqué dans la valeur deaws:SourceArndoivent utiliser le même ID de compte lorsqu'il est utilisé dans la même déclaration de politique.Utilisez
aws:SourceArnsi vous souhaitez un accès interservices pour une seule ressource.-
Utilisez
aws:SourceAccountsi vous souhaitez autoriser une ressource de ce compte à être associée à l'utilisation interservices.
Dans la politique, veillez à utiliser la clé de contexte de condition globale
aws:SourceArnavec l'ARN complet de la ressource. L’exemple suivant montre comment procéder en utilisant la commande AWS CLI pour créer un rôle nommérds-s3-export-role.Exemple
Pour Linux, macOS ou Unix :
aws iam create-role \ --role-name rds-s3-export-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'Pour Windows :
aws iam create-role ^ --role-name rds-s3-export-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }' -
Attachez la politique IAM que vous avez créée au rôle IAM que vous venez de créer.
La commande AWS CLI suivante attache la stratégie créée précédemment au rôle nommé
rds-s3-export-role.. Remplacezpar l'ARN de la stratégie que vous avez noté à une étape précédente.your-policy-arnaws iam attach-role-policy --policy-arnyour-policy-arn--role-name rds-s3-export-role -
Ajoutez le rôle IAM à l'instance de base de données. Pour ce faire, utilisez AWS Management Console ou AWS CLI, comme décrit à la suite.
Pour ajouter un rôle IAM à l'instance de base de données PostgreSQL à l'aide de la console
Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l’adresse https://console.aws.amazon.com/rds/
. -
Choisissez le nom de l’instance de base de données PostgreSQL pour afficher ses détails.
-
Dans l'onglet Connectivité & sécurité de la section Gérer les rôles IAM, choisissez le rôle à ajouter sous Ajouter des rôles IAM à cette instance.
-
Sous Fonctionnalité, choisissez s3Export.
-
Choisissez Ajouter un rôle.
Pour ajouter un rôle IAM à une instance de base de données PostgreSQL à l'aide de la CLI
-
Utilisez la commande suivante pour ajouter le rôle à l'instance de base de données PostgreSQL nommée
my-db-instance. Remplacezpar l'ARN de rôle que vous avez noté lors d'une étape précédente. Utilisezyour-role-arns3Exportcomme valeur de l’option--feature-name.Exemple
Pour Linux, macOS ou Unix :
aws rds add-role-to-db-instance \ --db-instance-identifiermy-db-instance\ --feature-name s3Export \ --role-arnyour-role-arn\ --regionyour-regionPour Windows :
aws rds add-role-to-db-instance ^ --db-instance-identifiermy-db-instance^ --feature-name s3Export ^ --role-arnyour-role-arn^ --regionyour-region