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.
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. –