Ok I figured it out. If you're running Akeeba Backup with Amazon S3 using your root AWS credentials you should consider the following alternative.
First a warning. Amazon has not made it easy to setup additional login credentials. You'll need to work with a command line interface.
To get this working you'll need to do the following:
- Install and configure the Command Line Interface (CLI)
- Create a Group
- Give Group Access to S3 Bucket
- Create User and Add to Group
- Create Login Profile and Create Keys
- Test Access
These steps are detailed here: http://newtech.about.com/od/cloudcomputing/a/How-To-Setup-Amazon-Identity-And-Access-Management-Iam-With-S3-And-Cloudfront.htm
Note: when you're following the "Install & configure the Command line" instructions in the above tutorial, make sure to also add this into your system path:
%AWS_IAM_HOME%\bin
It seems they left that step out.
Once the CLI is working, here are the commands I ran (don't enter the lines with #Comments. Also enter them one at a time).
# Create the group
iam-groupcreate -g MYSITE-backup
# Create the user & add to the group
iam-usercreate -u MYSITE-backup -g MYSITE-backup
# Attach the policy to the group
iam-groupuploadpolicy -g MYSITE-backup -p MYSITE-backup -f L:\IAMCli-1.2.0\policy\MYSITE-backup.txt
# Get the credentials
iam-useraddkey -u MYSITE-backup
I've created a bucket for all site backups. Within that bucket I have folders for each site. I create credentials for each site and they can only access their subfolder. Also the credentials can only add backups. Backups can not be deleted or even downloaded. The only access the credential has is "PutObject" to upload the backup file. Here is my policy file (L:\IAMCli-1.2.0\policy\MYSITE-backup.txt):
{
"Statement":[{
"Sid":"XXXXXXXXXXXXXXX",
"Action"["s3:PutObject"
],
"Effect":"Allow",
"Resource":"arn:aws:s3:::MYBUCKET/MYSITE/*"
}
]
}
You can generate your own policy file here: http://awspolicygen.s3.amazonaws.com/policygen.html
Hopefully this brief overview guides you in the right direction.