【问题标题】:Where does AWS Secrets Manager get AWS Credentials?AWS Secrets Manager 从哪里获取 AWS 凭证?
【发布时间】:2019-02-03 14:49:54
【问题描述】:

我开始使用 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 对象

此代码从哪里获取凭据信息?

【问题讨论】:

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


    【解决方案1】:

    如果您参考这行代码的 API 文档:

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

    AmazonSecretsManagerClient

    你会发现以下描述:

    使用从加载的凭证构造 AmazonSecretsManagerClient 应用程序的默认配置,如果从 EC2 实例上的实例配置文件服务。

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

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

    Working with AWS Credentials

    我看到很多开发人员在凭证的工作方式以及它们在 SDK 中的使用方式方面都搞错了。鉴于 AWS 凭证持有 AWS 王国的钥匙,因此管理和保护它们至关重要。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我浏览了提供的“默认凭据提供程序链”链接。我们的应用程序以两种方式运行。 1. 使用 EC2 的 docker 2. 使用 Fargate 的 ECS。 1. 如果应用程序运行在EC-2内部的docker上,如何进行配置? (不使用容器内的任何物理文件
      • @RuchiraKariyawasam 看到这个问题stackoverflow.com/questions/22409367/…
      • 谢谢。是的,如果角色分配给 EC-2 或 ECS,那么实例或 docker 都可以访问 AWS 元数据服务。
      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 2022-06-10
      • 1970-01-01
      • 2020-11-06
      • 2020-08-23
      • 1970-01-01
      • 2023-03-18
      • 2022-09-23
      相关资源
      最近更新 更多