STS相关接口 STS即Secure Token Service 是一种安全凭证服务,可以使用STS来完成对于临时用户的访问授权。对于跨用户短期访问对象存储资源时,可以使用STS服务。这样就不需要透露主账号AK/SK,只需要生成一个短期访问凭证给需要的用户使用即可,避免主账号AK/SK泄露带来的安全风险。 初始化STS服务 java String accessKey " "; String secretKey " "; String endPoint " "; BasicAWSCredentials credentials new BasicAWSCredentials(accessKey, secretKey); AwsClientBuilder.EndpointConfiguration endpointConfiguration new AwsClientBuilder.EndpointConfiguration(endPoint, Regions.DEFAULTREGION.getName()); return AWSSecurityTokenServiceClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withEndpointConfiguration(endpointConfiguration) .build(); 获取临时token java private static final String DEFAULTBUCKET " "; private static final String ROLESESSIONNAME " "; private static final String ARN "arn:aws:iam:::role/xxxxxx"; private static final String POLICY "{"Version":"20121017"," + ""Statement":" + "{"Effect":"Allow"," ""Action":["s3:"]," // 允许进行 S3 的所有操作。如果仅需要上传,这里可以设置为 PutObject ""Resource":["arn:aws:s3:::" + DEFAULTBUCKET + "","arn:aws:s3:::" + DEFAULTBUCKET + "/"]"// 允许操作默认桶中的所有文件,可以修改此处来保证操作的文件 "}}"; public static void assumeRole() { try { AWSSecurityTokenService stsClient buildSTSClient(); AssumeRoleRequest assumeRoleRequest new AssumeRoleRequest(); assumeRoleRequest.setRoleArn(ARN); assumeRoleRequest.setPolicy(POLICY); assumeRoleRequest.setRoleSessionName(ROLESESSIONNAME); assumeRoleRequest.setDurationSeconds(60602); // 单位秒,有效时间,默认1小时,最长12小时 System.out.println("policy" + POLICY); AssumeRoleResult assumeRoleRes stsClient.assumeRole(assumeRoleRequest); Credentials stsCredentials assumeRoleRes.getCredentials(); System.out.println("ak" + stsCredentials.getAccessKeyId()); System.out.println("sk" + stsCredentials.getSecretAccessKey()); System.out.println("token" + stsCredentials.getSessionToken()); } catch (Exception e) { e.printStackTrace(); } }