AWS RDS CLI: Zugriff verweigert bei CreateDBSnapshot

AWS RDS CLI: Zugriff verweigert bei CreateDBSnapshot

Ich möchte dieAWS RDS-Befehlszeilentoolum einen Snapshot meiner Datenbank zu erstellen my-databasemitcreate-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 configureund 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-identifierArgument angegeben habe, verweigert wird, und nicht auf das --db-instance-identifierArgument 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 CreateDBSnapshotBerechtigung 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:*"
            ]
        }
    ]
}

verwandte Informationen