CLI do AWS RDS: acesso negado em CreateDBSnapshot

CLI do AWS RDS: acesso negado em CreateDBSnapshot

Eu quero usar oFerramenta de linha de comando AWS RDSpara criar um instantâneo do meu banco de dados my-databaseusandocreate-db-snapshot.

Eu criei uma função de backup especial emEU SOUcom uma política que me permite descrever, copiar e criar instantâneos. Fica assim (substituí os IDs confidenciais por um 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"
      ]
    }
  ]
}

Depois de configurar as ferramentas CLI comaws configuree inserindo as chaves deste usuário tentei fazer um snapshot executando este comando:

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

Isso resulta em uma mensagem de erro dizendo:

Ocorreu um erro de cliente (AccessDenied) ao chamar a operação CreateDBSnapshot: Usuário: arn:aws:iam::xxxxxxxxxxxxxxx:user/automated-tasks não está autorizado a executar: rds:CreateDBSnapshot no recurso: arn:aws:rds:eu-west -1:xxxxxxxxxxxxxxx:instantâneo:backup-do-meu-banco-de-dados-24-11-2014-11h07m

Achei estranho, pois diz que o acesso foi negado ao recurso com o nome que especifiquei para o --db-snapshot-identifierargumento, em oposição ao --db-instance-identifierargumento.

Se eu tiver permissões suficientes para criar um instantâneo aplicado a uma instância, não deveria ter inerentemente permissões de criação para esse instantâneo?

De qualquer forma, tentei alterar o recurso da política para tudo dentro do RDS:

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

Eu esperava que isso funcionasse porque agora minha função tem permissões de criação de instantâneo para tudo dentro do ARN do RDS da minha conta, mas isso não aconteceu.

Alguém tem alguma ideia de por que meu comando retorna um erro?

Responder1

É realmente estranho, mas parece que a CreateDBSnapshotpermissão também deve ser atribuída ao instantâneo 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:*"
            ]
        }
    ]
}

informação relacionada