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

Dan*_*iel 10 minio

Minio有针对每个存储桶的策略.其中包含:

  • 只读
  • 只写
  • 读+写
  • 没有

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

Har*_*ana 13

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

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

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

应该驻留在特定前缀下的一堆文件可用于只读访问.让我们说如果你使用的话,你的前缀是'my-prefix/read-only/downloads'

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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

一旦您的呼叫成功,"my-prefix/read-only/downloads"中的所有对象都是公共可读的,即没有访问/密钥.

  • 为了清楚(所以你可以从`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`如果我不能制作一个特定的工作示例,我发现它很混乱,所以在这里. (2认同)

小智 10

“公开”是有效的政策...

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

# 安装后列出默认主机: 
mc 配置主机 ls

# 删除所有主机: mc config host rm {hostName}
mc 配置主机 rm 本地

# 添加你的主机: mc config host add {hostName} {url} {apiKey} {apiSecret}
mc 配置主机添加本地 http://127.0.0.1:9000 ClientIdASSDSD ClientSecretASASASdsasdasdasdasd

# 创建存储桶: mc mb {host}/{bucket}
mc mb 本地/mybucket

# 更改存储桶策略:mc policy set {policy} {host}/{bucket}
mc 策略设置公共本地/mybucket

  • `mc policy set public local/mybucket` 现在是设置策略的命令 (5认同)