Je souhaite activer la protection contre les suppressions accidentelles pour ma table Amazon DynamoDB afin de protéger mes données.
Brève description
Pour éviter la suppression involontaire de tables DynamoDB, vous pouvez utiliser la fonction de protection contre la suppression. Lorsque cette fonction est activée, vous devez donner votre confirmation de suppression explicite pour que la table puisse être supprimée. Vous pouvez également utiliser des stratégies basées sur les ressources pour renforcer la protection de votre table DynamoDB.
Pour activer la protection contre la suppression, utilisez l'une des méthodes suivantes :
- Console DynamoDB
- Interface de la ligne de commande AWS (AWS CLI)
- Kit SDK AWS
Résolution
Utiliser la console DynamoDB pour activer la protection contre la suppression
- Connectez-vous à la console de gestion AWS.
- Ouvrez la console Amazon DynamoDB.
- Dans le volet de navigation, sélectionnez Tables.
- Sélectionnez la table pour laquelle vous souhaitez activer la protection contre les suppressions accidentelles, puis choisissez le nom de la table pour ouvrir les détails de la table.
- Dans la section Détails de la table, sélectionnez Paramètres supplémentaires.
- Sous Protection contre la suppression, choisissez le paramètre Activer.
- Sélectionnez Enregistrer.
Utiliser l'interface de ligne de commande AWS pour activer la protection contre la suppression
Pour utiliser l'AWS CLI afin d'activer la protection contre la suppression d'une table DynamoDB, exécutez la commande suivante :
aws dynamodb update-table \
--table-name my-table \
--deletion-protection-enabled
Remarque : Remplacez my-table par le nom de votre table DynamoDB.
Utiliser le kit SDK AWS pour activer la protection contre la suppression
Vous pouvez également utiliser le kit SDK AWS pour activer par programmation la protection contre la suppression. L'exemple suivant utilise le kit SDK AWS pour Python (Boto3) :
import boto3
# Create a DynamoDB client
dynamodb = boto3.client('dynamodb')
# Set the table name
table_name = 'my-table'
# Enable delete protection
try:
response = dynamodb.update_table(
TableName=table_name,
DeletionProtectionEnabled=True
)
print(f'Delete protection enabled for table {table_name}')
except Exception as e:
print(f'Error enabling delete protection: {e}')
Remarque : Remplacez 'my-table' par le nom de votre table DynamoDB.
Lorsque vous tentez de supprimer la table, le message d'erreur suivant s'affiche :
« Une erreur s'est produite (ValidationException) lors de l'appel de l'opération DeleteTable : La ressource ne peut pas être supprimée car elle est actuellement protégée contre la suppression. Désactivez d'abord la protection contre la suppression. »
Remarque : Pour supprimer la table avec succès, vous devez désactiver la protection contre la suppression.
Meilleures pratiques supplémentaires
Pour mieux protéger vos tables DynamoDB contre toute suppression accidentelle, consultez les bonnes pratiques suivantes.
Utiliser une stratégie basée sur les ressources
Utilisez des stratégies basées sur les ressources pour spécifier les principaux AWS Identity and Access Management (IAM) pour accéder aux ressources et définir les actions autorisées. Lorsque vous créez une stratégie basée sur les ressources, attachez un exemple de stratégie au niveau de la table DynamoDB. Dans l'exemple suivant, la stratégie inclut un refus explicite des actions dynamodb:DeleteTable pour toutes les entités IAM à l'exception de Administrateur. Si une entité IAM disposant d'un accès complet tente de supprimer la table, l'action est refusée.
Exemple de stratégie basée sur les ressources :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Principal": "*",
"Action": [
"dynamodb:DeleteTable"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:xxxxx:table/donotdeletetable"
],
"Condition": {
"ForAnyValue:ArnNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::xxxxx:role/Admin"
}
}
}
]
}
Exemple de message d’erreur :
« Votre demande de suppression de table a rencontré des problèmes. L'utilisateur : arn:aws:sts::xxxxx:assumed-role/dynamodbfullaccessrole/database-admin n'est pas autorisé à exécuter : dynamodb:DeleteTable sur la ressource : arn:aws:dynamodb:us-east-1:xxxx:table/donotdeletetable avec un refus explicite dans une strtatégie basée sur les ressources. »
Politiques de contrôle des services
AWS Organizations peut utiliser des politiques de contrôle des services (SCP) avec un contrôle d'accès basé sur les attributs (ABAC) pour restreindre l'opération de suppression de tables au niveau organisationnel. Vous pouvez configurer une politique SCP pour empêcher les utilisateurs de supprimer des tables étiquetées avec des paires clé-valeur, telles que production. Pour cette configuration, vous devez supprimer la balise associée avant de pouvoir supprimer la table. Cette configuration permet aux administrateurs de réduire le risque de suppressions accidentelles au sein de leur organisation.
Exemple de SCP avec ABAC :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Action": [
"dynamodb:DeleteTable"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:xxxxx:table/donotdeletetable"
],
"Condition": {
"ForAnyValue:StringEqualsIfExists": {
"aws:ResourceTag/environment": "production"
}
}
}
]
}
Exemple de message d’erreur :
« Votre demande de suppression de table a rencontré des problèmes. L'utilisateur : arn:aws:sts::xxxx:assumed-role/Admin/dbadmin n'est pas autorisé à exécuter : dynamodb:DeleteTable sur la ressource : arn:aws:dynamodb:us-east-1:xxxx:table/donotdeletetablewithtags avec un refus explicite dans une politique de contrôle de service. »
Informations connexes
Utilisation de la sauvegarde et de la restauration à la demande pour DynamoDB
Sécurité et conformité dans Amazon DynamoDB
Bonnes pratiques pour la conception et l'architecture avec DynamoDB