AwsCredentialsProvider认证接口

一、介绍

1、简介

AwsCredentialsProvider 是 AWS SDK 中用于提供 AWS 身份验证凭证的一个接口。AWS SDK 中涉及身份验证和授权的操作都需要用到凭证,而 AwsCredentialsProvider 作为一种抽象,负责提供这些凭证。AwsCredentialsProvider 在 Java SDK 中尤为重要,它可以用于各种场景,比如访问 AWS 服务、执行 AWS CLI 命令、部署到 AWS 上等。

2、作用

AwsCredentialsProvider 是 AWS SDK 中的一个接口,用于提供 AwsCredentials(AWS 凭证),AwsCredentials 通常包含 AWS 的访问密钥 ID 和秘密访问密钥,可能还包括会话令牌(用于临时凭证)。

在 SDK 中使用凭证时,AwsCredentialsProvider 作为一个工厂接口负责提供合适的凭证。

3、好处

(1)灵活性:可以根据不同的运行环境自动选择不同的凭证提供方式,如在开发机器上使用本地文件,在 EC2 上使用实例元数据。

(2)安全性:通过使用 IAM 角色和 STS,临时凭证可以为应用程序提供更高的安全性,避免硬编码访问密钥。

(3)简化配置:AWS SDK 提供了多种方式来加载凭证,开发人员可以专注于业务逻辑,而无需关注如何管理凭证。

二、常见实现

AWS SDK 提供了一些常见的 AwsCredentialsProvider 实现方式,根据不同的场景自动选择合适的凭证提供方式:

1、DefaultCredentialsProvider

DefaultCredentialsProvider 是最常见的凭证提供器,它会按照以下顺序查找凭证:

  • 环境变量:首先检查环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,如果存在,使用这些凭证。
  • 系统属性:然后检查系统属性 aws.accessKeyIdaws.secretKey,如果存在,使用这些凭证。
  • 默认配置文件:检查默认的配置文件(~/.aws/credentials)中的凭证。
  • EC2 实例元数据服务:如果以上方式都没有找到凭证,DefaultCredentialsProvider 会尝试从 EC2 实例元数据中获取临时凭证(适用于 EC2 实例)。
  • ECS 环境:在 ECS 上运行时,它会尝试从 ECS 环境的凭证提供者中获取凭证。
2、ProfileCredentialsProvider

ProfileCredentialsProvider 从配置文件中的指定配置文件读取凭证。默认读取 ~/.aws/credentials 文件中的配置,支持多个配置文件和配置文件名称。

ProfileCredentialsProvider provider = new ProfileCredentialsProvider("my-profile");
AwsCredentials credentials = provider.resolveCredentials();

在实际开发中,AWS SDK 可以自动使用默认的 AwsCredentialsProvider,也可以手动配置。

例如,当你创建 AWS 服务客户端时,你可以传入一个自定义的凭证提供器:

S3Client s3 = S3Client.builder()
    .credentialsProvider(ProfileCredentialsProvider.create())
    .region(Region.US_WEST_2)
    .build();
3、EnvironmentVariableCredentialsProvider

此提供器从环境变量中读取 AWS 凭证。可以通过设置环境变量 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, 和 AWS_SESSION_TOKEN 来提供凭证。

AwsCredentialsProvider provider = EnvironmentVariableCredentialsProvider.create();
AwsCredentials credentials = provider.resolveCredentials();
4、SystemPropertyCredentialsProvider

此提供器从 JVM 系统属性中读取凭证。可以通过设置系统属性 aws.accessKeyIdaws.secretKey 来提供凭证。

AwsCredentialsProvider provider = SystemPropertyCredentialsProvider.create();
AwsCredentials credentials = provider.resolveCredentials();
5、EC2InstanceMetadataCredentialsProvider

此提供器专为 EC2 实例设计,它可以从 EC2 元数据服务中自动检索临时凭证。

AwsCredentialsProvider provider = EC2InstanceMetadataCredentialsProvider.create();
AwsCredentials credentials = provider.resolveCredentials();
6、STSAssumeRoleCredentialsProvider

如果你需要使用 AWS STS(Security Token Service)来假设一个角色,这个提供器非常有用。它会通过 STS 假设角色,并返回相应的临时凭证。

STSAssumeRoleCredentialsProvider assumeRoleProvider = 
    STSAssumeRoleCredentialsProvider.builder()
        .stsClient(stsClient)
        .roleArn("arn:aws:iam::123456789012:role/my-role")
        .build();
AwsCredentials credentials = assumeRoleProvider.resolveCredentials();
相关推荐
w_t_y_y8 小时前
aws凭证(一)凭证存储
云计算·aws
Lovely_red_scarf8 小时前
aws上安装ssm-agent
aws
九河云20 小时前
AWS账户被盗的风险与应对措施
服务器·安全·云计算·aws
嚯——哈哈21 小时前
全面解析亚马逊云服务器(AWS):功能、优势与使用指南
运维·服务器·aws
嚯——哈哈4 天前
AWS云服务:全面解读亚马逊的云计算平台与解决方案
云计算·aws
sealaugh324 天前
aws(学习笔记第十四课) 面向NoSQL DB的DynamoDB
数据库·学习·aws
w_t_y_y5 天前
aws凭证
云计算·aws
w_t_y_y5 天前
Amazon Web Services (AWS)
云计算·aws
汤米粥6 天前
通过PHP创建AWS的CloudFront并绑定证书添加备用域名
服务器·云计算·aws