凭证和配置文件解析 - AWS SDK for .NET

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

凭证和配置文件解析

按特定顺序 AWS SDK for .NET 搜索凭证,并使用当前应用程序的第一组可用凭证。

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

    注意

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

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

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

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

  5. AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN环境变量创建的 S essionAWSCredentials,如果它们都是非空的。

  6. AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量创建的 B asicAWSCredentials(如果它们都为非空)。

  7. 容器凭证提供商

  8. Amazon EC2 实例元数据。

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

配置文件解析

由于有两种不同的凭证存储机制,因此了解如何配置 AWS SDK for .NET 以使用它们非常重要。的AWSConfigs。 AWSProfilesLocation属性控制如何 AWS SDK for .NET 查找凭据配置文件。

AWSProfilesLocation 配置文件解析行为

null (未设置) 或空

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

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

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

使用联合用户账户凭证

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

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

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

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

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

指定角色或临时凭证

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

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

使用代理凭证

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

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

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

SDK使用了ProxyUsername和的早期版本ProxyPassword,但这些属性已被弃用。