Optimierung des Kostenmanagements: Nutzung von Tags und Mondoo-Policies


Bicycle

In den dynamischen und komplexen Cloud Umgebungen von heute stehen Unternehmen vor großen Herausforderungen, wenn es darum geht, Kosten zu managen und gleichzeitig die Compliance und betriebliche Effizienz zu gewährleisten. Da Unternehmen ihre Cloud Nutzung ständig ausweiten, werden Strategien zur Optimierung des Kostenmanagements wichtiger denn je. Mondoo ist eine umfassende Plattform für Sicherheit und Compliance, die Unternehmen dabei unterstützt, die Sicherheit ihrer Infrastruktur zu automatisieren und durchzusetzen, um eine solide Governance und betriebliche Effizienz zu gewährleisten. Mondoo kann sogar dabei helfen, aktive Assets zu verfolgen. Hier kann der Einsatz von Resource Tagging und die Integration von benutzerdefinierten Mondoo Policies einen entscheidenden Unterschied machen.

Ressourcen-Tagging, eine leistungsstarke, aber oft nicht ausreichend genutzte Methode, ermöglicht es Unternehmen, ihre Cloud Ressourcen systematisch zu kategorisieren und zu verfolgen. In Kombination mit benutzerdefinierten Mondoo Policies, die einen umfassenden Ansatz für Governance und Compliance bieten, können Unternehmen mehr Transparenz, Kontrolle und Kosteneffizienz erreichen. In diesem Blog zeigen wir, wie Mondoo Assets getaggt und eigene Policies erstellt werden können, um etwa nach bestimmten Tags und deren Werten zu suchen.

Ressourcen-Tagging

Tagging erweist sich als wertvoll, da es einen strukturierten Ansatz zur Kategorisierung, Nachverfolgung und Management von Ressourcen oder Assets bietet. Mit Tags können Einzelpersonen oder Organisationen verwandte Objekte effizient gruppieren, was die Verwaltung, den Abruf und die Analyse erleichtert. Tags sind flexibel und ermöglichen eine Anpassung nach verschiedenen Kriterien, wie z. B. Eigentum, Typ oder Standort, und verbessern die Produktivität, die Zusammenarbeit und die Entscheidungsfindung durch bessere Sichtbarkeit und Kontext innerhalb eines Systems oder Datensatzes. Durch die Kategorisierung von Assets mit beschreibenden Metadaten ermöglichen Tags eine bessere Sichtbarkeit, ein besseres Kostenmanagement und eine bessere Nachverfolgung der Einhaltung von Vorschriften, wodurch letztlich die gesamte betriebliche Effizienz und Kontrolle verbessert wird.

Dashboard

Die einfachste Möglichkeit, einer Ressource Metadaten hinzuzufügen, ist das Dashboard. Zu jedem Asset können eine oder mehrere Anmerkungen hinzugefügt werden, was eine einfache Möglichkeit darstellt, Daten anzureichern und den Einblick zu verbessern. Zu beachten ist, dass die meisten im Dashboard hinzugefügten Annotationen nicht mit MQL abgefragt werden können, sondern nur manuell durch Auswahl des jeweiligen Assets gelesen werden können.

Asset-Konfigurations-Anmerkungen

Provider-spezifischee Methoden

Die nächsten Methoden konzentrieren sich auf das Hinzufügen von Tags direkt zu den Ressourcen, unabhängig von Mondoo. Dies ermöglicht es den Nutzern, diese Tags zu lesen und ihre eigenen Tracking Policies mit MQL zu erstellen. In Cloud Umgebungen zum Beispiel sind Tags unerlässlich, um Ressourcen effizient zu organisieren und zu verwalten. Um zu sehen, für welche Ressourcen MQL zum Lesen von Tags oder ähnlichen Feldern verwendet werden kann, empfielt es sich, die MQL-Dokumentation zu durchstöbern.

Der Prozess des Hinzufügens von Metadaten zu Ressourcen kann sich von Provider zu Provider unterscheiden. In diesem Blog konzentrieren wir uns auf das Taggen von Ressourcen innerhalb der Cloud Anbieter Azure und AWS, die für Mondoo Integrationen relevant sind und später von unserer eigenen MQL-Abfrage gelesen werden können. Zu beachten ist, dass Tags auch mit den CLI-Tools der jeweiligen Provider verwaltet werden können.

  • In Microsoft Azure können zahlreiche Ressourcen Tags haben, zum Beispiel Subscriptions, Ressourcengruppen oder Speicherkonten. Auf jeder Ressourcenseite bietet Azure eine eigene Registerkarte "Tags" und einen zentralen Tags-Dienst zum Finden und Verwalten aller Tags. Dies ist ein einfacher Weg, um Tags für Azure Ressourcen im Dashboard hinzuzufügen, zu bearbeiten oder zu löschen.

