Wir arbeiten an einem neuen Dienst - dieser Dienst wird möglicherweise direkt von Anwendungen auf Benutzergeräten aufgerufen. Diese Anwendungen werden von mehreren Entwicklungsteams aus der gesamten Organisation entwickelt und unterstützt, abhängig von den von uns bereitgestellten Daten.
Wir möchten herausfinden, welche Anwendungen welche Anforderungen senden, damit wir Verwendungsmuster und verantwortliche Entwickler identifizieren können. (Zur Vermeidung von Zweifeln wird die Benutzerauthentifizierung separat behandelt.)
Als Lösung benötigen wir einen API-Schlüssel pro Anwendung. Dann haben wir die Kontaktdaten für das Entwicklungsteam.
Wir möchten nicht, dass die API-Schlüssel zu Problemen führen, befürchten jedoch, dass Entwickler sie an Kollegen in anderen Teams weitergeben, sodass wir den Datenverkehr nicht mehr nur für eine Anwendung identifizieren können.
Wie können wir Entwickler dazu motivieren, API-Schlüssel nicht intern gemeinsam zu nutzen?
Antworten:
Um diese Schlüssel zwischen Teams zu teilen, müssen die Teams miteinander sprechen, sich darauf einigen, sie zu teilen und sie dann zu teilen. Das braucht Zeit. Wenn ein Team API-Schlüssel schneller und einfacher von Ihnen anfordern kann, gibt es keinen Anreiz zum Teilen.
Und der einfachste Weg für sie, diese Schlüssel anzufordern, ist für Sie, sie vorab zu sichern. Angenommen, Sie kennen alle anderen Teams, die API-Schlüssel benötigen, und erstellen sie und geben sie frei, bevor Sie ihnen den Service zur Verfügung stellen.
Es gibt noch einen weiteren Anreiz, den Sie anbieten können: Debugging-Unterstützung. Diese Teams werden Ihre Hilfe brauchen, wenn die Dinge nicht richtig funktionieren, wenn sie ihre Arbeit in Ihren Service integrieren. Mit diesen API-Schlüsseln können Sie ihre spezifischen Anforderungen nachverfolgen und so das Debuggen von Fehlern unterstützen. Verkaufen Sie das als Grund für die Schlüssel, anstatt " Nutzungsmuster und verantwortliche Entwickler zu identifizieren ", was so klingt, als würden Sie ihre Aktivitäten ausspionieren.
quelle
Gute Antworten, ich habe mir gerade einen anderen Ansatz überlegt, der für Sie vielleicht funktioniert oder auch nicht.
Anstatt Schlüssel auszugeben, die einbezogen werden sollen, kann es erforderlich sein, dass der Header der Anforderungen den Namen der Front-End-Anwendung enthält, die vom Entwickler der Front-End-Anwendung erstellt und formatiert wird, wie dies bei Webbrowsern der Fall ist. Auf diese Weise könnten Front-Ends immer noch so tun, als ob sie eine andere Anwendung wären, aber dies hätte keinen Vorteil, so dass dies unwahrscheinlich erscheint. Lassen Sie das Frontend sich identifizieren und akzeptieren Sie alle nicht leeren Zeichenfolgen.
quelle
Zusamenfassend:
Erstens: Erleichterung und Nutzen; Bei Bedarf: Reiberei und Polizei.
Noch ein paar Worte
Erleichterung : Machen Sie es einem Team zunächst einfach, einen neuen API-Schlüssel zu erhalten. Fügen Sie beispielsweise eine Erinnerung in die Unternehmensabläufe zum Starten neuer Projekte ein und bieten Sie einen benutzerfreundlichen Service zum Anfordern neuer Schlüssel an, ohne nach einer Begründung zu fragen.
Vorteile : Nutzen Sie die Verwendung eines eigenen API-Schlüssels für das Team oder den Product Owner. Schlagen Sie beispielsweise ein Feedback zur App-Nutzung basierend auf diesem Schlüssel vor.
Reibung : Abhängig von der Schlüsselfunktion können Sie Reibungen erstellen, zum Beispiel wenn der Schlüssel mit einer von der Software definierten Domäne verknüpft ist (dh die Wiederverwendung von Schlüsseln würde nicht notwendigerweise den Zugriff auf alle gewünschten Dienste ermöglichen).
Polizeiarbeit : Schließlich müssen Sie möglicherweise einige Polizeimaßnahmen vorsehen. Beispielsweise können Sie die Verwendung von API-Funktionen mit einem API-Schlüssel überwachen und nach einer bestimmten Zeit eine Anfrage zur Verwendung von API-Teilen erstellen, die im Hinblick auf die Baseline nicht zu erwarten ist. Oder wenn dies nicht realistisch ist, fügen Sie einfach in die Checklisten für die Überprüfung von Unternehmensprojekten die Bestätigung ein, dass ein gültiger Schlüssel verwendet wurde.
Anmerkung : Möglicherweise müssen Sie Ihre API-Schlüsselrichtlinie klar definieren: Benötigt eine neue Hauptversion einen eigenen API-Schlüssel? Was ist mit einer Gabelung oder wenn eine App aufgeteilt ist? was ist, wenn ein anderes Team verantwortlich ist, etc ...
quelle
Im Allgemeinen ist es der einfachste Weg, Entwickler dazu zu bringen, "das Richtige zu tun", es ihnen einfach zu machen.
Zu diesem Zweck würde ich vorschlagen, einen API-Schlüssel für die Ausgabe von Webseiten / Websites zu erstellen. In seiner einfachsten Form kann es sich lediglich um ein Login (idealerweise an Ihr AD / LDAP-Unternehmen gebunden) und die Seite handeln, auf der nur der Anwendungsname abgefragt und der Schlüssel ausgegeben wird.
Am Ende des Tages können Sie Schlüssel später jederzeit widerrufen. Sie müssen also nur aufzeichnen, wer (Benutzername) den Schlüssel angefordert hat und was (Anwendungsname) er damit tun möchte - zusammen mit den erforderlichen Informationen den Schlüssel später widerrufen.
Mit einem Ticketsystem könnte man etwas Ähnliches machen, aber am Ende des Tages ist es für mich sehr einfach, einen Schlüssel von einer App in eine andere zu kopieren und einzufügen. Es muss also wirklich einfach sein, einen neuen Schlüssel anzufordern, um Fehler zu vermeiden Verhalten.
quelle
Sei proaktiv.
Identifizieren Sie mögliche Entwickler und GEBEN Sie ihnen eindeutige API-Schlüssel in einem sicheren Kanal im Voraus. Bieten Sie eine einfache Möglichkeit, neue API-Schlüssel anzufordern. Bieten Sie eine einfache Möglichkeit für neue Benutzer, die neue API-Schlüssel anfordern. Wenn neue Praktikanten oder Angestellte dem Team beitreten, geben Sie ihnen ein JIRA-Ticket oder ein ähnliches "Request an API Key" (API-Schlüssel anfordern) mit den Schritten in der Beschreibung.
Verfolgen Sie, welche API-Schlüssel verwendet wurden und welche nicht. Wenn Bob Tickets für das Projekt eingereicht hat, aber seine API-Schlüssel nicht verwendet hat, hat er wahrscheinlich die eines anderen ausgeliehen.
Haben Sie die Unterstützung des Managements. Sei keine neugierige Nancy, die Regeln aufstellt, die keine Rolle spielen. Überzeugen Sie das Management buchstäblich davon, dass es wichtig ist, und überzeugen Sie die Gruppe dann davon, dass es wichtig ist. Arbeiten Sie nicht daran, alle zu überzeugen.
Und der nervigste und tyrannischste Vorschlag: Seien Sie sich des Missbrauchs bewusst und gehen Sie noch am selben Tag hart durch. Gleiche Stunde ist am besten. Sagen Sie nicht "Bad Naughty Developer", sondern "Here are the proper steps". Wenn sie es wiederholt tun, deaktivieren Sie den missbrauchten Schlüssel. Dies belastet sowohl den Sharer als auch denjenigen, der geliehen hat, und der Sharer wird in Zukunft "Nein, mach es richtig" sagen. Vermeiden Sie das Deaktivieren von Schlüsseln in Live-Projekten.
quelle
Sie sollten auch eine Ratenbegrenzung implementieren . Dies kann die gemeinsame Nutzung von Schlüsseln verhindern. Es schützt Ihr System in gewissem Maße vor missbräuchlichen Anwendungen. (Und geradezu böswillige.) Und es stellt sicher, dass Sie vor einem massiven Anstieg des zu wartenden Datenverkehrs einigermaßen informiert sind. (Ich hoffe, Sie haben Zeit, Kapazität hinzuzufügen!)
Bei der Ratenbegrenzung wird ein Dialogfeld mit dem für den Schlüssel registrierten POC geöffnet, wenn für eine Anwendung ein höheres Limit erforderlich ist. Sie haben die Möglichkeit, zu fragen, ob Schlüssel gemeinsam genutzt werden, zu erklären, warum dies schädlich ist usw. Sie können bei Bedarf zusätzliche Schlüssel anstelle der angeforderten Änderungen des Ratenlimits anbieten . Etc.
quelle
Eine Möglichkeit, Dinge zu tun, insbesondere wenn die Teams ein gemeinsam genutztes Build-System verwenden (oder zumindest ein ausreichend verbreitetes), besteht darin, einen internen Server einzurichten, der API-Schlüssel erstellt und ausgibt (mit ein paar grundlegenden Informationen über das Produkt, das es verwendet ). Verwenden Sie dann ein Skript, das für jeden Build oder für jedes Versionsupdate einen neuen API-Schlüssel vom Server abruft. Lassen Sie die Entwickler das Skript ausführen, um auch einen anderen Schlüssel für ihre lokalen Builds zu erhalten. (Wenn möglich, automatisieren Sie dies als Teil des Builds, damit sie nicht einmal darüber nachdenken müssen.)
Auf diese Weise können Sie feststellen, ob es sich um eine Produktion, eine Qualitätssicherung oder eine Entwicklung handelt und ab welcher Version / welchem Build die Probleme begonnen haben.
quelle
Das erste und beste, was Sie tun können, ist, die Schlüssel so zu formatieren, dass sie den Anwendungsnamen in einer leicht lesbaren Form enthalten und nicht funktionieren, wenn Sie ihn ändern.
Wenn es offensichtlich ist, dass Teams den falschen Schlüssel verwenden, werden sie sich bemühen, dies nicht zu tun.
Lassen Sie die Schlüssel dann regelmäßig ab. Sie sollten dies trotzdem tun , und wenn sich ein Schlüssel dem Verfallsdatum nähert, können Sie einen neuen an das Team senden, dem er gehört. Das Team, das einen Schlüssel verwendet, wird dann motiviert, sicherzustellen, dass es das Team ist, das ihn besitzt, damit es den neuen erhält, wenn er abläuft.
quelle