Amazon Relational Database Service
Guide de l'utilisateur

Contrôle d'accès par groupe de sécurité

Les groupes de sécurité contrôlent l'accès dont dispose le trafic entrant et sortant d'une instance de base de données. Trois types de groupe de sécurité sont utilisés avec Amazon RDS : les groupes de sécurité de base de données, les groupes de sécurité VPC et les groupes de sécurité Amazon EC2. En termes simples, le fonctionnement est le suivant :

  • Un groupe de sécurité de base de données contrôle l'accès réseau aux instances de base de données EC2-Classic qui ne sont pas dans un VPC.

  • Un groupe de sécurité VPC contrôle l'accès aux instances de base de données et aux instances EC2 dans un VPC.

  • Un groupe de sécurité EC2 contrôle l'accès à une instance EC2.

Par défaut, l'accès réseau est désactivé pour une instance de base de données. Vous pouvez spécifier des règles dans un groupe de sécurité qui autorise l'accès depuis une plage d'adresses IP, un port ou un groupe de sécurité EC2. Une fois les règles de trafic entrant configurées, les mêmes règles s'appliquent à toutes les instances de base de données qui sont associées à ce groupe de sécurité. Vous pouvez spécifier jusqu'à 20 règles dans un groupe de sécurité.

Groupes de sécurité DB

Les groupes de sécurité de base de données sont utilisés avec des instances de base de données qui ne se trouvent pas dans un VPC, ni dans la plateforme EC2-Classic. Chaque règle de groupe de sécurité DB permet à une source spécifique d'accéder à une instance de base de données associée à ce groupe de sécurité DB. Cette source peut être une plage d'adresses (par exemple, 203.0.113.0/24) ou un groupe de sécurité EC2. Lorsque vous spécifiez un groupe de sécurité EC2 en tant que source, vous autorisez le trafic entrant provenant de toutes les instances EC2 qui utilisent ce groupe de sécurité EC2. Les règles d'un groupe de sécurité de base de données s'appliquent uniquement au trafic entrant. Le trafic sortant n'est actuellement pas autorisé pour les instances de base de données.

Vous n'avez pas besoin de spécifier un numéro de port de destination lorsque vous créez des règles de groupe de sécurité de base de données. Le numéro de port défini pour l'instance de base de données est utilisé comme numéro de port de destination pour toutes les règles définies pour le groupe de sécurité de base de données. Les ensembles de sécurité de base de données peuvent être créés à l'aide des opérations d'API Amazon RDS ou de la page Amazon RDS de la AWS Management Console.

Pour plus d'informations sur l'utilisation des groupes de sécurité DB, consultez Utilisation des groupes de sécurité DB (plateforme EC2-Classic).

Groupes de sécurité VPC

