java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Minio以STS方式获得临时凭据

在Minio以STS方式获得临时凭据过程

作者:兔子先生°

MinIO通过STS(Security Token Service)机制提供临时访问凭证,提升安全性,临时凭证具有时效性、权限受限和不可长期持有的特点,有效避免长期密钥泄露和精细化权限控制,MinIO兼容AWSS3的STS API,无需额外部署组件,通过创建策略和用户并绑定策略

前言

在使用对象存储服务(如MinIO)时,安全性始终是首要考虑的问题。直接将长期访问密钥(Access Key 和 Secret Key)暴露给前端应用或不可信的客户端,存在极大的安全风险——一旦泄露,攻击者可能长期非法访问存储资源。

为了解决这一问题,MinIO 提供了基于 ​​STS(Security Token Service,安全令牌服务)​​ 的临时凭据机制,允许用户动态获取具有有限权限和有效期的临时访问凭证,既满足业务需求,又大幅提升安全性。

一、STS 临时凭据的核心概念

什么是 STS?

STS 是一种安全服务,允许用户通过调用接口动态申请临时访问凭证(包括临时 Access Key、Secret Key 和 Security Token)。这些临时凭证具有以下特性:

为什么需要 STS?

二、MinIO 对 STS 的支持

MinIO 完全兼容 AWS S3 的 STS API(基于 AWS Signature V4),因此可以直接使用 AWS 官方文档中的 STS 接口规范(如 AssumeRole)。

MinIO 的 STS 服务默认内置于服务中,无需额外部署组件,只需正确配置即可使用。

关键点:

三、配置

1.创建策略


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}

2.创建用户,绑定策略


3.通过Java 获得凭据

    public CredentialsToken getCredentials() {
        try {
            AssumeRoleProvider provider = new AssumeRoleProvider(OssConfiguration.endpoint, OssConfiguration.stsUser,
                    OssConfiguration.stsPassword, Math.toIntExact(OssConfiguration.expire),
                    null, OssConfiguration.region, null, null, null, null);
            Credentials credential = provider.fetch();
            return new CredentialsToken(credential.accessKey(), credential.secretKey(), credential.sessionToken(), OssConfiguration.expire);
        } catch (NoSuchAlgorithmException e) {
            log.debug("Failed to obtain sts.");
            e.printStackTrace();
        }
        return null;
    }

总结

通过 MinIO 的 STS 机制,开发者可以安全地实现“按需授权、临时访问”的对象存储方案,有效平衡业务灵活性与数据安全性。

无论是前端直传、第三方集成还是多租户场景,STS 都是推荐的实践方式。结合自定义策略和合理的有效期设置,能够进一步降低安全风险,构建可靠的云存储架构。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文