Konfiguration und Hardening

Es gibt mehrere Konfigurationsoptionen und Bereitstellungsstrategien, die die Sicherheit im Datenverarbeitungsdienst verbessern können. Der Service-Controller wird über eine Haupt-Konfigurationsdatei und eine oder mehrere Policy-Dateien konfiguriert. Installationen, die die Data-Locality-Funktionen verwenden, haben außerdem zwei zusätzliche Dateien, um den physischen Speicherort von Compute- und Object Storage-Knoten anzugeben.

TLS

Der Data Processing Service Controller, wie viele andere OpenStack Controller, kann so konfiguriert werden, dass er TLS Verbindungen benötigt.

Pre-Kilo-Releases benötigen einen TLS-Proxy, da der Controller keine direkten TLS-Verbindungen zulässt. Das Konfigurieren von TLS-Proxies ist abgedeckt in ../ secure-communication/tls-proxies-and-http-services, und wir empfehlen Ihnen bei der Anleitung, diese Art der Installation zu erstellen.

Vom Kilo-Release aus steuert der Datenverarbeitungscontroller direkte TLS-Verbindungen, die wir empfehlen. Das Aktivieren dieses Verhaltens erfordert einige kleine Anpassungen an die Controller-Konfigurationsdatei.

**Beispiel. Konfigurieren des TLS-Zugriffs auf den Controller **

[ssl]
ca_file = cafile.pem
cert_file = certfile.crt
key_file = keyfile.key

Rollenbasierte Zugriffskontrollrichtlinien

Der Datenverarbeitungsdienst verwendet eine Richtliniendatei, wie in ../ identity/policy beschrieben, um eine rollenbasierte Zugriffskontrolle zu konfigurieren. Mit der Richtliniendatei kann ein Bediener den Zugriff einer Gruppe auf bestimmte Datenverarbeitungsfunktionen beschränken.

Die Gründe dafür werden sich je nach den organisatorischen Anforderungen der Anlage ändern. Im Allgemeinen werden diese feinkörnigen Kontrollen in Situationen verwendet, in denen ein Bediener die Erstellung, Löschung und Abfrage der Datenverarbeitungsdienstressourcen einschränken muss. Betreiber, die den Zugang innerhalb eines Projekts einschränken müssen, sollten sich bewusst sein, dass es für die Benutzer alternative Mittel gibt, um Zugang zu der Kernfunktionalität des Dienstes zu erhalten (z. B. Bereitstellungscluster).

Beispiel. Alle Methoden für alle Benutzer zulassen (Standardrichtlinie)

{
    "default": ""
}

**Beispiel. Deaktivieren Sie Abbildregistrierungsmanipulationen an Nicht-Admin-Benutzer **

{
    "default": "",

    "data-processing:images:register": "role:admin",
    "data-processing:images:unregister": "role:admin",
    "data-processing:images:add_tags": "role:admin",
    "data-processing:images:remove_tags": "role:admin"
}

Sicherheitsgruppen

Der Datenverarbeitungsdienst ermöglicht die Zuordnung von Sicherheitsgruppen mit Instanzen, die für seine Cluster bereitgestellt werden. Ohne zusätzliche Konfiguration verwendet der Service die Standard-Sicherheitsgruppe für jedes Projekt, das Cluster enthält. Eine andere Sicherheitsgruppe kann auf Wunsch verwendet werden, oder es erfolgt eine automatisierte Option, die den Dienst anweist, eine Sicherheitsgruppe zu erstellen, die auf Ports basiert, die von dem Framework angegeben werden, auf das zugegriffen wird.

Für Produktionsumgebungen empfehlen wir, die Sicherheitsgruppen manuell zu steuern und einen Satz von Gruppenregeln zu erstellen, die für die Installation geeignet sind. Auf diese Weise kann der Betreiber sicherstellen, dass die Standard-Sicherheitsgruppe alle entsprechenden Regeln enthält. Für eine erweiterte Diskussion über Sicherheitsgruppen siehe Sicherheitsgruppen.

Proxy-Domänen

Bei der Verwendung des Objektspeicherdienstes in Verbindung mit der Datenverarbeitung ist es notwendig, Anmeldeinformationen für den Speicherzugriff hinzuzufügen. Bei Proxy-Domains kann der Datenverarbeitungsdienst stattdessen eine delegierte Vertrauensstellung aus dem Identity-Dienst verwenden, um den Speicherzugriff über einen in der Domäne erstellten temporären Benutzer zu ermöglichen. Für diesen Delegierungsmechanismus muss der Datenverarbeitungsdienst konfiguriert sein, um Proxydomänen zu verwenden, und der Operator muss eine Identitätsdomäne für die Proxybenutzer konfigurieren.

Der Datenverarbeitungscontroller behält die temporäre Speicherung des Benutzernamens und des Kennworts für den Objektspeicherzugriff vor. Bei der Verwendung von Proxy-Domains wird der Controller dieses Paar für den Proxy-Benutzer generieren, und der Zugriff dieses Benutzers wird auf den Identitätsvertrauen beschränkt. Wir empfehlen die Verwendung von Proxy-Domains in jeder Installation, in der der Controller oder seine Datenbank Routen zu oder von öffentlichen Netzwerken hat.

