Amazon-Web-Services

AWS RDS CLI:在 CreateDBSnapshot 上拒絕訪問

  • May 6, 2015

我想使用AWS RDS 命令行工具來創建我的數據庫的快照,my-database使用create-db-snapshot.

我在IAM中創建了一個特殊的備份角色,其策略允許我描述、複製和創建快照。它看起來像這樣(我用 x 替換了敏感 id):

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

在使用該使用者配置 CLI 工具aws configure並輸入密鑰後,我嘗試通過執行以下命令來製作快照:

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

這會導致一條錯誤消息說:

呼叫 CreateDBSnapshot 操作時出現客戶端錯誤 (AccessDenied):使用者:arn:aws:iam::xxxxxxxxxxxxxx:user/automated-tasks is not authorized to perform:rds:CreateDBSnapshot on resource:arn:aws:rds:eu-west -1:xxxxxxxxxxxxxx:快照:我的數據庫備份-24-11-2014-11h07m

我認為這很奇怪,因為它表示拒絕訪問具有我為--db-snapshot-identifier參數指定的名稱的資源,與參數相反--db-instance-identifier

如果我有足夠的權限首先創建應用於實例的快照,那麼我不應該天生就擁有該快照的創建權限嗎?

無論如何,我嘗試將策略中的資源更改為 RDS 中的所有內容:

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

我希望這會起作用,因為現在我的角色對我帳戶的 RDS ARN 中的所有內容都具有創建快照權限,但事實並非如此。

有沒有人知道為什麼我的命令返回錯誤?

這確實很奇怪,但似乎CreateDBSnapshot權限也必須分配給目標快照。

該政策有效:

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

引用自:https://serverfault.com/questions/646610