凭证和配置文件解析 - 适用于 .NET 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

凭证和配置文件解析

会按特定顺序适用于 .NET 的 AWS 开发工具包搜索凭证,并对当前应用程序使用第一个可用集。

注意

本主题中有关配置文件和凭证优先顺序的信息以 .NET Core 和 ASP.NET Core 为中心,与 .NET Framework 的类似信息不同。

此外,有关使用 .NET Framework 机制(如 App.config 和 )指定配置文件的信息Web.config不适用于 .NET Core,因此不存在。

如果您要查找 .NET Framework 信息,请改为参阅指南的版本 3。

凭证搜索顺序

  1. 在AWS服务客户端上显式设置的凭证,如中所述访问应用程序中的凭证和配置文件

    注意

    该主题位于 特殊考虑 部分中,因为它不是指定凭证的首选方法。

  2. 具有由 中的值指定的名称的凭证配置文件AWSConfigs.AWSProfileName

  3. 具有由 AWS_PROFILE 环境变量指定的名称的凭证配置文件。

  4. [default] 凭证配置文件。

  5. SessionAWSCredentialsAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN 环境变量(如果这些变量都不为空)创建的 。

  6. BasicAWSCredentials 根据 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量(如果这两个变量不为空)创建的 。

  7. 任务的 IAM 角色Amazon ECS。

  8. Amazon EC2 实例元数据。

如果您的应用程序在 Amazon EC2 实例上运行,例如在生产环境中,请使用 IAM 角色,如中所述使用 AWS IAM 角色。否则,例如在预发布测试中,将凭证存储在一个文件中,该文件使用 Web 应用程序有权访问服务器上的AWS凭证文件格式。

配置文件解析

借助两种不同的凭证存储机制,请务必了解如何配置 适用于 .NET 的 AWS 开发工具包 以使用它们。AWSConfigs.AWSProfilesLocation 属性控制 适用于 .NET 的 AWS 开发工具包 查找凭证配置文件的方式。

AWSProfilesLocation 配置文件解析行为

null (未设置) 或空

如果平台支持开发工具包商店,则搜索 ,然后在AWS默认位置搜索共享凭证文件。如果配置文件不在任一位置,请搜索 ~/.aws/config (Linux 或 macOS)或 %USERPROFILE%\.aws\config (Windows)。

AWS 凭证文件格式的文件的路径

搜索具有指定名称的配置文件的指定文件。

使用联合用户账户凭证

使用 适用于 .NET 的 AWS 开发工具包 (AWSSDK.Core 版本 3.1.6.0 及更高版本)的应用程序可以通过 Active Directory 联合身份验证服务 (AD FS) 使用联合用户账户,通过安全断言标记语言 (SAML) 访问 AWS 服务。

联合访问支持意味着用户可使用您的 Active Directory 进行身份验证。系统将自动为用户授予临时凭证。当您的应用程序调用 AWS 服务时,将使用这些临时凭证(有效期为 1 小时)。开发工具包将管理临时凭证。对于已加入域的用户账户,如果您的应用程序发出调用但凭证已过期,则将自动重新验证用户的身份并授予全新凭证。(对于未加入域的账户,在重新进行身份验证之前,系统将提示用户输入凭证。)

要在 .NET 应用程序中使用此支持,您必须先使用 PowerShell cmdlet 设置角色配置文件。要了解如何操作,请参阅 适用于 Windows PowerShell 的 AWS 工具 文档

在设置角色配置文件后,请在应用程序中引用该配置文件。可通过多种方式执行此操作,其中一种方式是使用 AWSConfigs.AWSProfileName 属性,方式与其他凭证配置文件相同。

AWS Security Token Service 程序集 (AWSSDK.SecurityToken) 提供 SAML 支持以获取AWS凭证。要使用联合用户账户凭证,请确保该程序集对您的应用程序可用。

指定 角色或临时凭证

对于在 Amazon EC2 实例上运行的应用程序,管理凭证的最安全方法是使用 IAM 角色,如中所述使用 AWS IAM 角色

对于软件可执行文件可用于组织外部用户的应用程序场景,我们建议您将软件设计为使用临时安全凭证。除了提供对 AWS 资源的有限访问之外,这些凭证还具有在指定时间段后过期的好处。有关临时安全凭证的更多信息,请参阅:

使用代理凭证

如果您的软件AWS通过代理与 进行通信,您可以使用服务ProxyCredentials类的 Config 属性为代理指定凭证。服务的Config类通常是服务的主命名空间的一部分。示例包括AmazonCloudDirectoryConfig 命名空间https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/CloudDirectory/NCloudDirectory.html中的 和 Amazon.GameLiftAmazonGameLiftConfig 命名空间https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/GameLift/NGameLift.html中的 。

例如,对于 Amazon S3 ,您可以使用类似于以下内容的代码,其中 {my-username} 和 {my-password} 是 NetworkCredential 对象中指定的代理用户名和密码。

AmazonS3Config config = new AmazonS3Config(); config.ProxyCredentials = new NetworkCredential("my-username", "my-password");
注意

早期版本的开发工具包使用的是 ProxyUsernameProxyPassword,但这两个属性已被弃用。