安全凭证服务(STS)
STS即Secure Token Service 是一种安全凭证服务,可以使用STS来完成对于临时用户的访问授权。对于跨用户短期访问s3资源时,可以使用STS服务。这样就不需要透露主账号AK/SK,只需要生成一个短期访问凭证给需要的用户使用即可,避免主账号AK/SK泄露带来的安全风险。
在服务器端生成临时token,参考:
实现一个CredentialsProvider,支持更新ak/sk和token。
public class MyCredentialsProvider implements AWSCredentialsProvider {
private AWSCredentials credentials;
public MyCredentialsProvider(String ak, String sk, String token) {
this.credentials = new BasicSessionCredentials(ak, sk, token);
}
public synchronized AWSCredentials getCredentials() {
return credentials;
}
public synchronized void refresh() {
}
// 更新ak,sk,token
public synchronized void updateCred(String ak, String sk, String token) {
this.credentials = new BasicSessionCredentials(ak, sk, token);
}
}
使用临时token
String accessKey = "<your-access-key>";
String secretKey = "<your-secret-access-key>";
String endPoint = "<your-endpoint>";
String sessionToken = "<your-session-token>";
MyCredentialsProvider credProvider = new MyCredentialsProvider(accessKey, secretKey, sessionToken);
ClientConfiguration clientConfig = new ClientConfiguration();
clientConfig.setProtocol(Protocol.HTTP);
AmazonS3Client mS3Client = new AmazonS3Client(credProvider, clientConfig);
mS3Client.setEndpoint(endPoint);