# API Keys in Programm ablegen? Welche Stelle?



## beta20 (24. Okt 2019)

Hallo zusammen,

ich habe mittlerweile mehrere API Keys, die ich in meinem Programm nutze, die ich derzeit in den verschiedenen Klassen als Konstante habe.
Mittlerweile wird das aber nicht mehr so ganz durchsichtig. Ebenfalls möchte ich die Flexibilität haben, den Key schnell ändern zu können ohne das Programm neu kompilieren zu müssen und erneut zu deployen (in der Entwicklungsumgebung geht das ja noch, aber nicht auf Produktion...)

Gerne möchte ich zwischen der Entwicklungsumgebung und Produktionumgebung unterscheiden.

Daher meine Frage, wo lege ich die Keys am Besten ab? Auch im Hinblick auf Security...
Erstelle ich in der Datenbank eine Tabelle?
- ID
- Username
- Passwort
- Token

Oder was ist die beste Lösung dafür?


----------



## httpdigest (24. Okt 2019)

Kommt jetzt drauf an, wie deine Deployment-Umgebungen genau aussehen.
Bei AWS z.B. hat es sich bewährt, solche Keys zum Beispiel als Secret in den Parameter Store des Systems Managers zu schreiben.
Wenn du kein Cloud-Deployment hast, würde es sich anbieten, die Keys auf den Maschinen selbst einmal zu hinterlegen, da sie ja - wie du sagtest - umgebungsspezifisch sind.
Dort kannst du sie dann per SSH auch einfach ändern und musst sie nicht in deiner Anwendung vorhalten bzw. einen Umgebungs-Switch in deiner Anwendung benutzen, um pro Umgebung die richtigen Keys zu laden.


----------



## White_Fox (24. Okt 2019)

Und so eine Frage im Anfängerforum...


----------



## Dukel (24. Okt 2019)

Ist das nicht eine Aufgabe für einen Vault?








						Vault by HashiCorp
					

Vault secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets in modern computing.




					www.vaultproject.io


----------



## beta20 (24. Okt 2019)

httpdigest hat gesagt.:


> Kommt jetzt drauf an, wie deine Deployment-Umgebungen genau aussehen.
> Bei AWS z.B. hat es sich bewährt, solche Keys zum Beispiel als Secret in den Parameter Store des Systems Managers zu schreiben.
> Wenn du kein Cloud-Deployment hast, würde es sich anbieten, die Keys auf den Maschinen selbst einmal zu hinterlegen, da sie ja - wie du sagtest - umgebungsspezifisch sind.
> Dort kannst du sie dann per SSH auch einfach ändern und musst sie nicht in deiner Anwendung vorhalten bzw. einen Umgebungs-Switch in deiner Anwendung benutzen, um pro Umgebung die richtigen Keys zu laden.



nein, ich verwende kein AWS...
Ich habe kein Cloud Deployment... 
Ich habe zB 3 WildFly Instanzen, die dann als Master / Slave laufen...


----------

