2015-03-27 4 views
2

Использование s3cmd ниже политика позволяет мне ListAllBuckets как это:политики Запрещение доступа на Amazon S3

s3cmd ls 

и ListBucket так:

s3cmd ls s3://backups/ 

, но я не могу загрузить файл, как это:

s3cmd put filename s3://backups/ 

Я просто получаю эту ошибку:

ERROR: S3 error: Access Denied 

Политика основана на поиске и множестве примеров в Интернете, но я просто не вижу, где это происходит. Политика заключается в том, чтобы позволить пользователю просто загружать файлы в каталог резервного копирования (в конечном итоге я даже не представляю, что они перечисляют ведра, но я сказал, что просто проверить, действительно ли политика была прочитана).

Другие, возможно, соответствующая информация -

  • Я создал ведро с помощью Dragon диск (передний конец для S3) с другим пользователем
  • Этот новый IAM пользователь подключен к политике по принадлежности к группе к которому прилагается политика.

Вот политика, обратите внимание, что CreateObject и PutObject были только два оригинальных записей, были добавлены почти только другие, чтобы посмотреть, что случилось:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListAllMyBuckets", 
       "s3:ListBucket" 
      ], 
      "Resource": "arn:aws:s3:::*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject", 
       "s3:PutObjectAcl", 
       "s3:PutObjectVersionAcl", 
       "s3:CreateObject", 
       "s3:*" 
      ], 
      "Resource": "arn:aws:s3:::backups/*" 
     } 
    ] 
} 

EDIT 1 -

Просто сказать, что если я добавляю эту политику он прекрасно работает, поэтому я знаю, что что-то делать с моей политикой:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "s3:*", 
     "Resource": "*" 
    } 
    ] 
} 

РЕДАКТИРОВАТЬ 2 - Я сделал еще одну политику, которую я использовал для создания ведра под названием «asdwasw432», на всякий случай, по какой-то причине мой созданный пользовательский интерфейс был непригодным. Но я до сих пор не могу загрузить файл (Access Denied). Я могу перечислить ведро и создать новые ведра. Весь совет, кажется, говорит мне делать то, что я делаю ниже, но никто, если он работает. Я что-то пропустил?

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1397834652000", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListAllMyBuckets" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::*" 
      ] 
     }, 
     { 
      "Sid": "Stmt1397834745000", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListBucket", 
       "s3:PutObject", 
       "s3:PutObjectAcl" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::asdwasw432", 
       "arn:aws:s3:::asdwasw432/*" 
      ] 
     } 
    ] 
} 

ответ

3

Ну, я исправил его, но я все еще смущен.

Оказывается, что, когда я побежал

s3cmd --configure 

я принял область по умолчанию «США». Это должно было быть настроено на «us-east-1».Я нашел это, запустив отладку

s3cmd -d ..etc... 

Это показал мне линию, которая содержала это -

'reason': 'Bad Request', 'data': '<?xml version="1.0" 
encoding="UTF-8"?>\n<Error><Code>AuthorizationHeaderMalformed</Code> 
<Message>The authorization header is malformed; the region \'US\' is 
wrong; expecting \'us-east-1\'</Message><Region>us-east-1</Region> 

Перезапуск конфиг и корректирующее область решить ее.

Пожалуйста, может кто-нибудь объяснить, почему я смог заставить его работать вообще с неправильным регионом, если регион действительно был проблемой? Совсем недавно я получил все, к работе, делая

Action : "*" 

, который привел меня еще один тупик, предполагая, я должен использовать неправильные команды. Просто для полноты картины, эта политика работает для меня (до тех пор, как регион правильно!):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListAllMyBuckets", 
       "s3:GetBucketLocation" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::*" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject", 
       "s3:PutObjectAcl" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::asdwasw432", 
       "arn:aws:s3:::asdwasw432/*" 
      ] 
     } 
    ] 
} 

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

+0

Прежде всего, спасибо за подробный обзор этой проблемы! Я столкнулся с той же проблемой и не мог понять, в чем проблема. ** Еще одно примечание ** к вашему ответу: в нашем случае он работает без настроек области/местоположения ковша в файле конфигурации (не обязательно), требуемое действие было 's3: GetBucketLocation'. При этом работает команда 's3cmd put', без этого нет (даже если область установлена ​​правильно). Я не уверен, что вы конкретно протестировали этот случай, но для нас 's3: GetBucketLocation' решил проблему. –

+1

@ViktorBenei - спасибо за это. Я еще не пробовал, что (спящие собаки оставили лгать на данный момент), но я сделал заметку, чтобы сделать это в ближайшее время. Я сообщу здесь, когда найду. – beigerac

+0

Спасибо! Наконечник о ведре должен был быть нами-восток-1 - это место! Я потратил несколько часов на отладку этого :-( – mkhatib

0
"Resource": "arn:aws:s3:::backups/*" 

... должно быть ...

"Resource": "arn:aws:s3:::your_bucket_name/backups/*" 

* вы используете в другом месте несколько работает случайно, потому что It'a интерпретируется как "все мои ведра."

+0

«резервные копии» - это имя ведра. Я добавил папку под резервными копиями, чтобы прочитать строку - «Ресурс»: «arn: aws: s3 ::: backups/newfolder/*» - но я все равно получаю тот же результат, Access Denied. – beigerac

+0

Может ли это быть с ARN? На самом деле я вообще не нахожу создание ARN. Я знаю, что он просит вас создать его, когда вы используете создателя политик в Интернете, но поскольку я этого не делал, я должен «регистрировать» эту строку arn где-нибудь? – beigerac

+0

Из всех возможных названий ковша вам удалось захватить один из них, называемый «резервные копии»? Ницца. Вам не нужно создавать ARN. Они описывают/идентифицируют ресурсы. http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-s3 –

Смежные вопросы