[英]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.