AWS Secrets Manager 从哪里获得 AWS 凭证?
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);
问题是:
- 我能够成功检索到我创建的秘密并且
- 我没有在任何地方使用任何有效的 AWS 凭证数据创建凭证对象
此代码从哪里获取凭据信息?
AWS 开发工具包使用一种解析策略,该策略会在多个位置查找,直到找到可以使用的凭据。通常 DefaultProviderChain
class 负责执行解析。更多信息是 here,但要点是按以下顺序执行查找(对于 Java,其他语言类似):
- 环境变量
- Java 系统属性
- 凭据文件(例如 在主目录中)
- 实例配置文件凭据(仅当 运行在 AWS 中可用时可用)
当您 运行 在 AWS 基础设施中时,您可以将配置文件或角色分配给 运行 使用您的代码的资源。这样做会使凭据自动可用于您的代码。这个想法是,他们可以很容易地避免将凭据直接放入您的代码中。
如果您参考 API 的文档以了解这行代码:
IAmazonSecretsManager client = new AmazonSecretsManagerClient(
RegionEndpoint.GetBySystemName(region));
您将找到以下描述:
Constructs AmazonSecretsManagerClient with the credentials loaded from
the application's default configuration, and if unsuccessful from the
Instance Profile service on an EC2 instance.
这意味着您在 EC2 或 ECS 服务(或相关服务,例如 Beanstalk 等)上 运行 具有分配给实例的角色,或者您已经在标准中配置了您的凭据凭据文件中的方法。 AWS 开发工具包正在帮助您找到凭证。
本文档link 将更详细地解释如何管理和选择 AWS 凭据。
我看到很多开发人员在有关凭据的工作方式以及它们在 SDK 中的使用方式的小细节上犯了错误。鉴于 AWS 凭证持有 AWS 王国的钥匙,管理和保护它们至关重要。
我开始使用 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);
问题是:
- 我能够成功检索到我创建的秘密并且
- 我没有在任何地方使用任何有效的 AWS 凭证数据创建凭证对象
此代码从哪里获取凭据信息?
AWS 开发工具包使用一种解析策略,该策略会在多个位置查找,直到找到可以使用的凭据。通常 DefaultProviderChain
class 负责执行解析。更多信息是 here,但要点是按以下顺序执行查找(对于 Java,其他语言类似):
- 环境变量
- Java 系统属性
- 凭据文件(例如 在主目录中)
- 实例配置文件凭据(仅当 运行在 AWS 中可用时可用)
当您 运行 在 AWS 基础设施中时,您可以将配置文件或角色分配给 运行 使用您的代码的资源。这样做会使凭据自动可用于您的代码。这个想法是,他们可以很容易地避免将凭据直接放入您的代码中。
如果您参考 API 的文档以了解这行代码:
IAmazonSecretsManager client = new AmazonSecretsManagerClient(
RegionEndpoint.GetBySystemName(region));
您将找到以下描述:
Constructs AmazonSecretsManagerClient with the credentials loaded from the application's default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
这意味着您在 EC2 或 ECS 服务(或相关服务,例如 Beanstalk 等)上 运行 具有分配给实例的角色,或者您已经在标准中配置了您的凭据凭据文件中的方法。 AWS 开发工具包正在帮助您找到凭证。
本文档link 将更详细地解释如何管理和选择 AWS 凭据。
我看到很多开发人员在有关凭据的工作方式以及它们在 SDK 中的使用方式的小细节上犯了错误。鉴于 AWS 凭证持有 AWS 王国的钥匙,管理和保护它们至关重要。