Наименьшая привилегия, необходимая для s3ql на AWS s3 - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь использовать 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 о самих разрешениях. enter image description here Во-вторых, я получаю доступ сообщение отклонено от 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---

Очевидно, я бы не стал назначать полномочия суперпользователя для резервного копирования скрипты. Есть ли способ определить, какие разрешения вызываются какие ресурсы в процессе данного действия? Вообще это чувствует как это было бы хорошим способом определения того, что наименее привилегия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...