2017-02-08 1 views
2

Ich möchte zulassen, dass ein Skript auf meiner EC2-Instanz anzeigt, wenn es für die Autoscaling-Gruppe intakt ist. Dazu kann ich folgende von meinem Skript ausführen:Wie kann ich einer EC2-Instanz mit einer IAM-Rolle erlauben, den Instanzzustand nur für itselt zu setzen?

aws --region $AWSREGION \ 
    autoscaling \ 
    set-instance-health \ 
    --instance-id $(curl http://169.254.169.254/latest/meta-data/instance-id) \ 
    --health-status Unhealthy 

Bevor spezielle Berechtigungen für die IAM Rolle gewähren, erhalte ich die folgende Fehlermeldung (wie ich erwarten würde):

An error occurred (AccessDenied) when calling the SetInstanceHealth operation: User: arn:aws:sts::ACCOUNTID:assumed-role/ROLENAME/i-INSTANCEID is not authorized to perform: autoscaling:SetInstanceHealth 

ich konnte die folgende Erklärung meiner IAM Rolle hinzuzufügen, dies zu umgehen:

{ 
    "Action": [ 
    "autoscaling:SetInstanceHealth" 
    ], 
    "Effect": "Allow", 
    "Resource": "*" 
} 

Aber wäre das nicht zulassen, dass Fälle, in dieser Rolle Instanz Gesundheit für alle Instanzen setzen (vorausgesetzt, sie kennen die Instanz-ID)? Ich möchte nicht, dass eine kompromittierte Instanz andere aus ihren eigenen ASGs herausnehmen kann.

+0

Diese Methode könnte funktionieren: [Gewähren von Zugriff auf S3-Ressourcen basierend auf dem Rollennamen] (http://stackoverflow.com/a/35720528/174777). Es verfügt auch über eine Methode zur Verwendung der Instanz-ID. Sie ist jedoch fest codiert und keine Variable. –

Antwort

0

Die Supported Resource-Level Permissions Dokumentation Listen Auto Scaling Gruppe im Ressourcen ARN Spalte, was darauf hindeutet Sie autoscaling:SetInstanceHealth von Resource einschränken.

Die IAM Policy Simulator andere Meinung:

Aktion Ressourcenebene Berechtigungen nicht

unterstützen ... aber ich habe die folgende IAM Politik erlaubt zu finden Mitglieder der Auto-Scaling-Gruppen überprüft, Überprüfen ihrer CloudWatch-Metriken und dann Festlegen der Instanzzustand der Mitglieder von nur eine Auto-Skalierungsgruppe:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "autoscaling:SetInstanceHealth" 
      ], 
      "Resource": "arn:aws:autoscaling:REGION:ACCOUNT:autoScalingGroup:UUID:autoScalingGroupName/NAME" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "autoscaling:DescribeAutoScalingGroups", 
       "cloudwatch:ListMetrics", 
       "cloudwatch:GetMetricStatistics" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 
+0

Das ist keine Antwort, oder? –

Verwandte Themen