Cross-Origin Resource Sharing (CORS) für ONTAP S3 Buckets konfigurieren
Ab ONTAP 9.16.1 ist es möglich, Cross-Origin Resource Sharing (CORS) zu konfigurieren, sodass Client-Webanwendungen aus verschiedenen Domänen auf Ihre ONTAP Buckets zugreifen können. Dadurch wird ein sicherer Zugriff auf die Bucket-Objekte über einen Webbrowser ermöglicht.
CORS ist ein auf HTTP basierendes Framework, das es Skripten auf einer Webseite ermöglicht, auf Ressourcen eines Servers in einer anderen Domain zuzugreifen. Das Framework wird verwendet, um die Same-Origin-Policy sicher zu umgehen, die eine frühe Grundlage der Websicherheit bildet. Die wichtigsten Konzepte und die Terminologie werden nachfolgend beschrieben.
Der Ursprung definiert präzise den Ort und die Identität einer Ressource. Er wird als Kombination der folgenden Werte dargestellt:
-
URI-Schema (Protokoll)
-
Hostname (Domänenname oder IP-Adresse)
-
Portnummer
Hier ist ein einfaches Beispiel für einen Ursprung: https://www.mycompany.com:8001. Wenn ein Ursprung mit CORS verwendet wird, identifiziert er den Client, der die Anfrage stellt.
Die Same-Origin-Policy (SOP) ist ein Sicherheitskonzept und eine Beschränkung für browserbasierte Skripte. Die Richtlinie erlaubt Skripten, die ursprünglich von einer Webseite geladen wurden, auf Daten einer anderen Seite zuzugreifen, sofern beide Seiten denselben Ursprung haben. Diese Einschränkung verhindert, dass schädliche Skripte auf Daten von Seiten mit anderem Ursprung zugreifen.
CORS hat mehrere allgemeine Anwendungsfälle. Die meisten betreffen klar definierte Fälle von domänenübergreifendem Zugriff, wie AJAX-Anfragen, das Laden von Schriftarten, Stylesheets und Skripten sowie die domänenübergreifende Authentifizierung. CORS kann auch als Teil einer Single-Page-Anwendung (SPA) implementiert werden.
CORS wird mithilfe von Headern implementiert, die in die HTTP-Anfragen und -Antworten eingefügt werden. Beispielsweise gibt es mehrere Antwort-Header, die eine Zugriffskontrolle implementieren und angeben, welche Operationen, einschließlich Methoden und Header, zulässig sind. Das Vorhandensein des Origin-Headers in einer HTTP-Anfrage definiert diese als domänenübergreifende Anfrage. Der Origin-Wert wird vom CORS-Server verwendet, um eine gültige CORS-Konfiguration zu finden.
Dies ist eine optionale Anfrage, um zunächst zu prüfen, ob ein Server CORS unterstützt, einschließlich der spezifischen Methoden und Header. Basierend auf der Antwort kann die CORS-Anfrage abgeschlossen oder nicht abgeschlossen werden.
Ein Bucket ist ein Container für Objekte, die anhand eines klar definierten Namensraums gespeichert und abgerufen werden. Es gibt zwei Arten von ONTAP Buckets:
-
NAS Buckets, die über die NAS- und S3-Protokolle zugänglich sind
-
S3 Buckets, die ausschließlich über das S3-Protokoll zugänglich sind
CORS-Implementierung in ONTAP
CORS ist in ONTAP 9.16.1 und späteren Versionen standardmäßig aktiviert. CORS muss auf jeder SVM konfiguriert werden, auf der es aktiv sein soll.
|
|
Es gibt keine administrative Option, CORS für einen ONTAP Cluster zu deaktivieren. Allerdings kann CORS effektiv deaktiviert werden, indem keine Regeln definiert oder alle vorhandenen Regeln gelöscht werden. |
Mögliche Anwendungsfälle
Die ONTAP CORS-Implementierung ermöglicht verschiedene Topologien für den domänenübergreifenden Ressourcenzugriff, darunter:
-
ONTAP S3 Buckets (innerhalb desselben oder eines anderen SVM oder Clusters)
-
ONTAP NAS Buckets (innerhalb derselben oder verschiedener SVM oder Cluster)
-
ONTAP S3 und NAS Buckets (innerhalb derselben oder verschiedener SVM oder Cluster)
-
ONTAP Buckets und Buckets externer Anbieter
-
Buckets in verschiedenen Zeitzonen
Überblick
Nachfolgend wird auf hoher Ebene veranschaulicht, wie CORS den Zugriff auf die ONTAP S3 Buckets ermöglicht.

