Einführung in OpenStack

Dieser Leitfaden bietet Einblicke in die Sicherheit von OpenStack Installationen. Das Zielpublikum sind Cloud-Architekten, Deployer und Administratoren. Darüber hinaus finden Cloud-Nutzer den Leitfaden sowohl pädagogisch als auch hilfreich bei der Anbieterauswahl, während die Auditoren es als Referenzdokument als nützlich erachten werden, um ihre Compliance-Zertifizierungsbemühungen zu unterstützen. Dieser Leitfaden wird auch für alle, die sich für Cloud-Sicherheit interessieren, empfohlen.

Jede OpenStack-Implementierung umfasst eine Vielzahl von Technologien, die sich über Linux-Distributionen, Datenbanksysteme, Messaging-Warteschlangen, OpenStack-Komponenten selbst, Zugriffskontrollrichtlinien, Protokollierungsdienste, Sicherheitsüberwachungsinstrumente und vieles mehr erstrecken. Es sollte nicht überraschen, dass die Sicherheitsfragen gleichermaßen unterschiedlich sind, und ihre eingehende Analyse würde mehrere Guides erfordern. Wir sind bestrebt, ein Gleichgewicht zu finden, das genügend Kontext bietet, um OpenStack Sicherheitsprobleme und deren Handhabung zu verstehen und externe Referenzen für weitere Informationen zur Verfügung zu stellen. Der Leidfaden kann von Anfang bis Ende gelesen werden, oder auszugsweise wie eine Referenz.

Wir stellen kurz die Arten von Clouds vor (privat, öffentlich und hybrid), bevor wir im weiteren Verlauf des Kapitels einen Überblick über die OpenStack-Komponenten und die damit verbundenen Sicherheitsbedenken geben.

Während des Buches verweisen wir auf verschiedene Arten von OpenStack-Cloud-Nutzern: administrator, operator und :term: user. Wir verwenden diese Begriffe, um das Niveau des Sicherheitszugriffs zu identifizieren, den jede Rolle hat, obwohl wir in Wirklichkeit verstehen, dass unterschiedliche Rollen oft von derselben Person gehalten werden.

Cloud-Typen

OpenStack ist ein wichtiger Enabler bei der Einführung von Cloud-Technologie und hat mehrere verbreitete Anwendungsfälle. Diese sind allgemein bekannt als Public, Private und Hybrid Modelle. Die folgenden Abschnitte verwenden das Nationale Institut für Normen und Technologie (NIST) ` Definition von Cloud <http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf>`__, um diese verschiedenen Arten von Cloud vorzustellen, wie sie für OpenStack gelten.

Public Cloud

Nach NIST ist eine public Cloud eine, in der die Infrastruktur für die Öffentlichkeit für den Konsum offen ist. OpenStack Public Clouds werden in der Regel von einem service provider betrieben und können von Einzelpersonen, Unternehmen oder einem zahlenden Kunden verbraucht werden. Ein öffentlicher Cloud-Provider kann neben mehreren Instanztypen einen vollständigen Satz von Features wie Software-definierten Netzwerken, Blockspeicher, anbieten.

Öffentliche Clouds sind naturgemäß einem höheren Risiko ausgesetzt. Als Nutzer einer öffentlichen Cloud sollten Sie sicherstellen, dass Ihr ausgewählter Anbieter über die erforderlichen Zertifizierungen, Bescheinigungen und sonstigen behördlichen Erwägungen verfügt. Als öffentlicher Cloud-Anbieter unterliegen Sie abhängig von Ihren Zielkunden möglicherweise einer oder mehreren Bestimmungen. Darüber hinaus sollte ein Anbieter, auch wenn er nicht verpflichtet ist, die gesetzlichen Anforderungen zu erfüllen, die Isolierung der Mandanten sicherstellen und die Verwaltungsinfrastruktur vor Angriffen von außen schützen.

Private Cloud

Am anderen Ende des Spektrums befindet sich die Private Cloud. Wie NIST es definiert, wird eine private Cloud für die ausschließliche Verwendung durch eine einzelne Organisation bereitgestellt, die mehrere Konsumenten umfasst, beispielsweise Geschäftseinheiten. Die Cloud kann Eigentum der Organisation, eines Drittanbieters oder einer Kombination von ihnen sein, von ihr verwaltet und betrieben werden und in oder außerhalb der Geschäftsräume bestehen. Private-Cloud-Anwendungsfälle sind vielfältig und daher variieren ihre individuellen Sicherheitsbedenken.

