Minio:存储桶策略与 anonymous/authorized 访问权限有何关系?
Minio: How's bucket policy related to anonymous/authorized access?
Minio 有 each bucket 的政策。其中包含:
- 只读
- 只写
- 读+写
- None
这些与 anonymous/authorized 访问文件夹有什么关系?
就像说我想让一堆文件以只读方式提供给没有凭据(访问密钥和秘密密钥)的用户。我该怎么做?
Minio 客户端提供的存储桶策略是 AWS S3 提供的相同存储桶策略的抽象版本。
客户端根据桶和前缀的输入字符串构造策略JSON。
- ReadOnly 表示 - 允许匿名下载访问包括被
能够列出所需前缀的对象
- WriteOnly 表示 - 允许匿名上传,包括能够
列出所需前缀的未完成上传
- 读写 - 匿名访问上传和下载所有对象。
这也意味着完整的 public 访问权限。
- None - 是默认值(无政策),这意味着所有操作都需要
针对所需的存储桶和前缀进行身份验证。
一堆文件应该驻留在一个特定的前缀下,可以只读访问。假设您的前缀是 '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);
}
}
}
调用成功后,'my-prefix/read-only/downloads' 中的所有对象都是 public 可读的,即没有 access/secret 键。
'public' 是有效政策...
您可以更改此政策:
安装 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 set {policy} {host}/{bucket}
mc policy set public local/mybucket
Minio 有 each bucket 的政策。其中包含:
- 只读
- 只写
- 读+写
- None
这些与 anonymous/authorized 访问文件夹有什么关系?
就像说我想让一堆文件以只读方式提供给没有凭据(访问密钥和秘密密钥)的用户。我该怎么做?
Minio 客户端提供的存储桶策略是 AWS S3 提供的相同存储桶策略的抽象版本。
客户端根据桶和前缀的输入字符串构造策略JSON。
- ReadOnly 表示 - 允许匿名下载访问包括被 能够列出所需前缀的对象
- WriteOnly 表示 - 允许匿名上传,包括能够 列出所需前缀的未完成上传
- 读写 - 匿名访问上传和下载所有对象。 这也意味着完整的 public 访问权限。
- None - 是默认值(无政策),这意味着所有操作都需要 针对所需的存储桶和前缀进行身份验证。
一堆文件应该驻留在一个特定的前缀下,可以只读访问。假设您的前缀是 '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);
}
}
}
调用成功后,'my-prefix/read-only/downloads' 中的所有对象都是 public 可读的,即没有 access/secret 键。
'public' 是有效政策...
您可以更改此政策: 安装 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 set {policy} {host}/{bucket} mc policy set public local/mybucket