Amazon-Web-Services
AWS RDS CLI:在 CreateDBSnapshot 上拒絕訪問
我想使用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:*" ] } ] }