Подтвердить что ты не робот

Какие разрешения требуют django-хранилища для пользователя I3 s3?

Как задается вопрос, каковы минимальные требуемые разрешения для заблокированного пользователя s3 IAM для успешного использования django-хранилищ? В настоящее время я использовал что-то вроде

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListAllMyBuckets"],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket",
                 "s3:GetBucketLocation",
                 "s3:ListBucketMultipartUploads",
                 "s3:ListBucketVersions"],
      "Resource": "arn:aws:s3:::bucket-name"
    },
    {
      "Effect": "Allow",
      "Action": ["s3:*Object*",
                 "s3:ListMultipartUploadParts",
                 "s3:AbortMultipartUpload"],
      "Resource": "arn:aws:s3:::bucket-name/*"
    }
  ]
}

На самом деле это может быть излишним. Любые другие идеи?

4b9b3361

Ответ 1

Fiver-ответа недостаточно, чтобы запустить collectstatic в django-storages. Я использовал все, что делал @jvc26, за исключением s3:ListAllMyBuckets. Я бы предположил, что s3:ListBucketVersions не нужен.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket",
                 "s3:GetBucketLocation",
                 "s3:ListBucketMultipartUploads",
                 "s3:ListBucketVersions"],
      "Resource": "arn:aws:s3:::bucket-name"
    },
    {
      "Effect": "Allow",
      "Action": ["s3:*Object*",
                 "s3:ListMultipartUploadParts",
                 "s3:AbortMultipartUpload"],
      "Resource": "arn:aws:s3:::bucket-name/*"
    }
  ]
}

Ответ 2

Я не уверен на 100% о django-хранилищах, поскольку я использую cuddly-buddly, который основан на части S3 django- хранилища. Я просто нашел cuddlybuddly проще в использовании и работал лучше, плюс имя удивительно!

Во всяком случае, у меня есть проект с использованием Django + S3 и нашел следующую стратегию AWS как минимум, необходимый для моего проекта:

{
  "Version": "2008-10-17",
  "Id": "Policy123",
  "Statement": [
    {
      "Sid": "Stmt123",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::some-aws-user"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::bucket-name"
    },
    {
      "Sid": "Stmt234",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::some-aws-user"
      },
      "Action": [
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::bucket-name/*"
    }
  ]
}

У меня есть представления Django, которые необходимо загружать, извлекать и удалять, чтобы соответствующие действия могли быть использованы/опущены на основе ваших потребностей. Очевидно, кому-то нужно будет изменить имя пользователя и ведра.

Кроме того, для полноты, поскольку это было не очевидно для меня, обратите внимание на следующие ограничения в отношении правил AWS:

  • Максимальный размер политики - 20 КБ

  • Значение для ресурса должно иметь префикс имени ведра или имя ковша и путь под ним (ведро/). Если только имя ведра указанный, без трейлинга /, политика применяется к ведру.

  • Каждая политика должна иметь уникальный идентификатор политики (Id)

  • Каждый оператор в политике должен иметь уникальный идентификатор оператора (sid)

  • Каждая политика должна охватывать только один ведро и ресурсы в пределах этого bucket (при написании политики не включайте утверждения, которые ссылаются на другие ковши или ресурсы в других ведрах)

Наконец, кому угодно, не изменяйте значение даты в ключе Version, Amazon использует это значение для анализа формата политики.

Надеюсь, это поможет!

Ответ 3

который работает для меня:

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:ListBucketMultipartUploads",
                "s3:ListBucketVersions"
            ],
            "Resource": "arn:aws:s3:::bucket_name_here"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:*Object*",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "arn:aws:s3:::bucket_name_here/*"
        }
    ]
}