Я пытаюсь использовать AWS S3 в качестве резервного хранилища
решение. В частности, я работаю с
s3ql для создания облачной файловой системы
и смонтировать его. С этой целью я создал политику IAM, которая должна
позволяют владельцу создавать и использовать соответствующие ведра.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::job/*",
"arn:aws:s3:::<bucket>/<object>",
"arn:aws:s3:::<bucket>"
]
}
]
}
Идея состояла в том, чтобы начать со всех привилегий s3, а затем уменьшить с
там. Однако этого недостаточно. Прежде всего я получаю предупреждение от
AWS о самих разрешениях. Во-вторых, я получаю доступ
сообщение отклонено от mkfs.s3ql
$ mkfs.s3ql s3://<region>/<bucket>/<directory>/test
Before using S3QL, make sure to read the user's guide, especially
the 'Important Rules to Avoid Losing Data' section.
Enter encryption password:
Confirm encryption password:
Generating random encryption key...
ERROR: Uncaught top-level exception:
Traceback (most recent call last):
File "/home/core/.local/bin/mkfs.s3ql", line 11, in <module>
load_entry_point('s3ql==3.1', 'console_scripts', 'mkfs.s3ql')()
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/mkfs.py", line 123, in main
backend['s3ql_passphrase'] = data_pw
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/common.py", line 197, in __setitem__
self.store(key, value)
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/common.py", line 307, in store
self.perform_write(lambda fh: fh.write(val), key, metadata)
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/common.py", line 108, in wrapped
return method(*a, **kw)
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/common.py", line 279, in perform_write
return fn(fh)
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/comprenc.py", line 389, in __exit__
self.close()
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/comprenc.py", line 383, in close
self.fh.close()
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/comprenc.py", line 548, in close
self.fh.close()
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/common.py", line 108, in wrapped
return method(*a, **kw)
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/s3c.py", line 909, in close
headers=self.headers, body=self.fh)
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/s3c.py", line 528, in _do_request
self._parse_error_response(resp)
File "/home/core/.local/lib/python3.6/site-packages/s3ql-3.1-py3.6-linux-x86_64.egg/s3ql/backends/s3c.py", line 561, in _parse_error_response
raise get_S3Error(tree.findtext('Code'), tree.findtext('Message'), resp.headers)
s3ql.backends.s3c.AccessDeniedError: AccessDenied: Access Denied
Однако, если я предприму действия, используя мою учетную запись суперпользователя, файловая система успешно создана.
$ mkfs.s3ql s3://<region>/<bucket>/<directory>/test --authfile=super_auth
Before using S3QL, make sure to read the user's guide, especially
the 'Important Rules to Avoid Losing Data' section.
Enter encryption password:
Confirm encryption password:
Generating random encryption key...
Creating metadata tables...
Dumping metadata...
Dumping metadata...
..objects..
..blocks..
..inodes..
..inode_blocks..
..symlink_targets..
..names..
..contents..
..ext_attributes..
Compressing and uploading metadata...
Wrote 155 bytes of compressed metadata.
Cycling metadata backups...
Backing up old metadata...
Please store the following master key in a safe location. It allows
decryption of the S3QL file system in case the storage objects holding
this information get corrupted:
---BEGIN MASTER KEY---
**** **** **** **** **** **** **** **** **** **** ****
---END MASTER KEY---
Очевидно, я бы не стал назначать полномочия суперпользователя для резервного копирования
скрипты. Есть ли способ определить, какие разрешения вызываются
какие ресурсы в процессе данного действия? Вообще это чувствует
как это было бы хорошим способом определения того, что наименее
привилегия.