Frage Mit Amazon Web Services einen geheimen Schlüssel geheim halten


Ich spiele mit Amazon Web Services in meinem persönlichen Projekt. Ich habe ihr AWS SDK für .NET gepackt und ich benutze das, aber ich bin ein wenig verwirrt.

  1. Der Zugriff auf den Web-Service (in diesem Fall SimpleDB, obwohl ich denke, dass das nicht wirklich wichtig ist) wird über ein privates / öffentliches Schlüsselpaar autorisiert.

  2. Das AWS SDK für .NET-API, das zum Erstellen eines Clientobjekts verwendet wird, benötigt den privaten Schlüssel:

    AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey);
    
  3. Dies ist eine Client-Anwendung, sodass der Code vollständig auf dem Client ausgeführt wird.

  4. Vorschlagen, dass der Client Zugriff auf meinen privaten Schlüssel haben muss, um Zugriff auf die SimpleDB zu haben. Aber amazon sagt wiederholt und nachdrücklich, dass mein privater Schlüssel meine Kontrolle nicht verlassen darf.

Das macht für mich keinen Sinn, also muss ich etwas verpassen.

Ist eine clientseitige Anwendung das falsche Modell für die Amazon Web Services im Allgemeinen, für die Verwendung ihres AWS SDK für .NET, oder fehlt mir etwas, das eine Client-Anwendung vollkommen zumutbar macht? Gibt es eine gute Möglichkeit, dies zu umgehen, ohne einen eigenen Proxy-Service zu erstellen, der Clients authentifizieren und ihre Anforderungen an die SimpleDB weiterleiten würde?


10
2018-02-10 20:44


Ursprung


Antworten:


Sie müssen keinen Proxy für den Remote-Service (AWS) implementieren. Implementieren Sie einfach einen einfachen, kleinen, authentifizierten Dienst, der an den Client zurückgibt URL und Header, die bei der Kontaktaufnahme mit AWS verwendet werden sollen. Ihr authentifizierter Webservice hält das AWS geheim und stellt dem Client nur die signierte Anforderungs-URL und die Header zur Verfügung, die dann den tatsächlichen Arbeitsaufruf unter Verwendung dieser zurückgegebenen Informationen ausführen.

Auf diese Weise vermeiden Sie den Overhead während des AWS-Aufrufs, dass Sie Ihre eigenen Server durchlaufen müssen. So sparen Sie Latenzzeit, Bandbreite, gebundene Sockets auf Ihrem Server, Komplexität bei der Fehlerbehandlung usw. Sie müssen nur einen leichten Schlag für den Client ausführen Bekommen Sie die richtigen Anweisungen.


7
2018-05-13 00:44