Community cloud

NIST definiert eine Community-Cloud als eine Community, deren Infrastruktur für die ausschließliche Verwendung durch eine bestimmte Community von Kunden aus Organisationen bereitgestellt wird, die Bedenken geteilt haben (z. B. Mission, Sicherheitsanforderungen, Richtlinien oder Compliance-Überlegungen). Die Cloud kann im Besitz von einer oder mehreren Organisationen in der Community, einem Drittanbieter oder einer Kombination von ihnen sein, von ihnen verwaltet und betrieben werden, und sie kann in oder außerhalb von Geschäftsräumen existieren.

Hybrid Cloud

Eine Hybrid-Cloud wird von NIST als Komposition von zwei oder mehr verschiedenen Cloud-Infrastrukturen definiert, wie z.B. Private, Community oder Public, die eindeutige Entitäten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportabilität ermöglicht Cloud Bursting für Lastausgleich zwischen Clouds. Zum Beispiel kann ein Online-Händler seine Werbung und Katalog auf einer öffentlichen Cloud präsentieren, die eine elastische Bereitstellung ermöglicht. Dies würde es ihm ermöglichen, saisonale Lasten in einer flexiblen, kostengünstigen Weise zu behandeln. Sobald ein Kunde beginnt, seine Bestellung zu verarbeiten, werden sie auf das sicherere private Cloud-Backend übertragen, das PCI-konform ist.

Für die Zwecke dieses Dokuments behandeln wir Community und Hybrid in ähnlicher Weise und handeln explizit nur mit den Extremen der öffentlichen und privaten Cloudn aus einer Perspektive der Sicherheit. Ihre Sicherheitsmaßnahmen hängen davon ab, wo Ihr Einsatz auf das private öffentliche Kontinuum fällt.

OpenStack Service-Übersicht

OpenStack umfasst eine modulare Architektur, um eine Reihe von Kerndiensten bereitzustellen, die Skalierbarkeit und Elastizität als Kerndesign-Lehren erleichtern. In diesem Kapitel werden die OpenStack-Komponenten, ihre Anwendungsfälle und Sicherheitsüberlegungen kurz beschrieben.

../_images/marketecture-diagram.png

Compute

OpenStack Compute service (nova) bietet Dienste zur Unterstützung der Verwaltung von virtuellen Maschineninstanzen im Wachstum, Instanzen, die mehrstufige Anwendungen, dev/Testumgebungen, „Big Data“ fressende Hadoop-Cluster und/oder high performance computing.

Der Compute-Dienst erleichtert diese Verwaltung durch eine Abstraktionsschicht, die mit unterstützten Hypervisoren verbunden ist (wir behandeln dies später ausführlicher).

Später im Leitfaden konzentrieren wir uns generisch auf den Virtualisierungsstapel, wie er sich auf Hypervisoren bezieht.

Informationen über den aktuellen Status der Feature-Unterstützung finden Sie unter OpenStack Hypervisor Support Matrix.

Die Sicherheit von Compute ist für eine OpenStack-Implementierung entscheidend. Härtungstechniken sollten Unterstützung für eine starke Instanzisolation, eine sichere Kommunikation zwischen Compute-Subkomponenten und eine Resilienz von öffentlich zugänglichen API-Endpunkten beinhalten.

Objektspeicher

Der OpenStack Object Storage service (swift) bietet Unterstützung für das Speichern und Abrufen von beliebigen Daten in der Cloud. Der Object Storage Service bietet sowohl eine native API als auch eine Amazon Web Services S3 kompatible API. Der Service bietet ein hohes Maß an Resilienz durch Datenreplikation und kann mit Petabyte Daten verarbeiten.

Es ist wichtig zu verstehen, dass die Objektspeicherung vom traditionellen Dateisystemspeicher abweicht. Es wird am besten für statische Daten wie Mediendateien (MP3s, Bilder, Videos), virtuelle Maschinenabbilder und Backup-Dateien verwendet.

Objektsicherheit sollte sich auf die Zugriffskontrolle und die Verschlüsselung von Daten im Transit und in Ruhe konzentrieren. Andere Bedenken können sich auf Systemmissbrauch, illegale oder böswillige Inhalte speichern und Cross-Authentifizierungs-Angriffsvektoren kreuzen.

Blockspeicher