**Beispiel. Konfigurieren für eine Proxy-Domäne mit dem Namen „dp_proxy“ **

[DEFAULT]
use_domain_for_proxy_users = true
proxy_user_domain_name = dp_proxy
proxy_user_role_names = Member

Benutzerdefinierte Netzwerk-Topologien

Der Datenverarbeitungscontroller kann so konfiguriert werden, dass er Proxy-Befehle für den Zugriff auf seine Cluster-Instanzen verwendet. Auf diese Weise können benutzerdefinierte Netzwerk-Topologien für Installationen erstellt werden, die die direkt vom Networking-Dienst bereitgestellten Netzwerke nicht nutzen. Wir empfehlen, diese Option für Installationen zu verwenden, die einen eingeschränkten Zugriff zwischen dem Controller und den Instanzen erfordern.

**Beispiel. Zugriffsinstanzen über eine spezifizierte Relaismaschine **

[DEFAULT]
proxy_command='ssh relay-machine-{tenant_id} nc {host} {port}'

**Beispiel. Zugriff auf Instanzen über einen benutzerdefinierten Netzwerk-Namespace **

[DEFAULT]
proxy_command='ip netns exec ns_for_{network_id} nc {host} {port}'

Indirekter Zugang

Für Installationen, in denen der Controller Zugriff auf alle Instanzen eines Clusters hat, aufgrund von Einschränkungen für Floating-IP-Adressen oder Sicherheitsregeln, kann indirekter Zugriff konfiguriert werden. Dies ermöglicht, dass einige Instanzen als Proxy-Gateways zu den anderen Instanzen des Clusters bezeichnet werden.

Diese Konfiguration kann nur aktiviert werden, während die Knotengruppenvorlagen definiert werden, die die Datenverarbeitungscluster bilden. Es wird als Laufzeitoption zur Verfügung gestellt, die während des Cluster-Bereitstellungsprozesses aktiviert werden kann.

Rootwrap

Beim Erstellen von benutzerdefinierten Topologien für den Netzwerkzugriff kann es notwendig sein, dass Nicht-Root-Benutzer die Möglichkeit haben, die Proxy-Befehle auszuführen. Für diese Situationen wird das oslo-Rootwrap-Paket verwendet, um eine Möglichkeit für Nicht-Root-Benutzer bereitzustellen, um privilegierte Befehle auszuführen. Diese Konfiguration erfordert, dass der Benutzer, der mit der Datenverarbeitungscontroller-Anwendung verknüpft ist, sich in der Sudoers-Liste befindet und die Option in der Konfigurationsdatei aktiviert werden soll. Optional kann ein alternativer Rootwrap-Befehl bereitgestellt werden.

Beispiel. Aktivieren der Rootwrap-Nutzung und Anzeigen des Standardbefehls

[DEFAULT]
use_rootwrap=True
rootwrap_command=’sudo sahara-rootwrap /etc/sahara/rootwrap.conf’

Weitere Informationen zum Rootwrap-Projekt finden Sie in der offiziellen Dokumentation: https://wiki.openstack.org/wiki/Rootwrap

Protokollierung

Die Überwachung des Ausgangssignals des Service-Controllers ist ein leistungsfähiges forensisches Werkzeug, wie ausführlicher beschrieben in Überwachung und Protokollierung. Der Data Processing Service Controller bietet einige Optionen für die Einstellung der Lage und der Ebene der Protokollierung.

Beispiel. Einstellen des Log-Pegels höher als Warnung und Angabe einer Ausgabedatei

[DEFAULT]
verbose = true
log_file = /var/log/data-processing.log

Literaturverzeichnis

OpenStack.org, Willkommen in Sahara!. 2016. Sahara- Projektdokumentation <https://docs.openstack.org/sahara/latest/>`__

Die Apache Software Foundation, Willkommen bei Apache Hadoop!. 2016. Apache Hadoop Projekt

Die Apache Software Foundation, Hadoop im sicheren Modus. 2016. Hadoop sichere Modus docs

Die Apache Software Foundation, HDFS Benutzerhandbuch. 2016. Hadoop HDFS Dokumentation

Die Apache Software Foundation, Spark. 2016. Spark-Projekt

Die Apache Software Foundation, Spark Security. 2016. Spark security Dokumentation

Die Apache Software Foundation, Apache Storm. 2016. „Sturmprojekt <https://storm.apache.org>`__

Die Apache Software Foundation, Apache Zookeeper. 2016. Zookeeper-Projekt

Die Apache Software Foundation, Apache Oozie Workflow Scheduler für Hadoop. 2016. Oozie-Projekt

Die Apache Software Foundation, Apache Hive. 2016. Hive

Die Apache Software Foundation, Willkommen bei Apache Pig. 2016. Pig

Die Apache Software Foundation, Cloudera Produktdokumentation. 2016. Cloudera CDH Dokumentation

Hortonworks, Hortonworks. 2016. Hortonworks Datenplattform Dokumentation

MapR Technologies, Apache Hadoop für die MapR Converged Data Platform. 2016. MapR-Projekt