So schützen Sie sich vor unerwarteten AWS-Rechnungen

Stellen Sie sich vor, Sie haben ein kleines Projekt in der Cloud. Seit sechs Monaten zahlen Sie 20 Cent pro Monat dafür. Grundsätzlich nichts Besonderes. Aber eines Morgens kommt plötzlich eine große Rechnung von 2.700 Dollar herein.





In der Cloud zahlen wir für Speicher, Computer und andere Dienste, wenn wir sie nutzen. Sie müssen keinen eigenen Server einrichten. Der Nachteil ist jedoch, dass Sie versehentlich mehr Geld ausgeben können als in Ihrer Brieftasche. Dies ist besonders schwierig bei serverlosen Lösungen, die automatisch mit dem eingehenden Datenverkehr skaliert werden.



Lassen Sie versehentlich eine teure VM unbeaufsichtigt, oder Ihre Lambda-Funktionen geraten außer Kontrolle - und dies kann zu unerwarteten Ergebnissen führen.





In diesem Artikel sehen wir uns an, wie die Abrechnung funktioniert und wie verhindert wird, dass unerwartete Rechnungen angezeigt werden.



Kleinunternehmen, kleine Rechnungen



Dieser Artikel handelt von persönlichen Projekten und kleinen Unternehmen mit relativ kleinen Konten. Einige große Unternehmen bemerken den Unterschied von 3.000 USD möglicherweise nicht.



Es gibt keine perfekte Lösung



Leider gibt es hier keine perfekte Lösung. Laut Corey Quinn in seinem Podcast liegt das AWS-Abrechnungssystem mehrere Stunden und in einigen Fällen bis zu 24 oder 48 Stunden zurück. Infolgedessen können Überkontingentwarnungen mehrere Stunden oder Tage nach einem signifikanten Überlauf ausgelöst werden. Warnungen sind immer noch ein großartiges Werkzeug, um unnötige Kosten zu vermeiden, aber nur in Fällen, in denen Sie beispielsweise einige Tage lang etwas vergessen haben, wurde eine teure EC2-Instanz nach einem Workshop zum maschinellen Lernen nicht gestoppt.



Es liegt an Ihnen, wie viel Zeit Sie für den Schutz vor unerwarteten Ausgaben aufwenden müssen. Ich empfehle jedoch dringend , zwei Minuten damit zu verbringen , Budgetbenachrichtigungen einzurichten !



Verteidigungsmechanismus



Es gibt viele Mechanismen zum Schutz vor unerwarteten Rechnungen. Berücksichtigen Sie Sicherheit, Warnungen, Korrekturmaßnahmen und die Verbesserung der Sichtbarkeit.



1. Schützen Sie Ihr Konto mit einer Multi-Faktor-Authentifizierung



Dies ist das erste, was Sie beim Erstellen eines neuen AWS-Kontos einrichten sollten.





Hier ist der offizielle Leitfaden von AWS zum Einrichten der Multi-Factor-Authentifizierung (MFA), die eine zusätzliche Barriere gegen Angreifer darstellt.



2. Budgetwarnungen



Dies ist die zweite Konfiguration beim Erstellen eines neuen AWS-Kontos.



Budget-Benachrichtigungen sind die beliebteste Methode, um Ihre Ausgaben im Auge zu behalten. Beispielsweise erhalten Sie eine E-Mail-Benachrichtigung, dass das Limit überschritten wurde. Sie können Ihre Benachrichtigungen mithilfe von Amazon SNS oder AWS Chatbot weiter anpassen .



Hier ist ein kurzes Video (52 Sekunden) zum Erstellen Ihrer ersten Budgetbenachrichtigung. Ryan Lewis hat ein längeres Video mit mehr Details, Details zu Budgetwarnungen und vielen Möglichkeiten zum Anpassen erstellt.



Wenn Sie das CDK bereits verwenden, ist das Paket aws-budget-notifier am besten geeignet....



Wie viel soll ich anfangen?



Beginnen Sie mit einem Betrag, der etwas höher ist als Ihre aktuellen Ausgaben und mit dem Sie vertraut sind. Zum Beispiel 10 US-Dollar. Wenn Sie bereits Workloads haben, die seit Monaten ausgeführt werden, nehmen Sie den Durchschnitt und addieren Sie 50%.



Ich empfehle außerdem, mehrere Abrechnungsbenachrichtigungen mit unterschiedlichen Schwellenwerten einzurichten :



  1. Praktische Warnung: Der Betrag, den Sie bereit sind zu ertragen, aber dann die Rechnung studieren.

  2. Gefährliche Warnung: Sie fühlen sich nicht mehr wohl und möchten den Dienst so schnell wie möglich schließen. Wenn der bequeme Betrag 10 US-Dollar beträgt, können dies 100 US-Dollar sein.

  3. Kritische Warnung: Mit diesem Betrag besteht bereits der Wunsch, eine Atombombe auf Ihr Konto zu werfen. Wenn der bequeme Betrag 10 US-Dollar beträgt, können dies 500 US-Dollar sein. Sie können dieser Warnung spezielle Budgetaktionen oder Pager- Warnungen hinzufügen , um Ihre EC2-Instanzen automatisch zu stoppen oder Sie zu wecken.