Der OpenStack :term: Block Storage Service (Cinder)` bietet einen permanenten Blockspeicher für Compute Instances. Der Block Storage Service ist verantwortlich für die Verwaltung des Lebenszyklus von Blockgeräten, von der Erstellung und Anbindung von Volumes an Instanzen bis hin zur Freigabe.

Sicherheitsüberlegungen für Blockspeicher ähneln denen des Objektspeichers.

Gemeinsame Dateisysteme

Der :term:` Shared File Systems Service (Manila)` bietet eine Reihe von Diensten für das Management von gemeinsam genutzten Dateisystemen in einer Multi-Tenant-Cloud-Umgebung, ähnlich wie OpenStack für das blockbasierte Storage-Management über das OpenStack Block Storage Service-Projekt sorgt . Mit dem Dienst Shared File Systems können Sie ein Remote-Dateisystem erstellen, das Dateisystem auf Ihren Instanzen installieren und dann Daten von Ihren Instanzen zu und von Ihrem Dateisystem lesen und schreiben kann.

Vernetzung

Der OpenStack Networking service (Neutron, früher Quantum genannt) bietet Cloud-Nutzern (Tenants) verschiedeneNetzwerkdienste wie IP-Adressverwaltung, DNS, DHCP, Load Balancing und Sicherheitsgruppen (Netzwerkzugriffsregeln wie Firewall-Richtlinien).Es bietet einen Rahmen für Software-definierte Vernetzung (SDN), die eine steckbare Integration mit verschiedenen Netzwerklösungen ermöglicht.

OpenStack Networking ermöglicht es Cloud-Tenants, ihre Gast-Netzwerk-Konfigurationen zu verwalten. Um die Sicherheit kümmert sich der Netzwerk-Service incl. Netzwerkverkehr Isolation, Verfügbarkeit, Integrität und Vertraulichkeit.

Dashboard

Der OpenStack :term:Dashboard (Horizon) bietet eine webbasierte Schnittstelle für Cloud-Administratoren und Cloud-Tenants. Durch diese Schnittstelle können Administratoren und Tenants Cloud-Ressourcen bereitstellen, verwalten und überwachen. Das Dashboard Horizon wird häufig in einer öffentlich gemachten Weise mit allen üblichen Sicherheitsrisiko von öffentlichen Webportalen eingesetzt.

Identity service

Der OpenStack Identity Service (Keystone) ist ein Shared Service, der Authentifizierungs- und Autorisierungsdienste über die gesamte Cloud-Infrastruktur bereitstellt. Der Identity-Service verfügt über eine Plug-and-Unterstützung für mehrere Authentifizierungsformen.

Sicherheitsbedenken mit dem Identity-Dienst umfassen das Vertrauen in die Authentifizierung, die Verwaltung von Autorisierungstoken und die sichere Kommunikation.

Image service

Der OpenStack Abbilddienst (glance) stellt Verwaltungsdienste für Festplattenabbilder zur Verfügung, incl. Abbilduntersuchung, Registrierung und Auslieferungsdienste durch den Compute-Dienst.

Vertrauenswürdige Prozesse zur Verwaltung des Lebenszyklus von Plattenabbildern sind erforderlich, ebenso wie alle oben erwähnten Probleme in Bezug auf Datensicherheit.

Data processing service

Der Data Processing service (sahara) bietet eine Plattform für die Bereitstellung, Verwaltung und Nutzung von Clustern, die populäre Verarbeitungs-Frameworks betreiben.

Sicherheitsüberlegungen für die Datenverarbeitung sollten sich auf den Datenschutz und die sichere Kommunikation mit versorgten Clustern konzentrieren.

Andere unterstützende Technologie

Nachrichten werden zur internen Kommunikation zwischen verschiedenen OpenStack-Diensten benutzt. Grundsätzlich benutzt OpenStack Nachrichten-Warteschlangen basierend auf AMQP. Wie die meisten OpenStack Dienste unterstützt AMQP steckbare Komponenten. Heute kann als Backend RabbitMQ, Qpid oder ZeroMQ implementiert werden.

Da die meisten Verwaltungsbefehle über das Nachrichtenwarteschlangensystem laufen, ist die Nachrichtenwarteschlangensicherheit ein primäres Sicherheitsproblem für jede OpenStack-Bereitstellung und wird später in diesem Handbuch ausführlich behandelt.

Einige Komponenten verwenden Datenbanken, obwohl sie nicht explizit aufgerufen werden. Die Sicherung des Datenbankzugriffs ist ein weiteres Sicherheitsrisiko und wird daher später in diesem Handbuch ausführlicher erläutert.