Ich baue eine App, die Amazon Security Token Service verwendet, um temporäre Benutzer für den Zugriff auf ein Unterverzeichnis auf einem S3-Bucket erstellen. Die Benutzer werden von einem IAM-Benutzer erstellt, der über vollständigen Lese-/Schreibzugriff auf den Bucket verfügt (sowie über die zum Erstellen von Benutzern erforderlichen Berechtigungen).Amazon Prefix-basierte S3-Richtlinie funktioniert nicht (AWS, IAM, STS, Ruby)
Ich habe die Erstellung von Benutzern perfekt funktioniert zusammen mit Ablauf der Sitzung und mehr, aber ich habe Probleme, die richtige Politik an Ort und Stelle für eine Präfix-basierte Auflistung von Schlüsseln zu ermöglichen. Die Berechtigungen, die ich der Endbenutzer haben wollen, sind:
- lesen Objekte, die in einem gewissen definierten Präfix sind
- schreiben Objekte dem gleichen definierten Präfix
- Liste alle Objekte, die in dem definierten Präfix residieren
Ich habe es geschafft lesen und schreiben arbeiten, aber irgendwie egal, was ich versuche, der Listenzugriff funktioniert nicht richtig. Hier ist der Ruby-Code, den ich verwendet wurde, als ich am nächsten war:
AWS::STS::Policy.new do |policy|
policy.allow(
actions: ["s3:GetObject*", "s3:PutObject*", "s3:DeleteObject*"],
resources: "arn:aws:s3:::#{ENV['PROJECT_BUCKET']}/#{folder_path}/*"
)
policy.allow(
actions: ["s3:*"],
resources: ["arn:aws:s3:::#{ENV['PROJECT_BUCKET']}/*", "arn:aws:s3:::#{ENV['PROJECT_BUCKET']}"]
).where(:s3_prefix).like("#{folder_path}/*")
end
Wenn ich mich erinnere, das mir erlaubt, Lesen und Schreiben zu tun, aber nicht auflistet. Da ich noch in der Entwicklung bin habe ich den Code dies geändert:
AWS::STS::Policy.new do |policy|
# FIXME: This is way too permissive, but it's not working to be more specific.
policy.allow(
actions: ["s3:*"],
resources: ["arn:aws:s3:::#{ENV['PROJECT_BUCKET']}/*", "arn:aws:s3:::#{ENV['PROJECT_BUCKET']}"]
)
end
Das funktioniert 100% in Ordnung mit dem offensichtlichen Problem, das nichts mit einem Präfix beschränkt ist, die Benutzer erlauben würde, die Arbeit der andere zu verprügeln.
Was mache ich falsch in meiner Politik?