Amazon RDS - Contrôle d'accès aux bases de données
Pour accéder à l'instance de base de données Amazon RDS, l'utilisateur a besoin d'autorisations spécifiques. Ceci est configuré à l'aide d'AWS IAM (gestion des identités et des accès). Dans ce tutoriel, nous verrons comment cette configuration est effectuée.
La configuration comprend deux parties.
Authentication
Contrôle d'accès
Cela implique la création du nom d'utilisateur, du mot de passe et la génération des clés d'accès pour l'utilisateur. Avec l'aide de la clé d'accès, il est possible de créer un accès par programme au service AWS RDS. Les outils SDK et CLI utilisent les clés d'accès pour se connecter de manière cryptographique avec la demande.
Nous pouvons également utiliser un rôle IAM pour authentifier un utilisateur. Mais le rôle n'est pas associé à un utilisateur spécifique, mais tout utilisateur peut assumer temporairement le rôle et effectuer la tâche requise. Une fois la tâche terminée, le rôle peut être révoqué et l'utilisateur perd la capacité d'authentification.
Une fois qu'un utilisateur est authentifié, une politique attachée à cet utilisateur détermine le type de tâches que l'utilisateur peut effectuer. Voici un exemple de politique permettant la création d'une instance de base de données RDS, sur une instance t2.micro pour le moteur de base de données MySQL.
{
"Version": "2018-09-11",
"Statement": [
{
"Sid": "AllowCreateDBInstanceOnly",
"Effect": "Allow",
"Action": [
"rds:CreateDBInstance"
],
"Resource": [
"arn:aws:rds:*:123456789012:db:test*",
"arn:aws:rds:*:123456789012:og:default*",
"arn:aws:rds:*:123456789012:pg:default*",
"arn:aws:rds:*:123456789012:subgrp:default"
],
"Condition": {
"StringEquals": {
"rds:DatabaseEngine": "mysql",
"rds:DatabaseClass": "db.t2.micro"
}
}
}
]
}
Action sur toute ressource RDS
Dans l'exemple ci-dessous, nous voyons une stratégie qui autorise toute action de description sur n'importe quelle ressource RDS. Le symbole * est utilisé pour représenter n'importe quelle ressource.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowRDSDescribe",
"Effect":"Allow",
"Action":"rds:Describe*",
"Resource":"*"
}
]
}
Interdire la suppression d'une instance de base de données
La stratégie ci-dessous interdit à un utilisateur de supprimer une instance de base de données spécifique.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"DenyDelete1",
"Effect":"Deny",
"Action":"rds:DeleteDBInstance",
"Resource":"arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
}
]
}