
Ich schaute durch dieoffizielle Dokumenteund konnte scheinbar keinen Hinweis darauf finden, welche Berechtigungen der IAM-Benutzer benötigt, um diesen Befehl verwenden zu können.
Ich möchte, dass der IAM-Benutzer nur für diese eine bestimmte Instanz Bilder erstellen kann. Daher habe ich meine Richtlinie folgendermaßen eingerichtet:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt999",
"Effect": "Allow",
"Action": [
"ec2:CreateImage"
],
"Effect": "Allow",
"Resource": [
"arn:aws:ec2:us-east-1:<my account id>:instance/<my instance id>"
]
}
]
}
Aber ich bekam immer wieder Zugriffsverweigerungsfehler, wenn ich die EC2-CLI verwendete. Ich habe den Resource
Teil geändert "*"
und jetzt funktioniert es, aber jetzt kann mein IAM-Benutzer AMIs für alle EC2-Instanzen in meinem Konto erstellen (und dadurch Neustarts verursachen).
Wie kann ich das sperren?
Antwort1
Leider kann man das derzeit nicht auf Ressourcenebene festlegen. Es gibt eineReihe von EC2-Aktionendas keine Berechtigungen auf Ressourcenebene unterstützt und ec2:CreateImage
eines davon ist.
Antwort2
Beim Erstellen eines Images werden auch Snapshots erstellt, die an diese Instanz angehängt sind. Die folgende IAM-Richtlinie sollte funktionieren.
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:CreateSnapshot",
"ec2:CreateImage"
],
"Resource": [
"*"
]
}
Antwort3
Sie können CreateImage nicht auf Ressourcenebene sperren/begrenzen und die Antwort von @nkryption war richtig. http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html
Antwort4
CreateImage unterstützt jetzt Richtlinien auf Ressourcenebene. Die folgende Richtlinie ermöglicht das Erstellen eines Images, jedoch nur für die angegebene Instanz-ID:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCreateImage",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*::image/*"
},
{
"Sid": "RestrictCreateImageToInstance",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*:999999999999:instance/i-999999999",
}
]
}
Aktualisieren Sie die Kontonummer und die Instanz-ID entsprechend Ihren Anforderungen. Sie können dies auch anhand der Instanz-Tags einschränken:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCreateImage",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*::image/*"
},
{
"Sid": "RestrictCreateImageToInstances",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*:999999999999:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Name": "Test"
}
}
}
]
}