- PagerDuty /
- Der Blog /
- Best Practices und Einblicke /
- Erstellen Sie anspruchsvolle Apps für Ihre PagerDuty Umgebung mit OAuth 2.0 und API-Bereichen
Der Blog
Erstellen Sie anspruchsvolle Apps für Ihre PagerDuty Umgebung mit OAuth 2.0 und API-Bereichen
Viele PagerDuty -Kunden erstellen eigene Apps, die ihnen bei der Verwaltung ihrer PagerDuty Umgebungen helfen. Teams haben möglicherweise eine beliebige Anzahl von Workflows, die von einer benutzerdefinierten Anwendung profitieren könnten. Ein PagerDuty -Administrator möchte möglicherweise CSV-Dateien mit neuen Benutzern und ihren Kontaktinformationen in PagerDuty laden können, wenn neue Teams der Plattform beitreten, oder neue Dienste laden, bevor sie in die Produktion freigegeben werden. Das Erstellen benutzerdefinierter Anwendungen für PagerDuty kann bei diesen Verwaltungsaufgaben hilfreich sein, wenn eine andere Komponente das System of Record für diese Daten ist.
Im Mai haben wir uns angesehen Aktualisieren benutzerdefinierter Tools für API-Bereiche vs. PagerDutys Original API-Schlüssel , und die Anwendung selbst verwendet, um die Token anzufordern (über einige Skripte), aber Entwickler können Benutzern auch erlauben, sich bei einer App anzumelden und sich gegenüber PagerDuty selbst zu authentifizieren, um zu steuern, welche Objekte verfügbar sein werden.
Angemeldete Benutzer haben nur Zugriff auf die Objekte, die sie auch über die Web-Benutzeroberfläche sehen können, und ihr Zugriff wird auch durch die Bereiche der von Ihnen erstellten Anwendung eingeschränkt. Die Kombination aus Berechtigungen und Bereichen bietet umfassende Kontrolle darüber, welche Benutzer welche Objekte sehen und ändern können, sei es über die Web-Benutzeroberfläche, die API oder benutzerdefinierte Apps.
Wir verwenden ein Beispielanwendung die unser Engineering-Team als Beispiel veröffentlicht hat.
Ein Teil des Workflows wird in der PagerDuty Benutzeroberfläche ausgeführt, ein Teil auf Ihrer Workstation. Um alle Schritte auszuführen, müssen Sie Administrator Ihres PagerDuty Kontos sein und Python-Apps auf Ihrer Workstation ausführen können.
Wir erstellen eine App als PagerDuty Administrator. Ein Teil des Workflows der App selbst besteht darin, den Benutzer aufzufordern, sich bei PagerDuty anzumelden. Die App ist dann nur berechtigt, auf Objekte zuzugreifen, auf die der angemeldete Benutzer zugreifen kann und die in den Bereichen für die App enthalten sind.
Registrieren einer Anwendung
Dieser Arbeitsablauf ähnelt dem, den wir im früheren Blogbeitrag gesehen haben, aber es gibt eine neue Funktion, die die Dinge einfacher macht!
Unsere Beispiel-App muss bei PagerDuty registriert werden, um Zugriff auf PagerDuty Objekte zu ermöglichen. Eine detaillierte Beschreibung des App-Registrierungsprozesses finden Sie im Entwickler-Dokumente .
Nur Kontoadministratoren können Anwendungen mit den Scoped OAuth 2.0-Funktionen erstellen. (Reguläre Benutzer können weiterhin ihre eigenen Anwendungen erstellen, aber die Funktionen sind beschränkt auf Klassisches Benutzer-OAuth .)
Öffnen Sie in Ihrem PagerDuty -Konto das Integrationen Menü oben auf dem Bildschirm und klicken Sie auf App-Registrierung im Entwicklerwerkzeuge Spalte. Fügen Sie mit der Schaltfläche rechts eine neue App hinzu oder aktualisieren Sie eine vorhandene App.
Geben Sie Ihrer App einen Namen und eine Beschreibung, wählen Sie „OAuth 2.0“ und klicken Sie dann auf „Weiter“:
Auf der nächsten Seite ist standardmäßig „Scoped OAuth“ ausgewählt; lassen Sie diese Option ausgewählt. Im nächsten Abschnitt möchten wir eine „Umleitungs-URL“ für unsere Beispiel-App hinzufügen. Im OAuth-Flow ist der Rückruf der Speicherort der Anwendung, die Ihre Benutzer verwenden, um auf PagerDuty Objekte zuzugreifen, und kann überall gehostet werden, wo Benutzer darauf zugreifen können. Er muss nicht öffentlich verfügbar oder für PagerDuty zugänglich sein.
Unsere Beispiel-App ist so konzipiert, dass sie standardmäßig lokal auf Ihrer Workstation ausgeführt wird. lokaler Host . Konfigurieren Sie Ihre Weiterleitungs-URL für http://localhost:5000/Rückruf . Beachten Sie, dass es keine https ! Dies ist nur eine Beispiel-App und nicht für die Produktion gedacht.
Wählen Sie als Nächstes die Objekte und den Zugriffstyp aus, die Sie für Ihre App ausprobieren möchten. Ich beginne mit Dienstleistungen aber mach es Lesezugriff nur:
Damit unsere Beispiel-App funktioniert, müssen Sie auch Lesezugriff für das Benutzerobjekt hinzufügen!! Von Ihnen erstellte Apps benötigen diesen Zugriff möglicherweise nicht! Sie können den Zugriff so weit oder eng konfigurieren, wie Sie ihn für die von Ihnen zu erledigenden Aufgaben benötigen. Wenn Sie nicht sicher sind, welche Bereiche für welche Objekte gelten, lesen Sie die API-Dokumentation .
Wenn Sie Ihre Bereiche ausgewählt haben, klicken Sie auf das App registrieren Schaltfläche unten auf dem Bildschirm.
Neue Funktion : Sie können jetzt eine json Datei mit Ihren Anmeldeinformationen! Sie haben dennoch nur eine Gelegenheit dazu. Sie erhalten eine json Datei mit Ihrem Kunden ID Und Client-Geheimnis darin. Wir benötigen diese, um unsere Beispiel-App zu konfigurieren, also klicken Sie auf JSON herunterladen und dann Weitermachen .
Verwenden einer Beispiel-App zum Abrufen eines neuen Benutzertokens
Sobald Sie Ihre App registriert haben und die Autorisierungs-JSON-Datei erhalten haben, können Sie die Kunden ID Und Client-Geheimnis um ein Token anzufordern. Dies ist ein zweistufiger Prozess: Rufen Sie einen Autorisierungscode ab und verwenden Sie diesen Code, um ein Token zu generieren. Autorisierungscodes sind nur 30 Sekunden lang gültig, daher sollten Sie beide Anfragen wahrscheinlich in dasselbe Tool oder Skript eingeben, auch wenn Sie keine vollständige Anwendung schreiben.
Sie können auch eines unserer Muster verwenden, zum Beispiel Python oder Javascript / Node.js .
Ich werde das Python-Beispiel mit ein paar Anpassungen verwenden. Es ist eine ziemlich einfache Flask-App, die die Autorisierungselemente verwendet, die wir beim Erstellen der PagerDuty -App erhalten haben, dem Benutzer einen Anmeldeautorisierungsbildschirm präsentiert, die Anfragen für mich stellt und mir das Token gibt, das ich für meine eigenen Anfragen in Skripten oder mit curl verwenden kann, ähnlich wie die Beispiele in unserem früherer Beitrag .
Herunterladen, Konfigurieren und Ausführen der Beispiel-App
Befolgen Sie die Anweisungen in der Beispiel-App README.md Datei, um Ihre App zu konfigurieren. Sie verwenden den Inhalt der JSON-Datei, die Sie von der Web-Benutzeroberfläche heruntergeladen haben – die Kunden ID Und Client-Geheimnis - im config.json Datei:
{
„PD_CLIENT_ID“: „xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx“,
„PD_CLIENT_SECRET“: „xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx“,
„REDIRECT_URI“: „http://localhost:5000/callback“
}
Sobald Ihr config.json Datei erstellt wurde, führen Sie die restlichen Schritte aus, um die App-Abhängigkeiten zu installieren. Abhängig von Ihrer Umgebung und den installierten Python-Versionen müssen Sie möglicherweise die python3 Befehl:
- Erstellen Sie eine virtuelle Umgebung für Python: python -m venv env
- Aktivieren Sie die Umgebung: Quellumgebung/bin/aktivieren
- Installieren Sie Abhängigkeiten: pip install -r Anforderungen.txt
- Führen Sie die App aus: Python-App.py
Wenn Sie eine Fehlermeldung erhalten, dass der Port bereits verwendet wird, können Sie im app.py Datei, in der letzten Zeile.
Hinweis: Wenn Sie den Port verschieben müssen, auf dem Ihr app.py ausgeführt wird, müssen Sie zu den Konfigurationsschritten in der Benutzeroberfläche zurückkehren und Ihre Umleitungs-URI ändern. Denken Sie daran, alle Ihre Änderungen zu speichern!
Melden Sie sich an und rufen Sie Ihr Token ab
Wann app.py ausgeführt wird, können Sie die URL in Ihrem Browser öffnen und sich bei PagerDuty anmelden:
Wenn Sie auf den Link „Mit PagerDuty verbinden“ klicken, werden Sie auf eine Anmeldeseite weitergeleitet, die auf identity.pagerduty.com :
Dieser Workflow schützt Ihr Konto. Ihr Team meldet sich direkt bei PagerDuty an und die Token werden zur Autorisierung verwendet. Ihre Anwendung muss weder Authentifizierung noch Autorisierung durchführen! Überlassen Sie das PagerDuty .
Melden Sie sich mit Ihrem Benutzernamen und Passwort an. PagerDuty fordert Sie auf, die App für Ihr Konto zu autorisieren:
Klicken Sie auf „Zustimmung übermitteln“. Sie werden zurück zu Ihrem Umleitungs-URI , in diesem Fall die app.py An lokaler Host .
Ihr Token ist Teil der Informationen, die an die App zurückgegeben werden, und ist Teil der Körper der Rückgabedaten. Sie können den Code ein wenig ändern, um ihn auf die Seite zu drucken. Ich habe hinzugefügt Zeichen Und Aktualisierungstoken zu meiner Ausgabe als Beispiel:
Dieses Token steht Ihnen nun zur Verwendung in Skripten und Tools in der von Ihnen gewählten Sprache zur Verfügung. Integrieren Sie es in Ihre API-Anfragen als „Authorization“-Header:
Autorisierung: Träger pdus+_xxxxxxxxxxxxxxxxxxxxxxxxxxx
Hier ist beispielsweise ein Shell-Skript zum Anfordern /Dienstleistungen :
TOKEN=$PD_API_KEY
ENDPOINT=”Dienste”
curl -X GET –header 'Inhaltstyp: application/json' \
–url https://api.pagerduty.com/$ENDPOINT \
–header 'Akzeptieren: application/vnd.pagerduty+json;version=2' \
–header „Autorisierung: Inhaber $TOKEN“
Nicht autorisierte Bereiche
Da unser Token einen sehr engen Anwendungsbereich hat, wird ein Fehler angezeigt, wenn Sie versuchen, damit auf etwas anderes zuzugreifen als Dienstleistungen Und Benutzer . Wenn ich versuche, mit diesem Token auf die /Vorfälle Endpunkt, würde ich den folgenden Fehler erhalten:
{„Fehler“:{„Nachricht“:“Für das Token fehlen die erforderlichen Bereiche“,”erforderliche_Bereiche“:“Vorfälle.read“,”Token_Bereiche“:“OpenID-Dienste.read Benutzer.read“}}
Timeouts und Aktualisierung
Im Gegensatz zu unseren API-Schlüsseln haben OAuth-Token eine begrenzte Lebensdauer. Das Inhabertoken, das wir im letzten Abschnitt erhalten haben, ist nur 24 Stunden lang gültig. Der Beispiel-App-Code bietet keine Option zum Aktualisieren von Token, daher ist es am einfachsten, ein neues Token anzufordern. Kehren Sie einfach zur ersten URL zurück und klicken Sie erneut auf den Link „Mit PagerDuty verbinden“, um ein neues Token zu erhalten.
Wenn Sie diesen Ablauf in eine andere App integrieren, sollten Sie das Aktualisierungstoken verwenden, damit sich Benutzer nicht immer wieder anmelden müssen. Sie können ihr Konto autorisieren und Ihre Anwendung kann die Token im Backend verwalten und bei Bedarf aktualisieren. Weitere Informationen zur Verwendung der Aktualisierungstoken finden Sie im Dokumente .
Token widerrufen und Anwendungen löschen
Wenn Sie die Token für eine Anwendung widerrufen müssen, können Sie dies auf der Klient Panel der Konfigurationsseite. Sie können alle aktiven Token für die Anwendung widerrufen, den Client selbst löschen und ein neues Geheimnis generieren.
Wenn Sie Client OAuth aus Ihrer Anwendung löschen, müssen Sie Ihren gesamten Code aktualisieren, der möglicherweise diese Anwendungskonfiguration verwendet, um mit PagerDuty zu kommunizieren.
Nachdem Sie geklickt haben Löschen , Sie werden zum Hauptbildschirm zurückgeführt App bearbeiten Bildschirm. Um einen neuen Client OAuth für Ihre Anwendung zu erstellen, fügen Sie erneut hinzu OAuth 2.0 zu Ihrer Bewerbung in der gleichen Weise wie oben.
Wenn Ihr Team eine App nicht mehr benötigt, können Sie die gesamte App jetzt aus Ihrem App-Registrierung Seite:
Klicken Sie einfach auf das Drei-Punkte-Menü auf der rechten Seite der App-Liste und wählen Sie Löschen .
Beim Löschen der App werden alle Geheimnisse und widerruft alle Token .
Lass uns wissen was du denkst!
Haben Sie bereits begonnen, Scoped OAuth in Ihren Tools zu verwenden? Lassen Sie es uns wissen! Werden Sie Mitglied unseres Community-Foren oder wenden Sie sich an community-team@pagerduty.com . Wir würden gerne hören, was Sie von den neuen Funktionen halten und was Sie sich für die Zukunft wünschen.