Azure Tags

  • Genau wie in Microsoft Azure sind Tags auch in Amazon Web Services vorhanden. In AWS ist es möglich, jedes Tag zu bearbeiten, indem man zum jeweiligen Service navigiert oder den zentralen Tag-Editor verwendet.

AWS Konto Tags

AWS Tag Editor

Terraform

Mit Terraform können Benutzer ihre Infrastruktur mit einer hochentwickelten Konfigurationssprache definieren und bereitstellen. Dieser Ansatz stellt sicher, dass Ressourcen-Tags in allen Umgebungen einheitlich angewendet und gepflegt werden. Wir fügen nun Tags direkt nach der Einrichtung unserer Integrationen für Mondoo hinzu.

Wenn mit einer existierenden Infrastruktur gearbeitet wird, die ursprünglich nicht getaggt wurde (ein "Brownfield"-Ansatz), können der Befehl terraform import verwendet werden, um die existierenden Ressourcen in den Terraform State zu importieren. Dadurch können diese Ressourcen so verwaltet und getaggt werden, als ob sie ursprünglich mit Terraform erstellt worden wären.

  • Für Azure ist es nicht empfehlenswert, ein Tag zu einer bestehenden Subscription mit der offiziellen Ressource azurerm_subscription hinzuzufügen, da Terraform beim Zerstören einen Fehler verursacht. Das liegt daran, dass Terraform die Änderungen so behandelt, als ob es eine neue Ressource erstellen müsste, anstatt nur die bestehende zu aktualisieren. Ein Modul eines Drittanbieters ist die Lösung.
 1provider "mondoo" {
 2  region = "eu"
 3}
 4# Create a new space
 5resource "mondoo_space" "azure_space" {
 6  name   = "Azure Terraform Integration"
 7  org_id = var.mondoo_org
 8}
 9# Setup the Azure integration
10resource "mondoo_integration_azure" "azure_integration" {
11  space_id  = mondoo_space.azure_space.id
12  name      = "Azure ${local.mondoo_security_integration_name}"
13  tenant_id = var.tenant_id
14  client_id = azuread_application.mondoo_security.client_id
15  scan_vms  = true
16  # subscription_allow_list= ["ffffffff-ffff-ffff-ffff-ffffffffffff", "ffffffff-ffff-ffff-ffff-ffffffffffff"]
17  # subscription_deny_list = ["ffffffff-ffff-ffff-ffff-ffffffffffff", "ffffffff-ffff-ffff-ffff-ffffffffffff"]
18  credentials = {
19    pem_file = join("\n", [tls_self_signed_cert.credential.cert_pem, tls_private_key.credential.private_key_pem])
20  }
21  # wait for the permissions to provisioned
22  depends_on = [
23    mondoo_space.azure_space,
24    azuread_application.mondoo_security,
25    azuread_service_principal.mondoo_security,
26    azurerm_role_assignment.mondoo_security,
27    azurerm_role_assignment.reader,
28  ]
29}
1# https://registry.terraform.io/modules/qbeyond/subscription-tags/azapi/2.0.1
2module "subscription_tags" {
3  source  = "qbeyond/subscription-tags/azapi"
4  version = "2.0.1"
5  subscription_id = var.primary_subscription
6  tags = {
7    "shouldRun" = "True"
8  }
9}
  • Leider ist es auch nicht möglich, Tags für eine bestehende AWS Ressource über die Terraform Ressource aws_organizations_account zu bearbeiten. Zu beachten ist, dass es im Gegensatz zum Azure Tagging Anwendungsfall derzeit keine andere Möglichkeit gibt, Tags für das AWS Organisations Management Konto, welches für die Mondoo Integration verwendet wird, separat zu verwalten. Als Übergangslösung haben wir die Möglichkeit, entweder das Tagging des Kontos in einem anderen Terraform Verzeichnis und einer anderen Datei zu verwalten oder die Ressource manuell aus dem Status zu entfernen. Um ein Tag zu erstellen, verwenden wir das Feld default_tag, um Tags für sämtliche AWS Ressourcen festzulegen.
 1variable "mondoo_org" {
 2  description = "Mondoo Organisation"
 3  type        = string
 4  default     = "my-org-123456789"
 5}
 6variable "aws_access_key" {
 7  description = "AWS access key"
 8  type        = string
 9}
