簡體   English   中英

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);

問題在於1)我能夠成功檢索到我創建的密鑰,以及2)在任何地方都無法使用任何有效的AWS憑證數據創建憑證對象。 此代碼從何處獲取憑證信息?

AWS SDK使用一種解決方案策略,該策略會在多個位置進行查找,直到找到可以使用的憑證。 通常, DefaultProviderChain類負責執行解析。 更多信息在這里 ,但是要點是按以下順序執行查找(對於Java,其他語言類似):

  • 環境變量
  • Java系統屬性
  • 憑證文件( 例如 ,在主目錄中)
  • 實例配置文件憑證(僅在AWS中運行時可用)

在AWS基礎架構中運行時,您可以為運行代碼的資源分配配置文件或角色。 這樣做會使憑據自動可用於您的代碼。 這樣做的目的是使他們避免將憑據直接放入代碼中變得容易。

如果您在以下代碼行中引用API的文檔:

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

AmazonSecretsManagerClient

您將找到以下描述:

使用從應用程序的默認配置加載的憑據(如果在EC2實例上的實例配置文件服務中失敗)來構造AmazonSecretsManagerClient。

這意味着您正在以分配給實例的角色在EC2或ECS服務(或相關服務,例如Beanstalk等)上運行,或者您已經在憑據文件中的標准方法中配置了憑據。 AWS開發工具包正在幫助您查找憑證。

該文檔鏈接將更詳細地說明如何管理和選擇AWS憑證。

使用AWS憑證

我已經看到很多開發人員在憑據如何工作以及如何在SDK中使用憑據方面犯了一些小錯誤。 鑒於AWS憑證掌握着AWS王國的鑰匙,因此管理和保護它們至關重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM