Die API (RaaS) bezieht sich auf den Anwendungsserver, mit dem SaltStack Config-Clients eine Verbindung herstellen. Zu diesen Clients gehören die Benutzeroberflächenkomponente von SaltStack Config, ordnungsgemäß konfigurierte Master und andere Benutzer von RaaS. Der Anwendungsserver wird auch als eAPI-Server bezeichnet.
RaaS wird in Modulen (als „Ressourcen“ bezeichnet) und Funktionen (als „Methoden“ bezeichnet) verwaltet. Im API-Aufruf „test.echo(‘hello, world’)“ fungiert „test“ als Ressource und „echo()“ als Methode. Argumente können nach Position oder nach Schlüsselwort an Methoden übergeben werden.
Der Zugriff auf RaaS kann auf zwei Arten erfolgen: über einen RPC-Client und über eine HTTP- oder HTTPS-Bridge.
Zum Herstellen einer Verbindung mit RaaS legen Sie die folgenden Optionen in „client = APIClient()“ fest:
- server
- username
- Kennwort
- config_name=’internal’ Bei Verwendung von LDAP in den Namen des Authentifizierungs-Backends ändern
- timeout=60 # Es dauert mindestens 60 Sekunden, um einen beliebigen Vorgang durchzuführen
- ssl_key=None
- ssl_cert=None
- ssl_context=None
- ssl_validate_cert=True = Bei Verwendung selbstsignierter Zertifikate auf „False“ festlegen
Beispiel:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD', ssl_validate_cert=False)
In Versionen vor 6.2 wurde die API-Verbindung mithilfe der Funktion SyncClient.connect()
hergestellt, die weiterhin mit den Versionen 6.2 und höher kompatibel ist. Bei Verwendung von SyncClient.connect()
sind keine Änderungen erforderlich.
API-Syntax
client.api.<interface>.<method>(parameter=parameter_value)
Beispiel:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD') client.api.sec.download_content(auto_ingest=True)
Verwenden der API (RaaS) mit Curl
Sie können RaaS auch direkt mit HTTP und JSON verwenden. Es folgt ein Beispiel zur Verwendung der API mit curl
. Beachten Sie, dass Sie bei aktivierter xsrf-Funktion zuerst ein xsrf-Cookie und -Token abrufen müssen. Informationen zum Abrufen und Verwenden eines xsrf-Tokens und -Cookies finden Sie unter HTTP-Bridge. Bei Verwendung des Python-API-Clients wird dieser Vorgang standardmäßig automatisch durchgeführt.
Beispiel:
curl --user 'root:PASSWORD' --url 'https://localhost/rpc' \ --data '{ "resource": "sec", "method": "download_content", "kwarg": {"auto_ingest": true} }'
Lizenzierung
Auf der SaltStack Config-Benutzeroberfläche werden Benachrichtigungen mit der Warnung angezeigt, dass die Lizenz in Kürze abläuft. Als RaaS-Benutzer müssen Sie den Arbeitsbereich „Lizenz“ verwenden, um den Lizenzstatus zu verfolgen und sicherzustellen, dass er aktiv bleibt. Wenn Ihre Lizenz abläuft, wird der RaaS-Dienst beendet.
RPC-Client
Die programmgesteuerten RPC-Clients im Modul „sseapiclient“ arbeiten mit Python Version 2.7 und Python Version 3.5 oder höher zusammen. Die Clients stellen über HTTP oder HTTPS eine Verbindung zu SSE her und führen eine Authentifizierung durch. Die Verwendung des RPC-Clients gestaltet sich einfacher als die Verwendung der HTTP-Bridge.
HTTP-Bridge
Die HTTP- oder HTTPS-Bridge akzeptiert JSON-Nutzlasten, die an einen von SSE offengelegten Endpoint gesendet werden, übersetzt die Nutzlasten in RPC-Aufrufe und gibt das Ergebnis dann als JSON zurück. Der Endpunkt unterstützt cookiebasierte Authentifizierung, sodass Authentifizierungsanmeldedaten nur einmal pro Sitzung weitergegeben werden müssen. Die Bridge ermöglicht auch das Senden mehrerer Aufrufe in einer einzelnen Nutzlast.
Wenn xsrf in /etc/raas/raas.conf tornado_xsrf_cookies_enabled: True aktiviert ist (standardmäßig mit Statusinstallation), müssen Sie das X-Xsrftoken: im Header des REST-Aufrufs bereitstellen. Am besten speichern Sie ein Cookie mit einem GET-Aufruf und verwenden das Cookie dann, um das Header-Token zur Verfügung zu stellen. Dieses Cookie wird im Verzeichnis $HOME (Startseite der Benutzer) gespeichert. Die Nutzlast ist ein Wörterbuch.
Beispiel für einen CURL-Aufruf mit xsrf-Header:
curl -k -c $HOME/eAPICookie.txt -u root:PASSWORD 'https://localhost/account/login' >/dev/null curl -k -u root:PASSWORD -b $HOME/eAPICookie.txt \ -H 'X-Xsrftoken: '$(grep -w '_xsrf' $HOME/eAPICookie.txt | cut -f7)'' \ -X POST https://localhost/rpc \ -d '{ "resource": "sec", "method": "download_content", "kwarg": {"auto_ingest": true} }'
Im den Beispielen wird von Folgendem ausgegangen:
- client=APIClient(<addr>,<user>, <pwd>)
- Auf dem Standardzustand basierende Installation der eAPI
- SSL-aktiviert
- Import von sseapiclient. Beispiel:
from sseapiclient import APIClient