凭证和配置文件解析 - 适用于 .NET 的 Amazon SDK(V3)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 .NET 的 Amazon SDK 版本 4(V4)已经发布!

要开始使用新版本的 SDK,请参阅 适用于 .NET 的 Amazon SDK(V4)开发人员指南,尤其是关于迁移到版本 4 的主题。

凭证和配置文件解析

适用于 .NET 的 Amazon SDK按特定顺序搜索凭证,并对当前应用程序使用第一个可用集。

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

    注意

    该主题之所以出现在特殊注意事项部分中,是因为它不是指定凭证的首选方法。

  2. 一个凭证配置文件,其名称由 AWSConfigs.AWSProfileName 中的值指定。

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

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

  5. 根据 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN 环境变量 (如果这些变量都不为空) 创建的 SessionAWSCredentials

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

  7. 容器凭证提供程序

  8. Amazon EC2 实例元数据。

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

配置文件解析

凭证有两种不同的存储机制,请务必了解如何配置适用于 .NET 的 Amazon SDK以使用它们。AWSConfigs.AWSProfilesLocation 属性控制适用于 .NET 的 Amazon SDK如何查找凭证配置文件。

AWSProfilesLocation 配置文件解析行为

null (未设置) 或空

如果平台支持,请搜索 SDK Store,然后在默认位置搜索共享 Amazon 凭证文件。如果配置文件不在上述任何一个位置,请搜索 ~/.aws/config(Linux 或 macOS)或 %USERPROFILE%\.aws\config(Windows)。

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

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

使用联合用户账户凭证

对于采用适用于 .NET 的 Amazon SDK(AWSSDK.Core 版本 3.1.6.0 和更高版本)的应用程序,可以通过 Active Directory Federation Services(AD FS)使用联合用户账户来利用安全断言标记语言(SAML)访问 Amazon 服务。

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

要在 .NET 应用程序中使用此支持,您必须先使用 PowerShell cmdlet 设置角色配置文件。要了解具体信息,请参阅Amazon Tools for Windows PowerShell文档

设置角色配置文件后,请在应用程序中引用该配置文件。有多种方法可以做到这一点,其中一种是像处理其他凭证配置文件一样使用 AWSConfigs.AWSProfileName 属性。

Amazon Security Token Service 程序集(awssdk.securityToken)提供 SAML 支持以获取 Amazon 凭证。要使用联合用户账户凭证,请确保您的应用程序可以使用此程序集。

指定角色或临时凭证

对于 Amazon EC2 实例上运行的应用程序,管理凭证最安全的方式是使用 IAM 角色,如使用 IAM 角色授予访问权限中所述。

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

使用代理凭证

如果您的软件通过代理与 Amazon 进行通信,则可使用服务的 Config 类的 ProxyCredentials 属性来为代理指定凭证。服务的 Config 类通常是该服务主命名空间的一部分。示例包括以下内容:Amazon.CloudDirectory 命名空间中的 AmazonCloudDirectoryConfigAmazon.GameLift 命名空间中的 AmazonGameLiftConfig

例如,对于 Amazon S3,您可以使用如下所示的代码,其中 SecurelyStoredUserNameSecurelyStoredPasswordNetworkCredential 对象中指定的代理用户名和密码。

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

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