Comment vous protéger des factures AWS inattendues

Imaginez que vous ayez un petit projet dans le cloud. Depuis six mois maintenant, vous en payez 20 cents par mois. En gros, rien de spécial. Mais un matin, soudain, une grosse facture de 2700 $ arrive.





Dans le cloud, nous payons le stockage, l'informatique et d'autres services au fur et à mesure que nous les utilisons. Pas besoin de configurer votre propre serveur. Cependant, l'inconvénient est que vous pouvez accidentellement dépenser plus d'argent que dans votre portefeuille. Cela est particulièrement difficile avec les solutions sans serveur qui s'adaptent automatiquement au trafic entrant.



Laissez accidentellement une machine virtuelle coûteuse sans surveillance ou vos fonctions lambda deviendront incontrôlables - et cela peut conduire à un score inattendu.





Dans cet article, nous allons examiner le fonctionnement de la facturation et comment empêcher l'apparition de factures inattendues.



Petites entreprises, petites factures



Cet article concerne les projets personnels et les petites entreprises avec des comptes relativement petits. Certaines grandes entreprises peuvent ne pas remarquer la différence de 3 000 $.



Il n'y a pas de solution parfaite



Malheureusement, il n'y a pas de solution parfaite ici. Selon Corey Quinn dans son podcast , le système de facturation AWS a plusieurs heures de retard, et dans certains cas jusqu'à 24 ou 48 heures de retard. En conséquence, les alertes de dépassement de quota peuvent être déclenchées plusieurs heures ou jours après un dépassement significatif. Les alertes sont toujours un excellent outil pour se prémunir contre les coûts inutiles, mais uniquement dans les cas où vous avez oublié quelque chose pendant quelques jours, par exemple, vous n'avez pas arrêté une instance EC2 coûteuse après un atelier d'apprentissage automatique.



C'est à vous de décider du temps à consacrer à la protection contre les dépenses imprévues, mais je recommande vivement de passer deux minutes à mettre en place des alertes budgétaires !



Mécanismes de défense



Il existe de nombreux mécanismes de protection contre les factures imprévues. Pensez à la sécurité, aux alertes, aux actions correctives et à l'amélioration de la visibilité.



1. Protégez votre compte avec l'authentification multifacteur



C'est la première chose que vous devez configurer lors de la création d'un nouveau compte AWS.





Voici le guide officiel d'AWS sur la configuration de l'authentification multifacteur (MFA), qui fournit une barrière supplémentaire contre les attaquants.



2. Alertes budgétaires



C'est la deuxième chose à configurer lors de la création d'un nouveau compte AWS.



Les alertes budgétaires sont le moyen le plus populaire de suivre vos dépenses. Par exemple, vous recevez une notification par e-mail indiquant que la limite a été dépassée. Vous pouvez personnaliser davantage vos notifications à l'aide d' Amazon SNS ou d' AWS Chatbot .



Voici une courte vidéo (52 secondes) sur la création de votre première alerte budgétaire. Ryan Lewis a réalisé une vidéo plus longue avec plus de détails, des détails sur les alertes budgétaires et de nombreuses façons de les personnaliser.



Si vous utilisez déjà le CDK, le package aws-budget-notifier est le meilleur....



De combien commencer?



Commencez avec un montant légèrement supérieur à vos dépenses actuelles et avec lequel vous êtes à l'aise. Par exemple, 10 $. Si vous disposez déjà de charges de travail en cours d'exécution depuis des mois, prenez la moyenne et ajoutez 50%.



Je recommande également de configurer plusieurs alertes de facturation avec différents seuils :



  1. Avertissement pratique: le montant que vous êtes prêt à supporter, mais étudiez ensuite la facture.

  2. Avertissement dangereux: vous ne vous sentez plus à l'aise et souhaitez fermer le service le plus rapidement possible. Si le montant confortable est de 10 $, cela pourrait être de 100 $.

  3. Avertissement critique: avec ce montant, il y a déjà une envie de larguer une bombe nucléaire sur votre compte. Si le montant confortable est de 10 $, cela pourrait être 500 $. Vous pouvez associer des actions budgétaires spéciales ou des alertes de pager à cette alerte pour arrêter automatiquement vos instances EC2 ou vous réveiller.


En plus des seuils prédéfinis, vous pouvez également essayer AWS Service Cost Anomaly Detection .



Bombe nucléaire d'urgence



