2016-10-13 2 views
0

Я только что начал использовать AWS для своего проекта. Я хочу написать проект, который загружает критические файлы в ведро s3. Я не хочу раскрывать секретные ключи, чтобы все остальные разработчики/пользователи могли получить доступ к загруженным документам. Прежде всего укажите, с чего начать.Java AWS SDK - Как загрузить файл с использованием профиля IAM из Java API

Моя текущая реализация:

return new AmazonS3Client(new AWSCredentials() { 
    @Override 
    public String getAWSAccessKeyId() { 
    return accessKey; 
    } 

    @Override 
    public String getAWSSecretKey() { 
    return accessKeySecret; 
    }, clientConfiguration) 

Затем я использую amazonS3Client.putObject (putReq); для загрузки файла. Итак, здесь я раскрываю свои ключи, которые позволяют другому коллеге загружать/просматривать файлы. Любой может использовать его для загрузки/выгрузки файла из s3cmd, плагинов браузера и т. Д.

При чтении документов AWS я узнал, что могу использовать экземпляр EC2 и настроить профиль IAM. BUt Я не уверен, как это сделать с java-кодом. Пожалуйста, укажите ссылку и пример

+0

Возможный дубликат http://stackoverflow.com/questions/15076645/amazon-s3-write-only-access Этот вопрос дает каждому пользователю отдельную папку в ведро S3 - пользователи не имеют доступ к папкам друг друга –

+0

Я думаю, что этот вопрос больше посвящен вопросу получения учетных данных из роли IAM экземпляра. – jbird

+0

Это не помешает «разоблачить мои ключи, которые позволят другому коллеге загрузить/просмотреть файлы», не так ли? –

ответ

1

Посмотрите на класс InstanceProfileCredentialsProvider. Он получает учетные данные IAM (доступ/секретный ключ) из метаданных экземпляра. Запустите свой экземпляр в роли IAM, который имеет политику, разрешающую доступ к S3.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials (новый InstanceProfileCredentialsProvider()) .build();

Source reference

0

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

Что вы можете сделать, это предоставить им ключи, которые имеют разрешения на загрузку файлов на S3, но не имеют права на чтение/загрузку. Таким образом, у вас будет политика загрузки с разрешения PutObject и политика чтения с разрешениями List/Get.

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