AWS Secrets Manager从哪里获得AWS凭证?

时间:2018-08-28 22:11:37

标签: amazon-web-services aws-secrets-manager

我开始使用Secrets Manager。

因此,我在AWS中创建了我的第一个秘密。在此过程中,它为我提供了一些示例代码。我将其放在一个小型应用程序中并运行。

这是代码:

String region = "us-east-1";
        string secret = "";

        MemoryStream memoryStream = new MemoryStream();

        IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(region));

        GetSecretValueRequest request = new GetSecretValueRequest();
        request.SecretId = "MySecretNameExample";

        GetSecretValueResponse response = null;
        response = client.GetSecretValue(request);

问题在于1)我能够成功检索创建的密钥,以及2)在任何地方都无法创建具有任何有效AWS凭证数据的Credentials对象。这段代码从哪里获取凭证信息?

2 个答案:

答案 0 :(得分:3)

AWS开发工具包使用一种解析策略,该策略会在多个位置进行查找,直到找到可以使用的凭证。通常,DefaultProviderChain类负责执行解析。更多信息是here,但要点是查找是按以下顺序执行的(对于Java,其他语言是相似的):

  • 环境变量
  • Java系统属性
  • 凭据文件(例如主目录中的
  • 实例配置文件凭证(仅在AWS中运行时可用)

在AWS基础架构中运行时,可以为运行代码的资源分配配置文件或角色。这样做会使凭据自动可用于您的代码。他们的想法是,他们可以轻松避免将凭据直接放入您的代码中。

答案 1 :(得分:2)

如果您在此代码行中引用API的文档,则:

TheadingMixIn

AmazonSecretsManagerClient

您将找到以下描述:

  

使用从以下位置加载的凭据构造AmazonSecretsManagerClient   应用程序的默认配置,如果未成功   EC2实例上的实例配置文件服务。

这意味着您正在以分配给实例的角色在EC2或ECS服务(或相关服务,例如Beanstalk等)上运行,或者您已在凭证文件中的标准方法中配置了凭证。 AWS开发工具包正在帮助您查找凭证。

此文档链接将更详细地说明如何管理和选择AWS凭证。

Working with AWS Credentials

我已经看到很多开发人员在凭据如何工作以及如何在SDK中使用凭据方面犯了一些小错误。鉴于AWS凭证掌握着AWS王国的钥匙,因此管理和保护它们至关重要。