
私は使いたいAWS RDS コマンドラインツールデータベースのスナップショットを作成するにmy-database
はcreate-db-snapshot
。
私は特別なバックアップロールを作成しました私はスナップショットを記述、コピー、作成できるポリシーを設定します。次のようになります (機密 ID は 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"
]
}
]
}
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 には、リソース arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:snapshot:my-database-backup-24-11-2014-11h07m に対する rds:CreateDBSnapshot を実行する権限がありません
引数--db-snapshot-identifier
ではなく、引数に指定した名前のリソースへのアクセスが拒否されると表示されるので、これは奇妙だと思いました。--db-instance-identifier
そもそもインスタンスに適用されるスナップショットを作成するための十分な権限を持っている場合、そのスナップショットに対する作成権限も本質的に持っているべきではないでしょうか?
とにかく、ポリシー内のリソースを RDS 内のすべてのものに変更してみました。
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]
これで私のロールにはアカウントの RDS ARN 内のすべてのスナップショット作成権限が付与されたので、これが機能することを期待していましたが、機能しませんでした。
私のコマンドがエラーを返す理由について、手がかりを持っている人はいますか?
答え1
確かに奇妙ですが、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:*"
]
}
]
}