本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
凭证和配置文件解析
AWS SDK for .NET按特定顺序搜索凭证,并对当前应用程序使用第一个可用集。
凭证搜索顺序
-
在 AWS 服务客户端上显式设置的凭证,如访问应用程序中的凭证和配置文件中所述。
注意
该主题之所以出现在特殊注意事项部分中,是因为它不是指定凭证的首选方法。
-
一个凭证配置文件,其名称由 AWSConfigs.AWSProfileName 中的值指定。
-
名称由
AWS_PROFILE
环境变量指定的凭证配置文件。 -
[default]
凭证配置文件。 -
根据
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和AWS_SESSION_TOKEN
环境变量 (如果这些变量都不为空) 创建的 SessionAWSCredentials。 -
根据
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量 (如果这两个变量不为空) 创建的 BasicAWSCredentials。 -
Amazon ECS 任务的任务的 IAM 角色。
-
Amazon EC2 实例元数据。
如果您的应用程序在 Amazon EC2 实例上运行(例如在生产环境中),请使用 IAM 角色,如 使用 IAM 角色授予访问权限 中所述。否则,例如在预发布测试中,将凭证存储在服务器上使用 AWS 凭证文件格式的文件中(Web 应用程序有权访问此文件)。
配置文件解析
凭证有两种不同的存储机制,请务必了解如何配置AWS SDK for .NET以使用它们。AWSConfigs.AWSProfilesLocation 属性控制AWS SDK for .NET如何查找凭证配置文件。
AWSProfilesLocation | 配置文件解析行为 |
---|---|
null (未设置) 或空 |
如果平台支持,请搜索 SDK Store,然后在默认位置搜索共享 AWS 凭证文件。如果配置文件不在上述任何一个位置,请搜索 |
AWS 凭证文件格式的文件的路径 |
仅 在指定文件中搜索具有指定名称的配置文件。 |
使用联合用户账户凭证
对于采用AWS SDK for .NET(AWSSDK.Core
联合访问支持意味着用户可使用您的 Active Directory 进行身份验证。系统将自动为用户授予临时凭证。当您的应用程序调用 AWS 服务时,将使用这些临时凭证 (有效期为 1 小时)。开发工具包将管理临时凭证。对于已加入域的用户账户,如果您的应用程序发出调用但凭证已过期,则将自动重新验证用户的身份并授予全新凭证。(对于未加入域的账户,在重新进行身份验证之前,系统将提示用户输入凭证。)
要在 .NET 应用程序中使用此支持,您必须先使用 PowerShell cmdlet 设置角色配置文件。要了解具体信息,请参阅AWS Tools for Windows PowerShell文档。
设置角色配置文件后,请在应用程序中引用该配置文件。有多种方法可以做到这一点,其中一种是像处理其他凭证配置文件一样使用 AWSConfigs.AWSProfileName 属性。
AWS Security Token Service 程序集(awssdk.securityToken
指定角色或临时凭证
对于 Amazon EC2 实例上运行的应用程序,管理凭证最安全的方式是使用 IAM 角色,如使用 IAM 角色授予访问权限中所述。
对于软件可执行文件对组织外部用户可用的应用程序情景,建议您将软件设计为使用临时安全凭证。除了提供对 AWS 资源的有限访问之外,让这些凭证在指定时段后过期也会有好处。有关临时安全凭证的更多信息,请参阅:
使用代理凭证
如果您的软件通过代理与 AWS 进行通信,则可使用服务的 Config
类的 ProxyCredentials
属性来为代理指定凭证。服务的 Config
类通常是该服务主命名空间的一部分。示例包括以下内容:Amazon.CloudDirectory 命名空间中的 AmazonCloudDirectoryConfig 和 Amazon.GameLift 命名空间中的 AmazonGameLiftConfig。
例如,对于 Amazon S3,您可以使用如下所示的代码,其中 SecurelyStoredUserName
和 SecurelyStoredPassword
为 NetworkCredential
AmazonS3Config config = new AmazonS3Config(); config.ProxyCredentials = new NetworkCredential(SecurelyStoredUserName, SecurelyStoredPassword);
注意
早期版本的开发工具包使用的是 ProxyUsername
和 ProxyPassword
,但这两个属性已被弃用。