当前位置: 首页 > article >正文

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();


http://www.kler.cn/a/402515.html

相关文章:

  • 【初阶数据结构和算法】leetcode刷题之设计循环队列
  • ChatGPT 桌面版发布了,如何安装?
  • 『 Linux 』网络层 - IP协议 (二)
  • Mysql 字符集和查询区分大小写影响
  • 安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!
  • 监控报警系统的指标、规则与执行闭环
  • Python运算符列表
  • C++设计模式之适配器模式与桥接模式,装饰器模式及代理模式相似点与不同点
  • 数据结构 【带环单链表】
  • 【Chatgpt】如何通过分层Prompt生成更加细致的图文内容
  • Android开发实战班 - 数据持久化 - Room 数据库应用
  • Spark Catalyst 优化器具有高度的可扩展性,如何自定义优化规则?
  • Zero-Shot Next-Item Recommendation using Large Pretrained Language Models-问题咨询
  • 阿里云 DevOps 资源安全扫描实践
  • nginx配置不缓存资源
  • Spark SQL大数据分析快速上手-完全分布模式安装
  • LLM( Large Language Models)典型应用介绍 1 -ChatGPT Large language models
  • 3_Flink CDC
  • Eagle-OJ 开源的在线编程训练平台
  • Mybatis框架之适配器模式 (Adapter Pattern)
  • ReactPress:基于pnpm的Mono Repository方案介绍
  • Docker用法详解
  • Docker-Compose 快速部署安装 Nginx 或其他应用
  • uniapp页面样式和布局和nvue教程详解
  • 2020 年 9 月青少年软编等考 C 语言三级真题解析
  • Django实现智能问答助手-进一步完善