憑證和設定檔解析 - AWS SDK for .NET

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

憑證和設定檔解析

會依特定順序 AWS SDK for .NET 搜尋憑證,並使用目前應用程式的第一個可用集。

憑證搜尋順序
  1. 在 AWS 服務用戶端上明確設定的憑證,如 中所述存取應用程式中的認證和設定檔

    注意

    該主題位於 特殊考量區段中,因為它不是指定憑證的偏好方法。

  2. AWSConfigs.AWSProfileName 中以值指定的名稱命名的憑證設定檔。

  3. 具有AWS_PROFILE環境變數指定名稱的憑證設定檔。

  4. [default] 登入資料設定檔。

  5. 如果 SessionAWSCredentials 都是非空白的,則從 AWS_SECRET_ACCESS_KEYAWS_ACCESS_KEY_IDAWS_SESSION_TOKEN環境變數建立的 SWord。

  6. AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY環境變數建立的 BasicAWSCredentials,如果兩者都是非空的。

  7. 容器憑證提供者

  8. Amazon EC2 執行個體中繼資料。

如果您的應用程式在 Amazon EC2 執行個體上執行,例如在生產環境中執行,請使用 IAM 角色,如 所述使用 IAM 角色授予存取權。否則,例如在發行前測試中,將您的憑證存放在使用 Web 應用程式可在伺服器上存取之 AWS 憑證檔案格式的檔案中。

設定檔解析

透過兩種不同的憑證儲存機制,了解如何設定 AWS SDK for .NET 來使用它們非常重要。AWSConfigs.AWSProfilesLocation 屬性會控制 如何 AWS SDK for .NET 尋找憑證設定檔。

AWSProfilesLocation 設定檔解析行為

null (未設定) 或為空

如果 平台支援 SDK Store,請搜尋該 Word Store,然後在預設位置搜尋共用 AWS 憑證檔案。如果設定檔不在這些位置,請搜尋 ~/.aws/config(Linux 或 macOS) 或 %USERPROFILE%\.aws\config(Windows)。

AWS 憑證檔案格式的檔案路徑

搜尋指定的檔案中是否有特定名稱的設定檔。

使用聯合使用者帳戶憑證

使用 AWS SDK for .NET (AWSSDK) 的應用程式。核心版本 3.1.6.0 及更新版本) 可以透過 Active Directory 聯合服務 (AD FS) 使用聯合使用者帳戶,透過使用安全聲明標記語言 (SAML) 存取 AWS 服務。

聯合身分存取權支援表示使用者可以使用 Active Directory 進行身分驗證。自動授與臨時登入資料給使用者。這些臨時憑證在一小時內有效,會在您的應用程式叫用 AWS 服務時使用。SDK 會處理臨時憑證的管理。對於網域加入的使用者帳戶,如果您的應用程式呼叫過期,則會自動重新對使用者進行身分驗證和重新整理授與登入資料。(對於 non-domain-joined 帳戶,系統會提示使用者在重新驗證之前輸入憑證。)

若要在 .NET 應用程式中使用此支援,您必須先使用 PowerShell cmdlet 設定角色設定檔。若要了解如何操作,請參閱 AWS Tools for Windows PowerShell 文件

設定角色設定檔之後,請參考應用程式中的設定檔。有多種方法可以執行此操作,其中一個方法是使用 AWSConfigs.AWSProfileName 屬性,就像使用其他憑證設定檔一樣。

AWS Security Token Service 組件 (AWSSDK.SecurityToken) 提供 SAML 支援以取得 AWS 憑證。若要使用聯合使用者帳戶憑證,請確定您的應用程式可以使用此組件。

指定角色或臨時憑證

對於在 Amazon EC2 執行個體上執行的應用程式,管理憑證的最安全方法是使用 IAM 角色,如 中所述使用 IAM 角色授予存取權

對於您的組織外部使用者可以使用軟體可執行檔的應用程式案例,我們建議您設計軟體以使用臨時安全憑證。除了提供對 AWS 資源的限制存取之外,這些憑證還具有在指定期間後過期的優勢。如需臨時安全登入資料的詳細資訊,請參閱以下:

使用代理憑證

如果您的軟體 AWS 透過代理與 通訊,您可以使用 服務Config類別的 ProxyCredentials 屬性來指定代理的憑證。服務的Config類別通常是服務主要命名空間的一部分。範例包括:Amazon.CloudDirectory 命名空間AmazonCloudDirectoryConfig中的 AmazonGameLiftConfig Amazon.GameLift 命名空間中的 Word。

例如,對於 Amazon S3,您可以使用類似下列的程式碼,其中 SecurelyStoredUserNameSecurelyStoredPasswordNetworkCredential 物件中指定的代理使用者名稱和密碼。

AmazonS3Config config = new AmazonS3Config(); config.ProxyCredentials = new NetworkCredential(SecurelyStoredUserName, SecurelyStoredPassword);
注意

先前使用的 SDK ProxyUsername和 版本ProxyPassword,但這些屬性已棄用。