Минио: Как политика корзины связана с анонимным/авторизованным доступом?

В Minio есть политики для каждое ведро. Который содержит:

  • Только для чтения
  • WriteOnly
  • Чтение + запись
  • Никто

Как это связано с анонимным/авторизованным доступом к папкам?
Например, я хочу сделать кучу файлов доступными только для чтения для пользователей без учетных данных (ключ доступа и секретный ключ). Как мне это сделать?


person Daniel    schedule 06.03.2017    source источник


Ответы (2)


Политики корзин, предоставляемые на стороне клиента Minio, представляют собой абстрактную версию тех же политик корзин, которые предоставляет AWS S3.

Клиент создает политику JSON на основе входной строки сегмента и префикса.

  • Только чтение означает, что анонимный доступ к загрузке разрешен, включая возможность перечисления объектов с желаемым префиксом.
  • WriteOnly означает, что анонимные загрузки разрешены, включая возможность перечисления незавершенных загрузок с нужным префиксом.
  • Чтение-запись - анонимный доступ для загрузки и скачивания всех объектов. Это также означает полный публичный доступ.
  • Нет — по умолчанию (без политики), это означает, что все операции должны быть аутентифицированы в отношении нужного сегмента и префикса.

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

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;

import org.xmlpull.v1.XmlPullParserException;

import io.minio.MinioClient;
import io.minio.policy.PolicyType;
import io.minio.errors.MinioException;

public class SetBucketPolicy {
  /**
   * MinioClient.setBucketPolicy() example.
   */
  public static void main(String[] args)
    throws IOException, NoSuchAlgorithmException, InvalidKeyException, XmlPullParserException {
    try {
      /* play.minio.io for test and development. */
      MinioClient minioClient = new MinioClient("https://play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F",
                                                "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");

      /* Amazon S3: */
      // MinioClient minioClient = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID",
      //                                           "YOUR-SECRETACCESSKEY");

      minioClient.setBucketPolicy("my-bucketname", "my-prefix/read-only/downloads", PolicyType.READ_ONLY);
    } catch (MinioException e) {
      System.out.println("Error occurred: " + e);
    }
  }
}

Как только ваш вызов будет успешным, все объекты внутри «my-prefix/read-only/downloads» станут общедоступными для чтения, т.е. без доступа/секретного ключа.

person Harshavardhana    schedule 06.03.2017
comment
Благодарю за разъяснение. Как я могу сделать некоторые файлы приватными? Вроде нет анонимного (чтения) доступа? - person Daniel; 06.03.2017
comment
По умолчанию все ваши файлы являются личными, нет специального вызова, чтобы сделать их личными. - person Harshavardhana; 06.03.2017
comment
просто для ясности (чтобы вы могли протестировать из curl), URL-адрес, по которому вы фактически получите доступ к файлу, — https://play.minio.io:9000/my-bucketname/<path>, где <path> в приведенном выше примере — my_prefix/read-only/downloads, предположительно вы создали этот путь. Если бы у вас был просто файл file.jpg в ведре, у вас был бы префикс `` в приведенном выше вызове, а URL-адрес был бы https://play.minio.io:9000/my-bucketname/file.jpg Я сбился с толку, если бы не смог создать конкретный рабочий пример, так что вот он. - person Paul S; 03.10.2017
comment
Интересно узнать, как это сделать в Python - person Robert Johnstone; 01.09.2020

"public" - действующая политика...

Вы можете изменить эту политику: установите mc (мини-клиент), а затем:

# list default hosts after install: 
mc config host ls

# remove all hosts: mc config host rm {hostName}
mc config host rm local

# add your host: mc config host add {hostName} {url} {apiKey} {apiSecret}
mc config host add local http://127.0.0.1:9000 ClientIdASSDSD ClientSecretASASASdsasdasdasdasd

# create bucket: mc mb {host}/{bucket}
mc mb local/mybucket

# change bucket policy: mc policy set {policy} {host}/{bucket}
mc policy set public local/mybucket
person Cumbu    schedule 02.11.2017
comment
mc policy set public local/mybucket теперь является командой для установки политики - person Hodossy Szabolcs; 06.04.2020