DevOps und Cloud-Reifegradmodelle verstehen: Ein Leitfaden zur Verbesserung Ihrer IT-Strategie
Im heutigen schnelllebigen Technologiebereich sind DevOps- und Cloud-Praktiken entscheidend, um die Software-Bereitstellung zu beschleunigen und
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.
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.
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.
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.
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.
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}
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.
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.
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.
azure.subscription.tags.contains('TAGNAME') && azure.subscription.tags["TAGNAME"] == "TAGVALUE"
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.
Sobald die Policy-Datei erstellt wurde, kann sie zur Aktivierung in Mondoo hochgeladen werden. Dies kann entweder über das Dashboard oder über Terraform erfolgen.
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.
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.
Für weitere Informationen zu benutzerdefinierten Policies empfehlen wir unseren Blogpost über das Schreiben benutzerdefinierter Richtlinien für Mondoo.
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.
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