CLI de AWS RDS: acceso denegado en CreateDBSnapshot

CLI de AWS RDS: acceso denegado en CreateDBSnapshot

quiero usar elHerramienta de línea de comandos de AWS RDSpara crear una instantánea de mi base de datos my-databaseusandocreate-db-snapshot.

He creado una función de respaldo especial enSOYcon una política que me permite describir, copiar y crear instantáneas. Se ve así (he reemplazado las identificaciones confidenciales con una x):

{
  "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"
      ]
    }
  ]
}

Después de configurar las herramientas CLI conaws configuree ingresando las claves para este usuario, intenté hacer una instantánea ejecutando este comando:

aws rds create-db-snapshot \
    --db-snapshot-identifier "my-database-backup-$(date +%d-%m-%Y-%Hh%Mm)" \
    --db-instance-identifier "my-database"

Esto da como resultado un mensaje de error que dice:

Se produjo un error de cliente (AccessDenied) al llamar a la operación CreateDBSnapshot: Usuario: arn:aws:iam::xxxxxxxxxxxxxx:user/automated-tasks no está autorizado a realizar: rds:CreateDBSnapshot en el recurso: arn:aws:rds:eu-west -1:xxxxxxxxxxxxxx:instantánea:copia de seguridad-de-mi-base-de-datos-24-11-2014-11h07m

Pensé que esto era extraño, ya que dice que se deniega el acceso al recurso con el nombre que he especificado para el --db-snapshot-identifierargumento, en contraposición al --db-instance-identifierargumento.

Si tengo permisos suficientes para crear una instantánea aplicada a una instancia en primer lugar, ¿no debería tener inherentemente permisos de creación para esa instantánea?

De todos modos, intenté cambiar el recurso en la política a todo lo que esté dentro de RDS:

"Resource": [
    "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]

Esperaba que esto funcionara porque ahora mi función tiene permisos de creación de instantáneas para todo lo que esté dentro del ARN RDS de mi cuenta, pero no fue así.

¿Alguien tiene alguna idea de por qué mi comando devuelve un error?

Respuesta1

De hecho, es extraño, pero parece que el CreateDBSnapshotpermiso también debe asignarse a la instantánea de destino.

Esta política funciona:

{
    "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:*"
            ]
        }
    ]
}

información relacionada