Puisque vous pouvez envoyer des notifications à SNS, vous pouvez exécuter une fonction lambda qui démarre aws-nuke , détruisant toute l'infrastructure de votre compte. Ne l'utilisez jamais sur un compte de production. Consultez le référentiel GitHub pour plus d'informations .



3. Actions budgétaires



AWS a récemment introduit les actions budgétaires. Il s'agit d'une extension pour les alertes budgétaires, où certaines actions sont déclenchées lorsque la limite budgétaire est dépassée. En plus d'envoyer des notifications par e-mail, vous pouvez désormais appliquer des stratégies IAM personnalisées telles que «Empêcher le lancement d'instances EC2» ou laisser AWS fermer les instances EC2 et RDS, comme indiqué ci-dessous.







4. Application mobile



L'AWS Mobile Console vous permet de vérifier toutes vos dépenses en 3 à 5 clics.



Voici deux écrans de l'application mobile:







Pour utiliser l'application, vous devez configurer un utilisateur dédié qui n'obtient que les autorisations dont l' application a besoin pour afficher vos dépenses.



Voici la stratégie IAM qui donne à l'application un accès en lecture ainsi que des notifications cloudwatch.



{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ce:DescribeCostCategoryDefinition",
                "ce:GetRightsizingRecommendation",
                "ce:GetCostAndUsage",
                "ce:GetSavingsPlansUtilization",
                "ce:GetReservationPurchaseRecommendation",
                "ce:ListCostCategoryDefinitions",
                "ce:GetCostForecast",
                "ce:GetReservationUtilization",
                "ce:GetSavingsPlansPurchaseRecommendation",
                "ce:GetDimensionValues",
                "ce:GetSavingsPlansUtilizationDetails",
                "ce:GetCostAndUsageWithResources",
                "ce:GetReservationCoverage",
                "ce:GetSavingsPlansCoverage",
                "ce:GetTags",
                "ce:GetUsageForecast",
                "health:DescribeEventAggregates",
                "cloudwatch:DescribeAlarms",
                "aws-portal:ViewAccount",
                "aws-portal:ViewUsage",
                "aws-portal:ViewBilling"
            ],
            "Resource": "*"
        }
    ]
}
      
      





Les autorisations sont divisées en trois groupes:



  1. CloudWatch Cost Explorer (tout ce qui commence par ce:



    ). Informations détaillées sur les coûts actuels et projetés.

  2. CloudWatch (cloudwatch:DescribeAlarms



    ). , .

  3. (, aws-portal:



    health:



    ). .


5.



Si vous téléchargez accidentellement des clés d'accès dans un référentiel public , les attaquants peuvent lancer des instances EC2 coûteuses dans votre compte et les utiliser, par exemple, pour extraire des bitcoins. Il y a eu des rapports de cas où de petites instances se cachent dans des régions sous-utilisées afin que le propriétaire ne les remarque pas dans les détails de facturation.



Vous pouvez utiliser AWS Secrets Manager pour effacer les mots de passe ou autres secrets de votre code .



Suivez ce guide AWS pour créer votre premier secret . Remplacez ensuite le secret de la base de code en le demandant à l'aide de l'un des clients AWS officiels ( boto3 pour Python ).



import boto3

client = boto3.client('secretsmanager')

response = client.get_secret_value(SecretId='replace-me')

secret = response['SecretString']
      
      





Notez que chaque secret coûte 0,40 USD par mois, plus 0,05 USD pour 10 000 appels d'API.



Service d'assistance



Si vous recevez une facture inattendue, arrêtez toutes les applications qui ont causé la situation, modifiez les clés d'accès si nécessaire et contactez AWS Support. Voici une vidéo de 20 secondes où cliquer.



Instructions étape par étape pour soumettre un ticket d'assistance:



  • Dans le coin supérieur droit, cliquez sur le bouton Assistance et sélectionnez Centre d'assistance

  • Appuyez sur le bouton orange Créer un cas

  • Sélectionnez le compte et la facturation

  • Sélectionnez "Facturation" comme type et "Problème de paiement" comme catégorie

  • Remplissez tous les détails et envoyez


Si certains ont été remboursés de leur facture imprévue, ne comptez pas trop dessus.



Conclusion



La première chose à faire est de configurer l' authentification multifacteur et les alertes budgétaires . Vous pouvez ensuite explorer des opérations plus complexes, telles que des actions de budgétisation, pour geler votre compte si les dépenses augmentent.



Pour empêcher vos secrets et clés d'accès de se retrouver dans des référentiels publics, enregistrez-les dans AWS Secrets Manager .



All Articles