2016-04-09 5 views
1

Wie kann ich bei einem S3-Objekt wissen, welcher STS-Schlüssel zum Hochladen verwendet wurde?Welcher STS-Schlüssel wurde zum Hochladen von Daten nach s3 verwendet?

mein Use Case-Szenario Erklärung (nur FYI): In meiner Anwendung, lasse ich meine Nutzer zum Hochladen von Daten S3The Javascript SDK. Um das SDK zu initiieren, stelle ich meinen Benutzern eine STS token mit einem Ablauf von 15 Minuten zur Verfügung.

Benutzer sollten diesen Schlüssel einmal verwenden, um genau 1 Daten, die meine Anwendung später verarbeitet.

Problem ist, sobald ich dieses Token ausstelle und es Benutzern gebe, versuchen einige böswillige Benutzer, viele gelegentliche große Daten in meinen Behälter hochzuladen.

Da nur ein Objekt zu sehen, habe ich keine Möglichkeit, diese Daten mit einem Benutzer zu verknüpfen, ich weiß nicht, wer der Schuldige ist. Wenn ich durch irgendeinen magischen Methode ich aws bitten kann, mir den Schlüssel zu geben, der verwendet wurde, um diese Daten hochzuladen, dann kann ich den Schlüssel, zu dem ich ihn ausgestellt hatte, übertreffen und so meinen Übeltäter finden.

  1. Ich kann metadata nicht verwenden, weil böswilliger Benutzer es nicht bereitstellen wird.

Antwort

1

Aktivieren AWS CloudTrail und/oder die Aktivierung S3 server logs sollten Sie mit dem entsprechenden Protokoll dieser Informationen zu verfolgen.

+0

Vielen Dank für Ihre Antwort. Laut diesem Artikel (http://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html#STS-API-SAML-WIF), nur SAML und Web-ID -Federation STS-Schlüssel können geloggt werden, aber ich benutze 'getSessionToken()', um meine Tokens zu bekommen, die nicht unter diese Kategorien fallen. Irgendwelche Vorschläge? – Rash

+2

@Rash es klingt wie Sie sollten nicht verwenden getSessionToken aber sollte mit "assumeRole", die Sie eine Richtlinie Anweisung zur Verfügung stellen können, um die Aktionen mit den temporären Anmeldeinformationen auf nur einen einzigen Schlüssel in einem einzigen Bucket beschränkt, sogar von einem Single-Source-IP, wenn Sie möchten. Wenn ein Sitzungstoken angezeigt wird, werden möglicherweise zu viele Berechtigungen vergeben. * "Normalerweise verwenden Sie GetSessionToken, wenn Sie mit MFA programmatische Aufrufe an bestimmte AWS-APIs schützen möchten" * http://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html –

+0

@ Michael-sqlbot I Ich mache mir keine Sorgen über die Verwendung von 'GetSessionToken()', da die IAM-Rolle, die diese Token selbst erzeugt, nur das Objekt in einen bestimmten Bucket und Schlüssel hochladen darf, sodass alle resultierenden temporären Credits ebenfalls an diese Einschränkungen gebunden sind. 'GetSessionToken' scheint die grundlegendste Form von Token zu sein, die den Temp-Krediten überhaupt keine Macht verleiht. 'AngenommenRole' scheint andererseits an dieser Stelle sperrig und unnötig zu sein. Ich mochte die Idee von S3-Logs, aber ich sehe die Logs inklusive STS-Keys nicht drin. – Rash

Verwandte Themen