[英]Where does AWS Secrets Manager get AWS Credentials?
我开始与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凭证数据创建凭证对象。 此代码从何处获取凭证信息?
AWS SDK使用一种解决方案策略,该策略会在多个位置进行查找,直到找到可以使用的凭证。 通常, DefaultProviderChain
类负责执行解析。 更多信息在这里 ,但是要点是按以下顺序执行查找(对于Java,其他语言类似):
在AWS基础架构中运行时,您可以为运行代码的资源分配配置文件或角色。 这样做会使凭据自动可用于您的代码。 这样做的目的是使他们避免将凭据直接放入代码中变得容易。
如果您在以下代码行中引用API的文档:
IAmazonSecretsManager client = new AmazonSecretsManagerClient(
RegionEndpoint.GetBySystemName(region));
您将找到以下描述:
使用从应用程序的默认配置加载的凭据(如果在EC2实例上的实例配置文件服务中失败)来构造AmazonSecretsManagerClient。
这意味着您正在以分配给实例的角色在EC2或ECS服务(或相关服务,例如Beanstalk等)上运行,或者您已经在凭据文件中的标准方法中配置了凭据。 AWS开发工具包正在帮助您查找凭证。
该文档链接将更详细地说明如何管理和选择AWS凭证。
我已经看到很多开发人员在凭据如何工作以及如何在SDK中使用凭据方面犯了一些小错误。 鉴于AWS凭证掌握着AWS王国的钥匙,因此管理和保护它们至关重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.