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();
相关推荐
测试运维日常笔记10 小时前
AWS EKS 集群部署与清理手顺
云计算·aws
故乡dee云1 天前
AWS 产品太多不会选?按“网站、数据库、文件、日志”4 类需求快速匹配
数据库·云计算·aws
翼龙云_cloud3 天前
亚马逊云代理商:VPC网络ACL和安全组配置实践 从网络层到实例层的双重防护
运维·网络·安全·云计算·aws
Freed&7 天前
阿里云 OSS 至 AWS S3 跨云迁移实施指南
阿里云·云计算·aws
故乡dee云9 天前
AWS CloudFront 使用教程:CDN 加速功能和网站部署优化
云计算·aws
国际云,接待13 天前
AWS RDS 备份与 PITR 恢复演练:从保留期、恢复命令到应用切换验证
运维·云计算·aws·灾难恢复·数据库备份·rds
国际云,接待15 天前
AWS账单防爆雷实战:Budgets、Cost Anomaly Detection与预算动作联动
人工智能·aws·twitter·finops·云成本·budgets
故乡dee云15 天前
AWS 月度账单怎么看?费用明细、扣款时间和结算规则说明
云计算·aws
xywww16817 天前
Claude Opus 5 API 接入实战:国内项目上线前的网络、Key、限流和排错清单
大数据·linux·网络·数据库·云计算·aws
Geek-Chow21 天前
ALB SSL policy conflict (AWS Load Balancer Controller)
网络协议·ssl·aws