2017-04-18 5 views
1

Ich habe eine Wolkenbildungsvorlage in einem S3-Bucket (die URL folgt dem Muster, ist aber nicht exakt gleich: https://s3.amazonaws.com/bucket-name/cloudform.yaml). Ich muss in der Lage sein, über CLI auf ein Bash-Skript zuzugreifen. Ich würde es vorziehen, dass jeder in einer Organisation (alle in diesem einen Konto) Zugriff auf diese Vorlage hat, aber andere Personen außerhalb der Organisation haben keinen Zugriff auf die Vorlage. Ein Eimer Politik Ich habe versucht wie folgt aussieht:S3 Principal Bucket Policy Permissions

{ 
"Version": "2012-10-17", 
"Id": "Policy11111111", 
"Statement": [ 
    { 
     "Sid": "Stmt111111111", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "arn:aws:iam::7777777777:root" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::bucket-name/*" 
    } 
] 
} 

Mit dieser Politik, ich und ein paar andere Leute in meinem Büro sind nicht in der Lage die URL zuzugreifen. Selbst wenn ich mit dem root-Account angemeldet bin, bekomme ich Zugriff verweigert.

Auch diese Änderung (nur Haupt Einstellung *) macht den Eimer für jedermann zugänglich:

{ 
    "Version": "2012-10-17", 
    "Id": "Policy11111111", 
    "Statement": [ 
     { 
      "Sid": "Stmt111111111", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::bucket-name/*" 
     } 
    ] 
} 

Offensichtlich ist die Zeichen auf meinen Hauptfeldpunkt falsch konfiguriert sind. 777777777 ist der Ersatz für die Konto-ID, die auf der Seite Mein Konto angezeigt wird.

Also, muss ich mich darum auf der IAM-Front sorgen? In Anbetracht dessen, dass ich als root-Benutzer angemeldet bin, würde ich annehmen, dass ich Zugriff darauf haben sollte, solange ich eine Bucket-Richtlinie einfüge. Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Kurz und gut:

Der Eimer Politik nicht zulässt zu tun, was Sie aufgrund einer Wildcard Begrenzung des Hauptelements wollen. Am besten erstellen Sie eine IAM-Gruppe und fügen alle IAM-Benutzer in diese Gruppe ein, wenn sie Zugriff benötigen.

Lange Version:

Nur um klarzustellen, jede Anfrage zu https://s3.amazonaws.com/bucket-name/cloudform.yaml unterzeichnet werden muss und über die erforderlichen Authentifizierungsparameter oder die Anforderung wird mit Zugriff verweigert abgelehnt. Die einzige Ausnahme ist, wenn die Bucket-Richtlinie oder die Bucket-ACL den öffentlichen Zugriff erlaubt, aber es klingt nicht so, als ob dies gewünscht wäre.

Wenn Sie "Jeder in einer Organisation (alle in diesem einzigen Konto)" sagen, meinen Sie IAM-Benutzer unter dem Konto, die über die AWS-Konsole auf die Datei zugreifen, oder IAM-Benutzer, die einen anderen Code oder ein anderes Tool verwenden (zB AWS CLI) um auf die Datei zuzugreifen.

Also, was es klingt wie das, was Sie wollen, ist die Fähigkeit, die Haupt als

"Principal": { 
    "AWS": "arn:aws:iam::777777777777:user/*" 
} 

angeben, da das ist, was das Muster für jeden IAM Benutzer unter 777777777777 Konto-ID wäre. Leider ist dies nicht erlaubt, da kein Platzhalter im Principal erlaubt ist, es sei denn, Sie verwenden den Catch-All Platzhalter "*". Mit anderen Worten: "*" ist erlaubt, aber nicht "Präfix *" oder "* Suffix". (Ich wünschte AWS dies besser dokumentiert.)

Sie jeden IAM Benutzer, den Sie wie so im Eimer Politik geben könnte:

"Principal": { 
    "AWS": [ 
     "arn:aws:iam::777777777777:user/alice", 
     "arn:aws:iam::777777777777:user/bob", 
     "arn:aws:iam::777777777777:user/carl", 
     ... 
     "arn:aws:iam::777777777777:user/zed", 
} 

Aber Sie wollen wahrscheinlich nicht die Richtlinie für jeden neuen Benutzer aktualisieren .

Es wäre am einfachsten, eine IAM-Gruppe zu erstellen, die Zugriff auf diese Datei gewährt. Dann würden Sie alle IAM-Benutzer dieser Gruppe hinzufügen. Wenn Sie neue Benutzer hinzufügen, müssen Sie sie manuell zu dieser Gruppe hinzufügen. Dies ist also nicht so praktisch wie ursprünglich gewünscht.

Verwandte Themen