Chaque règle de groupe de sécurité VPC permet à une source spécifique d'accéder à une instance de base de données dans un VPC associée à ce groupe de sécurité VPC. Cette source peut être une plage d'adresses (par exemple, 203.0.113.0/24) ou un autre groupe de sécurité VPC. En spécifiant un groupe de sécurité VPC en tant que source, vous autorisez le trafic entrant provenant de toutes les instances (généralement les serveurs d'application) qui utilisent le groupe de sécurité VPC source. Les groupes de sécurité VPC peuvent avoir des règles qui régissent à la fois le trafic entrant et sortant, même si les règles de trafic sortant ne s'appliquent généralement pas aux instances de base de données. Des règles de trafic sortant s'appliquent uniquement si l'instance de base de données fonctionne comme un client. Par exemple, dès règles de trafic sortant s'appliquent à une instance de base de données Oracle DB avec des liens de base de données sortants. Vous devez utiliser l'API Amazon EC2 ou l'option Groupe de sécurité de la console VPC pour créer des groupes de sécurité VPC.

Lorsque vous créez des règles pour votre groupe de sécurité VPC pour permettre d'accéder aux instances dans votre VPC, vous devez spécifier un port pour chaque plage d'adresses à laquelle la règle autorise l'accès. Par exemple, si vous souhaitez activer l'accès SSH vers les instances du VPC, vous créez une règle qui autorise l'accès au port TCP 22 pour la plage d'adresses spécifiée.

Vous pouvez configurer plusieurs groupes de sécurité VPC qui permettent d'accéder à des ports différents pour différentes instances dans votre VPC. Par exemple, vous pouvez créer un groupe de sécurité VPC qui autorise l'accès au port TCP 80 pour les serveurs Web de votre VPC. Vous pouvez ensuite créer un autre groupe de sécurité VPC qui autorise l'accès au port TCP 3306 pour les instances de base de données RDS MySQL de votre VPC.

Pour plus d'informations sur les groupes de sécurité VPC, consultez Groupes de sécurité dans le Guide de l'utilisateur Amazon Virtual Private Cloud.

Groupes de sécurité de base de données vs. Groupes de sécurité VPC

Le tableau ci-dessous montre les différences clés entre les groupes de sécurité DB et les groupes de sécurité VPC.

Groupe de sécurité DB Groupe de sécurité VPC
Contrôle l'accès aux instances de base de données situées hors d'un VPC. Contrôle l'accès aux instances de base de données situées dans un VPC.
Utilise les opérations d'API Amazon RDS ou la page Amazon RDS de la AWS Management Console pour créer et gérer un groupe et des règles. Utilise les opérations d'API Amazon EC2 ou la page Amazon VPC de la AWS Management Console pour créer et gérer un groupe et des règles.
Lorsque vous ajoutez une règle à un groupe, vous n'avez pas besoin de spécifier de numéro de port ni de protocole. Lorsque vous ajoutez une règle à un groupe, indiquez le protocole TCP. En outre, spécifiez le même numéro de port que celui que vous avez utilisé pour créer les instances de base de données (ou options) que vous envisagez d'ajouter au groupe en tant que membres.
Les groupes autorisent l'accès à partir des groupes de sécurité EC2 dans votre compte AWS ou dans d'autres comptes. Les groupes autorisent l'accès à partir des autres groupes de sécurité VPC dans votre VPC uniquement.

Scénario de groupes de sécurité

Une utilisation courante d'une instance de base de données dans un VPC consiste à partager les données avec un serveur d'application qui s'exécute dans une instance Amazon EC2 dans le même VPC et auquel accède une application cliente située hors du VPC. Dans ce scénario, vous utilisez les pages RDS et VPC sur la AWS Management Console ou les opérations d'API RDS et EC2 pour créer les instances et les groupes de sécurité nécessaires :

  1. Créez un groupe de sécurité VPC (par exemple, sg-appsrv1) et définissez des règles entrantes qui utilisent les adresses IP de l'application cliente comme source. Ce groupe de sécurité autorise votre application cliente à se connecter aux instances EC2 dans un VPC qui utilise ce groupe de sécurité.

  2. Créez une instance EC2 pour l'application et ajoutez l'instance EC2 au groupe de sécurité VPC (sg-appsrv1) que vous avez créé à l'étape précédente. L'instance EC2 dans le VPC partage le groupe de sécurité VPC avec l'instance de base de données.

  3. Créez un second groupe de sécurité VPC (par exemple, sg-dbsrv1) et créez une nouvelle règle en spécifiant le groupe de sécurité VPC que vous avez créé à l'étape 1 (sg-appsrv1) en tant que source.

  4. Créez une instance de base de données et ajoutez-la au groupe de sécurité VPC (sg-dbsrv1) que vous avez créé à l'étape précédente. Lorsque vous créez l'instance de base de données, utilisez le même numéro de port que celui spécifié pour la règle du groupe de sécurité VPC (sg-dbsrv1) que vous avez créée à l'étape 3.

Le schéma suivant illustre ce scénario.


                    Scénario de groupe de sécurité VPC et EC2

Pour plus d'informations sur l'utilisation d'un VPC, consultez VPC Amazon Virtual Private Cloud et Amazon RDS.

Création d'un groupe de sécurité VPC

Vous pouvez créer un groupe de sécurité VPC pour une instance de base de données à l'aide de la console VPC. Pour plus d'informations sur la création d'un groupe de sécurité, consultez Créer un groupe de sécurité qui autorise l'accès à votre instance de base de données dans votre VPC et Groupes de sécurité dans le Guide de l'utilisateur Amazon Virtual Private Cloud.

Association d'un groupe de sécurité à une instance de base de données

Vous pouvez associer un groupe de sécurité de base de données à une instance de base de données à l'aide de l'option Modifier sur la console RDS, de l'API ModifyDBInstance Amazon RDS ou de la commande modify-db-instance de l'AWS CLI.

Pour plus d'informations sur la modification d'une instance de base de données , consultez Modification d'une instance de base de données Amazon RDS. Pour plus de détails sur les groupes de sécurité lors de la restauration d'une instance de base de données à partir d'un instantané de base de données, consultez Considérations relatives au groupe de sécurité.

Suppression de Security Group DB VPC

Les groupes de sécurité DB VPC sont un mécanisme RDS permettant de synchroniser les informations de sécurité avec un groupe de sécurité VPC. Toutefois, cette synchronisation n'est plus requise car RDS a été mis à jour pour utiliser directement les informations des groupes de sécurité VPC.

Note

Les groupe de sécurité VPC de base de données sont obsolètes et différents des groupes de sécurité DB, des groupes de sécurité VPC et les groupes de sécurité EC2.

Nous vous recommandons vivement de supprimer tous les groupes de sécurité de base de données VPC que vous utilisez actuellement. Si vous ne supprimez pas vos groupes de sécurité de base de données VPC, vous pouvez rencontrer des comportements inattendus avec vos instances de base de données qui peuvent poser de graves problèmes, tels que la perte de l'accès à une instance de base de données. Les comportements inattendus peuvent résulter d'une action telle qu'une mise à jour apportée à une instance de base de données, à un groupe de paramètres, etc. De tells mises à jour entraînent la resynchronisation par RDS du groupe de sécurité de base de données VPC avec le groupe de sécurité VPC. Cette resynchronisation peut entraîner le remplacement de vos informations de sécurité par des informations de sécurité incorrectes et obsolètes. Cela peut affecter gravement votre accès à vos instances de base de données.

Comment déterminer si vous possédez un groupe de sécurité VPC de base de données ?

Comme les groupes de sécurité de base de données VPC sont désormais obsolètes, ils n'apparaissent pas dans la console RDS. Toutefois, vous pouvez appeler la commande describe-db-security-groups de l'interface AWS CLI ou l'opération d'API DescribeDBSecurityGroups pour déterminer si vous avez des groupes de sécurité de base de données VPC.

Dans ce cas, vous pouvez appeler la commande d'AWS CLI describe-db-security-groups avec JSON indiqué comme format de sortie. Ce faisant, vous pouvez identifier les groupes de sécurité VPC de base de données grâce à l'identifiant VPC figurant sur la deuxième ligne de la sortie pour le groupe de sécurité, comme illustré dans l'exemple suivant.

{ "DBSecurityGroups": [ { "VpcId": "vpc-abcd1234", "DBSecurityGroupDescription": "default:vpc-abcd1234", "IPRanges": [ { "Status": "authorized", "CIDRIP": "xxx.xxx.xxx.xxx/n" }, { "Status": "authorized", "CIDRIP": "xxx.xxx.xxx.xxx/n " } ], "OwnerId": "123456789012", "EC2SecurityGroups": [], "DBSecurityGroupName": "default:vpc-abcd1234" } ] }

Si vous exécutez l'opération d'API DescribeDBSecurityGroups, vous pouvez identifier les groupes de sécurité de base de données VPC à l'aide de l'élément de réponse <VpcId>, tel qu'illustré dans l'exemple suivant.

<DBSecurityGroup> <EC2SecurityGroups/> <DBSecurityGroupDescription>default:vpc-abcd1234</DBSecurityGroupDescription> <IPRanges> <IPRange> <CIDRIP>xxx.xxx.xxx.xxx/n</CIDRIP> <Status>authorized</Status> </IPRange> <IPRange> <CIDRIP>xxx.xxx.xxx.xxx/n</CIDRIP> <Status>authorized</Status> </IPRange> </IPRanges> <VpcId>vpc-abcd1234</VpcId> <OwnerId>123456789012</OwnerId> <DBSecurityGroupName>default:vpc-abcd1234</DBSecurityGroupName> </DBSecurityGroup>

Comment supprimer un groupe de sécurité de base de données VPC ?

Étant donné que les groupes de sécurité VPC de base de données n'apparaissent pas dans la console RDS, vous devez appeler la commande delete-db-security-group de l'interface AWS CLI ou l'opération d'API DeleteDBSecurityGroup pour supprimer un groupe de sécurité VPC de base de données.

Après avoir supprimé un groupe de sécurité de base de données VPC, vos instances de base de données de votre VPC continuent à être sécurisées par le groupe de sécurité pour ce VPC. Le groupe de sécurité DB VPC qui a été supprimé n'était qu'une copie des informations des groupes de sécurité VPC.

Passer en revue vos modèles AWS CloudFormation

Les versions antérieures des modèles AWS CloudFormation peuvent contenir des instructions permettant de créer un groupe de sécurité DB VPC. Comme les groupes de sécurité VPC de base de données ne sont pas encore complètement abandonnés, il est encore possible d'en créer. Assurez-vous que les modèles AWS CloudFormation que vous utilisez pour fournir des paramètres de sécurité à une instance de base de données ne créent pas également un groupe de sécurité VPC de base de données. N'utilisez pas de modèles AWS CloudFormation qui créent un groupe RDS DBSecurityGroup avec un identifiant EC2VpcId comme illustré dans l'exemple suivant.

{ "DbSecurityByEC2SecurityGroup" : { "Type" : "AWS::RDS::DBSecurityGroup", "Properties" : { "GroupDescription" : "Ingress for Amazon EC2 security group", "EC2VpcId" : "MyVPC", "DBSecurityGroupIngress" : [ { "EC2SecurityGroupId" : "sg-b0ff1111", "EC2SecurityGroupOwnerId" : "111122223333" }, { "EC2SecurityGroupId" : "sg-ffd722222", "EC2SecurityGroupOwnerId" : "111122223333" } ] } } }

A la place, ajoutez des informations de sécurité pour vos instances de base de données dans un VPC à l'aide de groupes de sécurité VPC, comme illustré dans l'exemple suivant.

{ "DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName" : { "Ref" : "DBName" }, "Engine" : "MySQL", "MultiAZ" : { "Ref": "MultiAZDatabase" }, "MasterUsername" : { "Ref" : "<master_username>" }, "DBInstanceClass" : { "Ref" : "DBClass" }, "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" }, "MasterUserPassword": { "Ref" : "<master_password>" }, "VPCSecurityGroups" : [ { "Fn::GetAtt": [ "VPCSecurityGroup", "GroupId" ] } ] } } }