Minio:与匿名/授权访问相关的存储桶策略如何?

时间:2017-03-06 02:17:21

标签: minio

Minio有each bucket的政策。其中包含:

  • ReadOnly
  • WriteOnly
  • 读取+写入

这些是如何与匿名/授权访问文件夹相关的?
比如说我希望将一堆文件作为只读文件提供给没有凭据的用户(访问密钥和密钥)。我该怎么做?

2 个答案:

答案 0 :(得分:10)

Minio客户端提供的存储桶策略是AWS S3提供的相同存储桶策略的抽象版本。

客户端根据存储桶和前缀的输入字符串构造策略JSON。

  • ReadOnly表示 - 允许匿名下载访问包括 能够列出所需前缀的对象
  • WriteOnly表示 - 允许匿名上传包括能够 列出所需前缀的不完整上传
  • 读写 - 匿名访问以上载和下载所有对象。 这也意味着完全公开访问。
  • 无 - 是默认值(无策略),表示所有操作都需要 通过所需的存储桶和前缀进行身份验证。

可以使特定前缀下的一堆文件可用于只读访问。让我们说你的前缀是“我的前缀/只读/下载”#39;那么如果你正在使用

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);
    }
  }
}

一旦您的通话成功,“我的前缀/只读/下载”内的所有对象都会被取消。是公开可读的,即没有访问/密钥。

答案 1 :(得分:2)

'公共'是有效的政策...

您可以更改此政策: 安装mc(minio客户端),然后:

# 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 {policy} {host}/{bucket}
mc policy public local/mybucket