10variable "aws_secret_key" {
11  description = "AWS access key"
12  type        = string
13}
14provider "mondoo" {
15  region = "eu"
16}
17# Create a new space
18resource "mondoo_space" "my_space" {
19  name   = "AWS Terraform"
20  org_id = var.mondoo_org
21}
22# Setup the AWS integration
23resource "mondoo_integration_aws" "name" {
24  space_id = mondoo_space.my_space.id
25  name     = "AWS Integration"
26  credentials = {
27    key = {
28      access_key = var.aws_access_key
29      secret_key = var.aws_secret_key
30    }
31  }
32}
 1provider "aws" {
 2  region = "eu-central-1"
 3  default_tags {
 4    tags = {
 5      shouldRun = "True"
 6    }
 7  }
 8}
 9# Add a tag to the existing aws_organizations_account
10import {
11  to = aws_organizations_account.account
12  id = "1234567890"
13}
14resource "aws_organizations_account" "account" {
15  name  = "My Account"
16  email = "myaccount@mail.com"
17  lifecycle {
18    prevent_destroy = true
19  }
20}

Durch den Einsatz des Brownfield-Ansatzes können wir sicherstellen, dass die vorhandenen Ressourcen unter einheitliche Verwaltungs- und Kennzeichnungspraktiken gestellt werden, was für die Aufrechterhaltung der Kontrolle und Transparenz in der Cloud Umgebung unerlässlich ist. Um mehr darüber zu erfahren, wie man Mondoo und Terraform gemeinsam nutzen kann, empfiehlt sich unser Blogpost über die Integration von Mondoo mit Terraform.

Benutzerdefinierte Policies

Mondoo Policies sind Spezifikationen, die beim Scannen eines Systems verwendet werden. Sie sind im Wesentlichen Checklisten, die sicherstellen, dass ein System mit Sicherheits- und anderen Best Practices konform ist. Diese Policies werden in Form von gut lesbarem Code ausgedrückt, der in der Mondoo Query Language (MQL) geschrieben wird, oder durch die Verwendung vordefinierter Policies, die von Mondoo bereitgestellt werden.

Schreiben eigener Abfragen

Indem wir unsere eigene MQL Abfrage schreiben, um nach Tags eines bestimmten Assets oder einer Ressource zu suchen, und sie in eine eigenständige Policy verpacken, können wir eine gegebene Ressource daraufhin testen, ob sie die Schlüssel und Werte der gewünschten Tags enthält. Der Test kann entweder erfolgreich sein oder fehlschlagen und signalisiert uns, ob eine Ressource noch aktuell und richtig kategorisiert ist. Dieser automatisierte Überprüfungsprozess stellt sicher, dass alle Ressourcen die von der Organisation festgelegten Tagging-Konventionen einhalten.

Wie können wir das tun?

Schauen wir uns die obigen Beispiele an und implementieren MQL Abfragen für die Azure- und AWS-Assets. Die Abfragen können auf die jeweiligen Anforderungen zugeschnitten werden. In diesem Beispiel testen wir, ob ein bestimmtes Tag vorhanden ist und den richtigen Wert hat.

  • Für Azure lautet die MQL Abfrage für das im Mondoo Asset verwendete Abonnement wie folgt:
azure.subscription.tags.contains('TAGNAME') && azure.subscription.tags["TAGNAME"] == "TAGVALUE"
  • Die für das Mondoo Asset verwendete AWS Konto Abfrage lautet wie folgt:
aws.account.tags.contains('TAGNAME') && aws.account.tags["TAGNAME"] == "TAGVALUE"

Diese benutzerdefinierten Abfragen sind nicht auf die Asset-Typen der Integration beschränkt, sondern können angepasst werden, um jede Ressource innerhalb dieser Konten/Abonnements/Assets zu scannen. MQL-Referenz | Mondoo Docs

Um die eigentliche Mondoo Policy zu schreiben, können wir dieser Struktur folgen:

 1policies:
 2  - uid: check-for-tags-XY
 3    name: Check for Tag XY
 4    version: 1.0.0
 5    scoring_system: highest impact
 6    authors:
 7      - name: Your Name
 8        email: your@main.com
 9    docs:
10      desc: |-
11        Ensure that resources have the required tag. If a resource is missing a tag, the check will fail.        
12    groups:
13        title: Identity and Access Management
14        filters: |
15          asset.platform == "<PROVIDER_PLATFORM>" # e.g. "azure", "aws"
16          asset.kind == "api"          
17        checks:
18          - uid: check-for-tag-mql-X
19queries:
20  - uid: check-for-tag-mql-X
21    title: Resource Tagging
22    impact: 100
23    mql: |
24      <YOUR_MQL_QUERY>      