Definition von CORS-Regeln
CORS-Regeln müssen in ONTAP definiert werden, um die Funktion zu aktivieren und zu nutzen.
Konfigurationsaktionen
In ONTAP werden drei primäre Konfigurationsregel-Aktionen unterstützt:
-
Zeigen
-
Erstellen
-
Löschen
Eine in ONTAP definierte CORS-Regel besitzt mehrere Eigenschaften, darunter die SVM und den Bucket sowie die zulässigen Ursprünge, Methoden und Header.
Verwaltungsoptionen
Bei der Administration von CORS in Ihrem ONTAP Cluster stehen mehrere Optionen zur Verfügung.
CORS kann über die Befehlszeile konfiguriert werden. Siehe CORS-Verwaltung mit der CLI für weitere Informationen.
Sie können CORS über die ONTAP REST API konfigurieren. Es wurden keine neuen Endpunkte zur Unterstützung der CORS-Funktion hinzugefügt. Stattdessen kann der folgende vorhandene Endpunkt verwendet werden:
/api/protocols/s3/services/{svm.uuid}/buckets/{bucket.uuid}
Weitere Informationen finden Sie im "ONTAP Automatisierungsdokumentation".
Sie können die S3-API verwenden, um eine CORS-Konfiguration auf einem ONTAP Bucket zu erstellen und zu löschen. Ein S3-Clientadministrator benötigt ausreichende Berechtigungen, darunter:
-
Zugangs- oder geheime Schlüssel-Anmeldeinformationen
-
Für den Bucket wurde eine Richtlinie konfiguriert, die den Zugriff über s3api ermöglicht.
Aktualisierung und Zurücksetzung
Wenn Sie CORS für den Zugriff auf die ONTAP S3 Buckets verwenden möchten, sollten Sie sich einiger administrativer Aspekte bewusst sein.
Die CORS-Funktion wird unterstützt, wenn alle Knoten auf 9.16.1 aktualisiert wurden. In Clustern im gemischten Modus ist die Funktion nur verfügbar, wenn die effektive Clusterversion (ECV) 9.16.1 oder höher ist.
Aus Benutzersicht müssen alle CORS-Konfigurationen entfernt werden, bevor die Clusterwiederherstellung durchgeführt werden kann. Intern werden dabei alle CORS-Datenbanken gelöscht. Es erfolgt eine Aufforderung, einen Befehl auszuführen, um diese Datenstrukturen zu löschen und zurückzusetzen.
CORS-Verwaltung mit der CLI
Die ONTAP CLI kann zur Verwaltung von CORS-Regeln verwendet werden. Die wichtigsten Vorgänge sind nachfolgend beschrieben. Für die Ausführung der CORS-Befehle ist die ONTAP admin-Berechtigungsstufe erforderlich.
Erstellen
Eine CORS-Regel kann mit dem vserver object-store-server bucket cors-rule create Befehl definiert werden. Weitere Informationen zu vserver object-store-server bucket cors-rule create finden sich in der "ONTAP-Befehlsreferenz".
Die zur Erstellung einer Regel verwendeten Parameter sind nachfolgend beschrieben.
| Parameter | Beschreibung |
|---|---|
|
Gibt den Namen der SVM (vserver) an, die den Objektspeicher Server-Bucket hostet, in dem die Regel erstellt wird. |
|
Der Name des Buckets auf dem Objektspeicher-Server, für den die Regel erstellt wurde. |
|
Ein optionaler Parameter, der den Index des Objektspeicher-Server-Buckets angibt, in dem die Regel erstellt wird. |
|
Eine eindeutige Kennung für die Bucket-Regel des Objektspeicherservers. |
|
Eine Liste der Ursprünge, von denen Cross-Origin-Anfragen zulässig sind. |
|
Eine Liste der in einer ursprungsübergreifenden Anfrage zulässigen HTTP-Methoden. |
|
Eine Liste der in Cross-Origin-Anfragen zulässigen HTTP-Header. |
|
Eine Liste der zusätzlichen Header, die in den CORS-Antworten gesendet werden und auf die Kunden von ihren Anwendungen aus zugreifen können. |
|
Ein optionaler Parameter, der die Zeitdauer angibt, für die Ihr Browser eine Preflight-Antwort für eine bestimmte Ressource zwischenspeichern soll. |
vserver object-store-server bucket cors-rule create -vserver vs1 -bucket bucket1 -allowed-origins www.myexample.com -allowed-methods GET,DELETE
Zeigen
Sie können den Befehl vserver object-store-server bucket cors-rule show verwenden, um eine Liste der aktuellen Regeln und deren Inhalte anzuzeigen. Weitere Informationen zu vserver object-store-server bucket cors-rule show finden sich in der "ONTAP-Befehlsreferenz".
|
|
Durch die Einbeziehung des Parameters -instance werden die für jede Regel angezeigten Daten erweitert. Es kann außerdem festgelegt werden, welche Felder gewünscht sind.
|
server object-store-server bucket cors-rule show -instance
Löschen
Mit dem Befehl „delete“ kann eine Instanz einer CORS-Regel entfernt werden. Der index Wert der Regel wird benötigt, daher erfolgt dieser Vorgang in zwei Schritten:
-
Ein `show`Befehl gibt die Regel aus und ruft deren Index ab.
-
Der Löschvorgang wird anhand des Indexwerts ausgeführt.
vserver object-store-server bucket cors-rule delete -vserver vs1 -bucket bucket1 -index 1
Ändern
Es gibt keinen CLI-Befehl zum Ändern einer bestehenden CORS-Regel. Zum Ändern einer Regel sind die folgenden Schritte erforderlich:
-
Die bestehende Regel wird gelöscht.
-
Eine neue Regel mit den gewünschten Optionen erstellen.