2017-11-07 1 views
0

Ich stelle ein Serverprogramm in einer ec2-Instanz bereit, die zuvor signierte URLs für s3 erstellen muss. Bisher habe ich meine AWS-Anmeldeinformationen in Umgebungsvariablen zum Testen gespeichert, möchte aber jetzt zur IAM-Rollenstrategie wechseln. Ich bin mir jedoch nicht sicher, auf welche Richtlinien die Rolle zugreifen sollte. Meine erste Vermutung ist AmazonS3FullAccess, aber die Beschreibung sagt "Bietet vollen Zugriff auf alle Buckets über die AWS Management Console", aber die ec2-Instanz verwendet die C++ SDK, nicht die Management-Konsole. Oder ist die Richtlinie nicht wichtig, nur dass sie eine Richtlinie hat, so dass sie irgendwie Anmeldeinformationen erhält?AWS Welche IAM-Rolle für S3 Presigned URL

Antwort

3

Sie verwechseln Richtlinien und Rollen.

Eine Richtlinie gewährt einem Benutzer oder einer Rolle oder einer Gruppe Berechtigungen.

Der Unterschied zwischen einem Benutzer und einer Rolle ist subtil, aber im Grunde wird eine Rolle von anderen Diensten in AWS übernommen, z. B. einer EC2-Instanz, während ein Benutzer im Allgemeinen nur eine von Ihnen für die Verwendung in AWS erstellte Identität ist .

Die Richtlinienbeschreibung für den vollständigen Zugriff kann die Managementkonsole erwähnen, aber es gewährt vollen Zugriff auf alle Buckets, ob über die Konsole, die API oder ein SDK, sie sind alle wirklich die gleiche Sache unter der Haube.

Sie sollten die fullaccess-Richtlinie nicht verwenden. Sie können es als Basis verwenden, um Ihre echte Richtlinie zu erstellen, aber IAM sollte immer den Princip mit der geringsten Berechtigung verwenden, wobei Sie nur die absolut erforderlichen Berechtigungen angeben. In diesem Fall benötigt die Rolle nur Lese- und möglicherweise Listenberechtigungen für den bestimmten Bucket in Frage, wenn URLs zum Lesen generiert werden, oder Berechtigungen beim Hochladen zulassen.

+0

Danke! Meine Verwirrung begann, weil es keine Richtlinie oder Aktion gab, nur URLs zu signieren, aber am Ende testete ich mit einer Richtlinie, die nur s3 ausführen konnte: GetObject und s3: PutObject und das funktionierte. Ich denke, wenn Sie eine signierte URL zum Hochladen bereitstellen, sollten Sie zumindest in der Lage sein, sich selbst hochzuladen – aspirino67

1

Zu Entwicklungszwecken können Sie die AmazonS3FullAccess-Richtlinie an die von Ihnen erstellte Rolle anhängen. Sobald Sie die IAM-Rolle an Ihre EC2-Instanz angehängt haben, müssen Sie die Anmeldeinformationen nicht exportieren.

Sobald die Entwicklungsarbeit abgeschlossen ist, sollten Sie die Richtlinie erneut überprüfen, um sie restriktiver zu gestalten. Sie können entweder eine neue verwaltete Richtlinie erstellen (AmazonS3FullAccess wird von AWS verwaltet und Sie können die Berechtigungen nicht aktualisieren) oder eine neue Inline-Richtlinie mit den spezifischen Berechtigungen erstellen, die Ihre Anwendung benötigt.

+0

Dies ist verlockendes Schicksal. Wenn Sie keine Zeit haben, um die Richtlinien * jetzt * korrekt zu machen, haben Sie keine Zeit, zurückzukommen und den vollen Zugriff * später * zu entfernen, aus Angst, etwas zu kaputt zu machen. –

Verwandte Themen