
Ich möchte dieAWS RDS-Befehlszeilentoolum einen Snapshot meiner Datenbank zu erstellen my-database
mitcreate-db-snapshot
.
Ich habe eine spezielle Backup-Rolle erstellt inICH BINmit einer Richtlinie, die es mir erlaubt, Snapshots zu beschreiben, zu kopieren und zu erstellen. Das sieht so aus (ich habe sensible IDs durch ein x ersetzt):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxxxxxxxxxxx",
"Effect": "Allow",
"Action": [
"rds:CopyDBSnapshot",
"rds:CreateDBSnapshot",
"rds:DescribeDBSnapshots",
"rds:DescribeEventCategories",
"rds:DescribeEvents"
],
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database"
]
}
]
}
Nach der Konfiguration der CLI-Tools mitaws configure
und nachdem ich die Schlüssel für diesen Benutzer eingegeben hatte, versuchte ich, durch Ausführen des folgenden Befehls einen Snapshot zu erstellen:
aws rds create-db-snapshot \
--db-snapshot-identifier "my-database-backup-$(date +%d-%m-%Y-%Hh%Mm)" \
--db-instance-identifier "my-database"
Dies führt zu einer Fehlermeldung mit folgendem Inhalt:
Beim Aufrufen des Vorgangs „CreateDBSnapshot“ ist ein Clientfehler (AccessDenied) aufgetreten: Benutzer: arn:aws:iam::xxxxxxxxxxxxxx:user/automated-tasks ist nicht berechtigt, Folgendes auszuführen: rds:CreateDBSnapshot auf Ressource: arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:snapshot:my-database-backup-24-11-2014-11h07m
Ich fand das seltsam, weil dort steht, dass der Zugriff auf die Ressource mit dem Namen, den ich für das --db-snapshot-identifier
Argument angegeben habe, verweigert wird, und nicht auf das --db-instance-identifier
Argument selbst.
Wenn ich über ausreichende Berechtigungen zum Erstellen eines Snapshots verfüge, der auf eine Instanz angewendet wird, sollte ich dann nicht automatisch auch über die Erstellungsberechtigung für diesen Snapshot verfügen?
Wie dem auch sei, ich habe versucht, die Ressource in der Richtlinie auf alles innerhalb von RDS zu ändern:
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]
Ich hatte gehofft, dass dies funktionieren würde, da meine Rolle jetzt über die Berechtigung zum Erstellen von Snapshots für alles innerhalb der RDS-ARN meines Kontos verfügt, aber das tat es nicht.
Hat jemand eine Ahnung, warum mein Befehl einen Fehler zurückgibt?
Antwort1
Es ist zwar seltsam, aber es scheint, dass die CreateDBSnapshot
Berechtigung auch dem Ziel-Snapshot zugewiesen werden muss.
Diese Richtlinie funktioniert:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxxxxxxxxxxx",
"Effect": "Allow",
"Action": [
"rds:CreateDBSnapshot"
],
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database",
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:snapshot:*"
]
}
]
}