Zu beachten ist, dass die Datei für die Konfiguration von benutzerdefinierten Policies vom Typ .mql.yaml sein muss.

Anwendung der Policies

Sobald die Policy-Datei erstellt wurde, kann sie zur Aktivierung in Mondoo hochgeladen werden. Dies kann entweder über das Dashboard oder über Terraform erfolgen.

Dashboard

  • Auf der Registerkarte Registry des Mondoo Spaces fügen wir eine neue Policy hinzu und ziehen unsere Policy-Datei einfach hinein.

Policy Upload

  • Nach dem Hochladen können wir die Policies aktivieren, indem wir nach ihr suchen und sie für unseren Mondoo Space aktivieren.

Policy Aktivierung

Terraform

  • Um Policies über Terraform hochzuladen und zu aktivieren, können wir Mondoo's mondoo_custom_policy und mondoo_policy_assignment Ressourcen verwenden:
 1variable "my_custom_policy" {
 2  description = "Path to the custom policy file. The file must be in MQL format."
 3  type        = string
 4  default     = "policy.mql.yaml"
 5}
 6
 7resource "mondoo_custom_policy" "my_policy" {
 8  space_id  = mondoo_space.my_space.id
 9  source    = var.my_custom_policy
10  overwrite = true
11}
12
13resource "mondoo_policy_assignment" "space" {
14  space_id = mondoo_space.my_space.id
15
16  policies = concat(
17    mondoo_custom_policy.my_policy.mrns,
18    [],
19  )
20
21  state = "enabled"
22
23  depends_on = [
24    mondoo_space.my_space
25  ]
26}

Wenn ein neuer Scan ausgelöst wird, sollte die Policy im entsprechenden Asset-Eintrag erscheinen. Wir sind nun in der Lage, unsere Assets mit Hilfe von Mondoo Tags zu verwalten. Wenn einem Asset ein bestimmtes Tag fehlt, können wir es sofort in den Scanergebnissen identifizieren. Die Policy kennzeichnet jenes Asset und resultiert in einer schlechten Bewertung, die auf die Nichteinhaltung hinweist.

Wenn wir zum Beispiel eine Richtlinie haben, die nach einem bestimmten Tag auf einer AWS EC2-Instanz sucht, und der Instanz fehlt dieses Tag, wird die Richtlinie diese Nichteinhaltung kennzeichnen und eine schlechte Bewertung vergeben. Zusätzlich können Benachrichtigungen für das Verändern von Asset Ergebnissen aktiviert werden. Dieses unmittelbare Feedback ermöglicht es den Administratoren, Tagging Probleme schnell zu erkennen und zu beheben, um sicherzustellen, dass alle Assets den Unternehmensstandards entsprechen.

Schlechte Ergebnisse der Policy

Durch die Ergreifung von Korrekturmaßnahmen, wie z. B. die Aktualisierung der Kennzeichnung eines Assets oder das Entfernen der gekennzeichneten Ressource, um die erforderlichen Kriterien zu erfüllen, stellen wir sicher, dass alle Assets ordnungsgemäß gekennzeichnet sind und den Unternehmensstandards entsprechen und verbessern so die gesamte Assetverwaltung und Governance.

Gute Ergebnisse der Policy

Für weitere Informationen zu benutzerdefinierten Policies empfehlen wir unseren Blogpost über das Schreiben benutzerdefinierter Richtlinien für Mondoo.

Fazit

Zusammenfassend lässt sich sagen, dass das Management von Cloud Kosten und die Sicherstellung der Compliance in dynamischen Umgebungen eine komplexe Herausforderung darstellt. Die Sicherheits- und Complianceplattform von Mondoo, kombiniert mit strategischem Ressourcen-Tagging und benutzerdefinierten Abfragen, verbessert die Transparenz, Kontrolle und Effizienz erheblich. Das Tagging von Ressourcen ermöglicht eine systematische Kategorisierung und Nachverfolgung, während benutzerdefinierte Mondoo Policies die Einhaltung von Unternehmensstandards sicherstellen. Durch die Integration dieser Verfahren können Unternehmen Compliance Prüfungen automatisieren, Compliance Probleme umgehend angehen und eine robuste Governance für ihre Cloud Infrastruktur aufrechterhalten. Dieser ganzheitliche Ansatz kann letztlich zu einer verbesserten betrieblichen Effizienz und einem besseren Kostenmanagement beitragen.

Zurück Unsere Trainings entdecken

Wir sind für Sie da

Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.

Hier kontaktieren