Zusätzlich zu den vordefinierten Schwellenwerten können Sie auch die AWS Service Cost Anomaly Detection ausprobieren .



Notfall-Atombombe



Da Sie Benachrichtigungen an SNS senden können, können Sie eine Lambda-Funktion ausführen, die aws-nuke startet und die gesamte Infrastruktur in Ihrem Konto zerstört. Verwenden Sie dies niemals für ein Produktionskonto. Weitere Informationen finden Sie im GitHub-Repository .



3. Haushaltsmaßnahmen



AWS hat kürzlich Budgetaktionen eingeführt . Dies ist eine Erweiterung für Budgetwarnungen, bei der bestimmte Aktionen ausgelöst werden, wenn das Budgetlimit überschritten wird. Zusätzlich zum Senden von E-Mail-Benachrichtigungen können Sie jetzt benutzerdefinierte IAM-Richtlinien wie "Verhindern des Startens von EC2-Instanzen" erzwingen oder AWS EC2- und RDS-Instanzen schließen lassen, wie unten gezeigt.







4. Mobile Anwendung



Mit der AWS Mobile Console können Sie alle Ihre Ausgaben mit 3-5 Klicks überprüfen.



Hier sind zwei Bildschirme der mobilen App:







Um die App verwenden zu können, müssen Sie einen dedizierten Benutzer einrichten, der nur die Berechtigungen erhält, die die App zum Anzeigen Ihrer Ausgaben benötigt.



Hier ist die IAM-Richtlinie, die der App Lesezugriff sowie Cloudwatch-Benachrichtigungen gewährt.



{
    "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": "*"
        }
    ]
}
      
      





Berechtigungen sind in drei Gruppen unterteilt:



  1. CloudWatch Cost Explorer (alles, was damit beginnt ce:



    ). Detaillierte Informationen zu aktuellen und prognostizierten Kosten.

  2. CloudWatch (cloudwatch:DescribeAlarms



    ). , .

  3. (, aws-portal:



    health:



    ). .


5.



Wenn Sie versehentlich Zugriffsschlüssel in ein öffentliches Repository hochladen , können Angreifer teure EC2-Instanzen in Ihrem Konto starten und sie beispielsweise zum Minen von Bitcoins verwenden. Es wurde berichtet, dass sich kleine Instanzen in nicht ausgelasteten Regionen verstecken, sodass der Eigentümer sie im Abrechnungsdetail nicht bemerkt.



Mit dem AWS Secrets Manager können Sie Kennwörter oder andere Geheimnisse aus Ihrem Code entfernen .



Befolgen Sie diese AWS-Anleitung, um Ihr erstes Geheimnis zu erstellen . Ersetzen Sie dann das Geheimnis aus der Codebasis, indem Sie es mit einem der offiziellen AWS-Clients ( boto3 für Python ) anfordern .



import boto3

client = boto3.client('secretsmanager')

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

secret = response['SecretString']
      
      





Beachten Sie, dass jedes Geheimnis 0,40 USD pro Monat plus 0,05 USD für 10.000 API-Aufrufe kostet.



Support-Service



Wenn Sie eine unerwartete Rechnung erhalten, stoppen Sie alle Anwendungen, die die Situation verursacht haben, ändern Sie gegebenenfalls die Zugriffsschlüssel und wenden Sie sich an den AWS-Support. Hier ist ein 20-Sekunden-Video, wo Sie klicken müssen.



Schritt-für-Schritt-Anleitung zum Einreichen eines Support-Tickets:



  • Klicken Sie in der oberen rechten Ecke auf die Schaltfläche Support und wählen Sie Support Center

  • Drücken Sie die orangefarbene Schaltfläche Fall erstellen

  • Konto und Abrechnung auswählen

  • Wählen Sie als Typ "Abrechnung" und als Kategorie "Problem mit Zahlungen"

  • Füllen Sie alle Details aus und senden Sie


Während einige für ihre unerwartete Rechnung erstattet wurden, rechnen Sie nicht zu viel damit.



Fazit



Als erstes müssen Sie MFA- und Budget-Warnungen einrichten . Sie können dann komplexere Vorgänge wie Budgetierungsmaßnahmen untersuchen, um Ihr Konto einzufrieren, wenn die Ausgaben steigen. Speichern Sie



Ihre Geheimnisse und Zugriffsschlüssel in AWS Secrets Manager , um zu verhindern, dass sie in öffentlichen Repositorys landen .



All Articles