2017-12-05 5 views
1

Ich habe ein AWS-Konto mit ID 11111 und ich möchte den Zugriff auf bestimmte Teile eines S3-Buckets zu dem Konto, zu dem der Bucket gehört, verweigern, auch wenn die Rolle darauf zugreifen Objekt hat vollen Zugriff s3.Wie s3 Bucket-Zugriff für ein AWS-Konto zu verweigern

Es ist mein Verständnis, dass eine Regel auf einer s3 Eimer Politik DENY Einstellung sollte das tun, so habe ich versucht, die s3 Politik unter

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111111:root" }, "Action": [ "s3:PutObject", "s3:GetObjectVersion", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::mybucket/production/*" ] } ] }

jedoch einer EC2-Maschine in demselben Konto wie der s3 Eimer mit einer iam Rolle, um vollen Zugriff auf den Eimer zu ermöglichen (s3: *) ist immer noch in der Lage zu schreiben/zu lesen mybucket/production/*

Fehle ich etwas? Sollte nicht die DENY-Bucket-Regel Vorrang haben? Wie geht man mit dieser Situation um? Ich möchte vermeiden, dass ich den vollen Zugriff von der ec2-Rolle entfernen muss, aber dazu in der Lage sein, das zu verweigern.

Antwort

0

Ich habe dies nicht tatsächlich getestet.

Ihre S3-Richtlinie beschränkt den Zugriff für IAM-Benutzer. Ihr Ziel ist es, den Zugriff auf Dienste und/oder Rollen zu beschränken, die Dienste annehmen.

Um Zugriff auf alle EC2-Instanzen zu verweigern, eine weitere Regel hinzufügen und die Haupt als (oder fügen Sie zu Ihrem bestehenden Principal Einträge) angeben:

"Principal": {"Service": "ec2.amazonaws.com"} 

Zugriff auf eine bestimmte Rolle zu begrenzen, die EC2 übernimmt:

"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:role/role-name" } 
+0

Vielen Dank, aber ich möchte im Wesentlichen den Zugriff für alle Benutzer unter diesem bestimmten Konto eher den Dienst verweigern. Dies liegt daran, dass ich mich dann für ein anderes Konto öffne, um in der Lage zu sein, auch unter den gesperrten Bereichen von ec2-Instanzen zu lesen/schreiben. Ich möchte auch unabhängig von der Rolle beschränken, die verwendet wird, um auf diesen Bucket zuzugreifen – ByteFlinger

+0

Ich bin nicht sicher, ob Sie eine Frage stellen oder nur Ihre Ziele angeben. –

1

ich glaube, die folgende gehe hier:

1> das Konto 111111 besitzt den S3-bucket und die IAM-Einheit (in diesem Fall eine IAM-Rolle).

2> Da die Anfrage von einer IAM-Rolle im selben Konto (Bucket-Besitzer) gestellt wird, prüft S3 nur die "User Context".

3> Während des "Benutzerkontext" Auswertung, S3 berücksichtigt werden: * Politik zur IAM Rolle * Bucket Politik angebracht * Eimer und ACL-Objekt (falls vorhanden)

4> Der Antrag ist über die Berechtigungsrichtlinie der IAM-Rolle erlaubt, und es gibt keinen expliziten Verweigern für die IAM-Rolle, da der Principal in der Bucket-Richtlinie für die "Root User" gilt und die IAM-Entitäten in 111111 nicht abdeckt, da beide Konten (Bucket-Eigentümer und 111111) identisch sind .

Ich habe dies getestet und mit der ähnlichen Richtlinie kann mein Root-Benutzer keine Objekte in den Bucket löschen oder hochladen. Root kann jedoch durch Löschen der Bucket-Richtlinie Zugriff erhalten.

Wie @John Hanley erwähnt, können Sie die IAM-Rolle als Prinzipal verwenden, um den Zugriff im Produktionsordner zu verweigern, aber da die Rolle S3fullaccess hat, kann sie die Bucket-Richtlinie löschen ebenfalls.

+0

Eigentlich funktioniert die Änderung der Kontonummer für * (anonym) funktioniert aber ich bin dann für alle Konten, die nicht das ist, was ich will, wie ich es auch für andere Konten öffnen möchte. Siehe meine Kommentare auf @John Post für Details – ByteFlinger

+0

@sudo. Netter Kommentar zu S3fullaccess beim Löschen der Bucket-Richtlinie. Ich habe nicht an diese Lücke gedacht. –

0

Sehen Sie, ob das funktioniert. Da Sie vollen Zugriff gewähren, müssen Sie den Zugriff explizit verweigern. Unterhalb der Richtlinie heißt es den Zugriff verweigern, wenn der Benutzer nicht erlaubt ist. Benutzer oder Rolle ist nicht erlaubt. Dies sollte auch verhindern, dass nicht autorisierte Benutzer/Rollen die Bucket-Richtlinie löschen. Ich habe es noch nicht getestet.

{ 
       "Id": "DenyAllAllowOnlyOne", 
       "Statement": [ 
         { 
           "Action": "s3:*", 
           "Effect": "Deny", 
           "NotPrincipal": { 
             "AWS": [ 
            "arn:aws:iam::111111:user/alloweduser", 
            "arn:aws:iam::111111:role/allowedrole" 

             ] 
           }, 
           "Resource": [ 
             "arn:aws:s3:::mybucket/production", 
             "arn:aws:s3:::mybucket/production/*" 
           ] 
         } 
       ], 
       "Version": "2012-10-17" 
     } 
Verwandte Themen