Как получить доступ к S3 bucket cli без входа в систему - PullRequest
0 голосов
/ 10 июля 2020

Я хочу создать сегмент, к которому пользователи в определенном диапазоне IP-адресов смогут получить доступ без входа в систему. Таким образом, эти пользователи должны иметь возможность свободно загружать файлы в это ведро без входа в систему. И я хочу получить доступ к этим файлам из лямбда-выражения, используя ссылку на файл S3, предоставленную моими пользователями.

Я сначала пытаюсь разрешить кому угодно для доступа к корзине без входа в систему перед добавлением ограничений IP.


Я сделал bucket publi c с этой политикой:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-public-bucket/*"
        }
    ]
}

Я также дал доступ publi c через ACL для записи в корзину:

S3 ACL ui

Right now if I try to access the link (https://s3.console.aws.amazon.com/s3/buckets/my-public-bucket/?region=us-west-2&tab=overview) в корзину в режиме инкогнито, я получаю следующее:

image

I thought I could use the static web hosting url (http://my-public-bucket.s3-website-us-west-2.amazonaws.com), но это только для размещения веб-сайтов.

Единственный ли вариант - создать новую роль IAM и передать ее учетные данные пользователям? Это очень неприятный пользовательский опыт, и я хочу избежать этого.

1 Ответ

1 голос
/ 11 июля 2020

Консоль управления Amazon S3 требует наличия большого количества разрешений для «правильной» работы, таких как возможность перечисления всех сегментов, возможность перечисления сегментов и т. Д. c.

Если ваша цель - предоставить определенным c пользователям доступ к корзине, сначала рассмотрите КАК они будут обращаться к корзине . Если они будут автоматизировать процесс, то использование AWS CLI - хороший вариант, поскольку его можно легко создать с помощью сценария. Кроме того, требуются только определенные разрешения c (например, PutObject).

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

Если AWS CLI слишком "недружелюбен" для этих пользователей, то такие утилиты, как CyberDuck, могут предоставить знакомый интерфейс перетаскивания для S3 . Однако для этого требуются те же учетные данные, что и для AWS CLI.

Вы можете предоставить анонимный доступ к корзине , ограниченный диапазоном IP-адресов, но им нужно будет взаимодействовать через направлять POST-сообщения в корзину, предположительно через веб-сайт, который вы им предоставляете. Это связано с тем, что все вызовы API должны быть аутентифицированы.

...