2013-11-21 10 views
14

Ich versuche, die minimale Richtlinie einzugrenzen, um ein vordefiniertes Computerabbild auszuführen. Das Image basiert auf zwei Snapshots und ich möchte nur "m1.medium" Instanztypen starten.Minimale IAM-Richtlinie für ec2: RunInstances

auf dieser Grundlage und mit Hilfe von this page und this article arbeitete ich die folgende Richtlinie aus:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1385026304010", 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:RunInstances" 
      ], 
      "Condition": { 
       "StringEquals": { 
        "ec2:InstanceType": "m1.medium" 
       } 
      }, 
      "Resource": [ 
       "arn:aws:ec2:us-east-1::instance/*", 
       "arn:aws:ec2:us-east-1::image/ami-f1c3e498", 
       "arn:aws:ec2:us-east-1::snapshot/snap-e2f51ffa", 
       "arn:aws:ec2:us-east-1::snapshot/snap-18ca2000", 
       "arn:aws:ec2:us-east-1::key-pair/shenton", 
       "arn:aws:ec2:us-east-1::security-group/sg-6af56d02", 
       "arn:aws:ec2:us-east-1::volume/*" 
      ] 
     } 
    ] 
} 

Die Politik nach unten verengt das genaue Bild, Snapshots, Sicherheitsgruppe und Schlüsselpaar, während die spezifische verlassen Instanz und Volumen geöffnet.

Ich bin mit der CLI-Tools wie folgt, wie here beschrieben:

aws ec2 run-instances --dry-run \ 
    --image-id ami-f1c3e498 \ 
    --key-name shenton \ 
    --security-group-ids sg-6af56d02 \ 
    --instance-type m1.medium 

Die ~/.aws/config sich wie folgt:

[default] 
output = json 
region = us-east-1 
aws_access_key_id = ... 
aws_secret_access_key = ... 

Der Befehl führt zu einer generischen You are not authorized to perform this operation Nachricht und der codierten Genehmigung Fehlermeldung zeigt an, dass keine meiner Anweisungen übereinstimmte und lehnt daher die Aktion ab.

Die Umstellung auf "Resource": "*" löst das Problem offensichtlich, aber ich möchte mehr Verständnis dafür bekommen, warum das obige nicht funktioniert. Ich bin mir völlig im Klaren darüber, dass dies ein gewisses Maß an Ratespielen erfordert, daher begrüße ich jede Idee.

Antwort

24

Ich wurde von Jeff Barr von Amazon Web Services kontaktiert und er half mir freundlicherweise herauszufinden, was das Problem war.

Zuerst müssen Sie die Berechtigung Fehlermeldung mit der folgenden Anweisung dekodieren:

$ aws sts decode-authorization-message --encoded-message 6gO3mM3p....IkgLj8ekf

Sicherstellen, dass die IAM Benutzer/Rolle Berechtigung für die sts:DecodeAuthorizationMessage Aktion hat.

Die Antwort enthält einen DecodedMessage Schlüssel eines anderen JSON codierte Körper mit:

{ 
    "allowed": false, 
    "explicitDeny": false, 
    "matchedStatements": { 
     "items": [] 
    }, 
    "failures": { 
     "items": [] 
    }, 
    "context": { 
     "principal": { 
      "id": "accesskey", 
      "name": "testuser", 
      "arn": "arn:aws:iam::account:user/testuser" 
     }, 
     "action": "ec2:RunInstances", 
     "resource": "arn:aws:ec2:us-east-1:account:instance/*", 
     "conditions": { ... } 
    } 
} 

Unter context => resource wird es zeigen, was Ressourcen es gegen die Politik anzupassen versucht; Wie Sie sehen können, erwartet es eine Kontonummer. Die arn documentation sollte daher wie folgt gelesen werden:

Sofern nicht anders angegeben, sind die Region und Konto erforderlich.

Hinzufügen der Kontonummer oder * im Fest des betroffenen ARN das Problem:

"Resource": [ 
    "arn:aws:ec2:us-east-1:*:instance/*", 
    "arn:aws:ec2:us-east-1:*:image/ami-f1c3e498", 
    "arn:aws:ec2:us-east-1:*:snapshot/snap-e2f51ffa", 
    "arn:aws:ec2:us-east-1:*:snapshot/snap-18ca2000", 
    "arn:aws:ec2:us-east-1:*:key-pair/shenton", 
    "arn:aws:ec2:us-east-1:*:security-group/sg-6af56d02", 
    "arn:aws:ec2:us-east-1:*:volume/*" 
] 
+0

Die arn für AMIs kein Konto # nehmen - so ist es entweder leer oder „*“. Danke für diesen Beitrag - ich hätte das nie ohne es gelöst! –

+0

Ich habe das selbe gemacht wie du aber meine Initialisierung fehlgeschlagen ... verstehe nicht. Können Sie bitte Ihre volle Politik teilen – Kernelv5

+0

@Shafiulkarim Das ist wirklich die ganze Politik, die ich habe; Ich schätze, wenn dies Ihre Frage nicht beantwortet, zögern Sie nicht, einen anderen zu fragen und mich mit dem Link anzumelden. –

Verwandte Themen