中的共享凭证AmazonTools for PowerShell - Amazon Tools for PowerShell
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

中的共享凭证AmazonTools for PowerShell

适用于 Windows PowerShell 的工具支持使用Amazon共享凭据文件,类似于AmazonCLI 和其他Amazon开发工具包。适用于 Windows PowerShell 的工具现在支持读取和写入basicsession, 和assume role凭证配置文件添加到 .NET 凭证文件和Amazon共享凭据文件。新的 Amazon.Runtime.CredentialManagement 命名空间支持此功能。

新的配置文件类型和访问Amazon共享凭证文件受以下参数支持,这些参数已添加到凭证相关 cmdlet 中,初始化 AWSDecure 配置New-AWSCredential, 和设置可操作。在服务 cmdlet 中,您可以通过添加通用参数 -ProfileName 来引用配置文件。

将 IAM 角色与AmazonTools for PowerShell

Amazon 共享凭证文件启用其他类型的访问。例如,您可以访问Amazon资源,而不是 IAM 用户的长期凭证。为此,您必须有一个具有代入该角色的权限的标准配置文件。当你告诉AmazonTools for PowerShell 可以使用指定角色的配置文件AmazonTools for PowerShell 的工具查找由SourceProfile参数。这些凭证用于为由 RoleArn 参数指定的角色请求临时凭证。当此角色由第三方代入时,您可以选择要求使用多重身份验证 (MFA) 设备或 ExternalId 代码。

参数名称 描述

ExternalId

代入角色时要使用的用户定义的外部 ID (如果角色需要)。通常仅在将账户的访问权限委派给第三方时才需要。代入指定角色时,第三方必须包含 ExternalId 作为参数。有关更多信息,请参阅 。如何在向您授予访问权时使用外部 IDAmazon向第三方提供的资源中的IAM 用户指南

MfaSerial

代入角色时要使用的 MFA 序列号 (如果角色需要)。有关更多信息,请参阅 。在 中使用 Multi-Factor Authentication (MFA)Amazon中的IAM 用户指南

RoleArn

要代入的角色的 ARN,用于代入角色凭证。有关创建和使用角色的更多信息,请参阅IAM 角色中的IAM 用户指南

SourceProfile

代入角色凭证要使用的源配置文件的名称。在此配置文件中找到的凭证用于代入由 RoleArn 参数指定的角色。

代入角色的配置文件设置

以下示例展示了如何设置可直接代入 IAM 角色的源配置文件。

第一个命令创建由角色配置文件引用的源配置文件。第二个命令创建要代入哪个角色的角色配置文件。第三个命令显示角色配置文件的凭证。

PS > Set-AWSCredential -StoreAs my_source_profile -AccessKey access_key_id -SecretKey secret_key PS > Set-AWSCredential -StoreAs my_role_profile -SourceProfile my_source_profile -RoleArn arn:aws:iam::123456789012:role/role-i-want-to-assume PS > Get-AWSCredential -ProfileName my_role_profile SourceCredentials RoleArn RoleSessionName Options ----------------- ------- --------------- ------- Amazon.Runtime.BasicAWSCredentials arn:aws:iam::123456789012:role/role-i-want-to-assume aws-dotnet-sdk-session-636238288466144357 Amazon.Runtime.AssumeRoleAWSCredentialsOptions

要将此角色配置文件与适用于的 Windows PowerShell 的工具服务 cmdlet 一起使用,请添加-ProfileName通用参数添加到命令以引用角色配置文件。以下示例使用上一示例中定义的角色配置文件访问获取-S3 桶cmdlet。AmazonTools for PowerShell 的工具会在my_source_profile,使用这些凭据调用AssumeRole,然后使用这些临时角色证书调用Get-S3Bucket

PS > Get-S3Bucket -ProfileName my_role_profile CreationDate BucketName ------------ ---------- 2/27/2017 8:57:53 AM 4ba3578c-f88f-4d8b-b95f-92a8858dac58-bucket1 2/27/2017 10:44:37 AM 2091a504-66a9-4d69-8981-aaef812a02c3-bucket2

使用凭证配置文件类型

要设置凭证配置文件类型,需要了解哪些参数提供配置文件类型所需的信息。

凭证类型 必须使用的参数

基本

这些是 IAM 用户的长期凭证

-AccessKey

-SecretKey

会话

这些是您手动检索的 IAM 角色的短期凭证,例如通过直接调用使用 STS角色cmdlet。

-AccessKey

-SecretKey

-SessionToken

角色

这些是 IAM 角色的短期凭证Amazon为您检索 PowerShell 的工具。

-SourceProfile

-RoleArn

可选:-ExternalId

可选:-MfaSerial

ProfilesLocation 通用参数

您可以使用 -ProfileLocation 写入共享凭证文件以及指示 cmdlet 从凭证文件中读取。添加-ProfileLocation参数可控制适用于 Windows PowerShell 的工具是使用共享凭证文件还是 .NET 凭证文件。下表描述了适用于 Windows PowerShell 的工具中的参数的工作原理。

配置文件位置值 配置文件解析行为

null (未设置) 或空

首先,在 .NET 凭证文件中搜索具有指定名称的配置文件。如果找不到该配置文件,则在以下位置搜索 Amazon 共享凭证文件:(user's home directory)\.aws\credentials

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

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

将凭证保存到凭证文件

要编写凭证并将其保存到两个凭证文件中的一个,请运行 Set-AWSCredential cmdlet。下面的示例演示了具体做法。第一个命令使用 Set-AWSCredential 以及 -ProfileLocation 向由 -ProfileName 参数指定的配置文件添加访问密钥和秘密密钥。在第二行中,运行 Get-Content cmdlet 以显示凭证文件内容。

PS > Set-AWSCredential -ProfileLocation C:\Users\auser\.aws\credentials -ProfileName basic_profile -AccessKey access_key2 -SecretKey secret_key2 PS > Get-Content C:\Users\auser\.aws\credentials aws_access_key_id=access_key2 aws_secret_access_key=secret_key2

显示您的凭证配置文件

运行 Get-AWSCredential cmdlet 并添加 -ListProfileDetail 参数以返回凭证文件类型和位置以及配置文件名称列表。

PS > Get-AWSCredential -ListProfileDetail ProfileName StoreTypeName ProfileLocation ----------- ------------- --------------- source_profile NetSDKCredentialsFile assume_role_profile NetSDKCredentialsFile basic_profile SharedCredentialsFile C:\Users\auser\.aws\credentials

删除凭证配置文件

要删除凭证配置文件,请运行新的 Remove-AWSCredentialProfile cmdlet。Clear-AWSCredential 已弃用,但仍可用于向后兼容。

重要提示

只有 Initialize-AWSDefaultConfigurationNew-AWSCredentialSet-AWSCredential 支持角色配置文件的参数。您不能直接在命令上指定角色参数,例如 Get-S3Bucket -SourceProfile source_profile_name -RoleArn arn:aws:iam::999999999999:role/role_name。这不起作用,因为服务 cmdlet 不直接支持 SourceProfileRoleArn 参数。而是您必须将这些参数存储在配置文件中,然后使用 -ProfileName 参数调用命令。