Краткий ответ - нет, не используется базовая аутентификация.Но вот способ, который по сути такой же, как базовая аутентификация, и это проще, чем другие перечисленные решения.Я считаю, что это безопасно, но я точно не знаю.
Вы можете установить условия для блоков s3, которые соответствуют заголовкам в запросе.Например, вы можете использовать заголовки useragent
и referer
как нечто, эквивалентное имени пользователя и паролю в базовой аутентификации.Обычно useragent - это браузер и ОС (например, Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0)
, а referer - предыдущая веб-страница.
Вот пример политики s3 bucket, которая позволяет размещать объекты и получать объекты путем сопоставления useragent, иреферер (примечание изменить: BUCKETNAME
, USERNAME
, PASSWORD
, AWS_REGION
и FILENAME
к вашим данным):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "allow-username-and-password-access",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::BUCKETNAME/*",
"Condition": {
"StringEquals": {
"aws:UserAgent": "USERNAME",
"aws:Referer": "PASSWORD"
}
}
}
]
}
Чтобы поместить ресурс в корзину, вы можете использоватьзапрос curl вроде этого (примечание изменено: BUCKETNAME
, USERNAME
, PASSWORD
, AWS_REGION
и FILENAME
):
curl --user-agent USERNAME --referer PASSWORD --upload-file "FILENAME" --request PUT "https://s3-AWS_REGION.amazonaws.com/BUCKETNAME/FILENAME"
Чтобы получить ресурс, вы можете использовать что-то вроде этого:
curl --user-agent USERNAME --referer PASSWORD "https://s3-AWS_REGION.amazonaws.com/BUCKETNAME/FILENAME" > FILENAME
Еще раз, я считаю, что это безопасно, так как useragent и referer должны быть зашифрованы, если вы используете https, но, пожалуйста, сообщите мне, если это не так.