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

在 Amazon Tools for PowerShell 中共享凭证

Tools for Windows PowerShell 支持使用Amazon共享凭证文件,类似于 Amazon CLI 和其他Amazon开发工具包。Tools for Windows PowerShell 现在支持在 .NET 凭证文件和Amazon共享凭证文件中读取和写入 basicsessionassume role 凭证配置文件。新的 Amazon.Runtime.CredentialManagement 命名空间支持此功能。

已添加到凭证相关 cmdlet Initialize-AWSDefaultConfigurationNew-AWSCredentialSet-AWSCredential 的以下参数支持新配置文件类型和Amazon共享凭证文件访问。在服务 cmdlet 中,您可以通过添加通用参数 -ProfileName 来引用配置文件。

将 IAM 角色与 Amazon Tools for PowerShell 结合使用

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

参数名称 描述

ExternalId

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

MfaSerial

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

RoleArn

要代入的角色的 ARN,用于代入角色凭证。有关创建和使用 IAM 角色的更多信息,请参阅 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

要将此角色配置文件与 Tools for Windows PowerShell 服务 cmdlet 一起使用,请将 -ProfileName 通用参数添加到命令以引用角色配置文件。以下示例使用上一示例中定义的角色配置文件访问 Get-S3Bbucket cmdlet。Amazon Tools 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 角色的短期凭证,例如通过直接调用 Use-STSRole cmdlet。

-AccessKey

-SecretKey

-SessionToken

角色

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

-SourceProfile

-RoleArn

可选:-ExternalId

可选:-MfaSerial

ProfilesLocation 通用参数

您可以使用 -ProfileLocation 写入共享凭证文件以及指示 cmdlet 从凭证文件中读取。添加 -ProfileLocation 参数可以控制 Tools for Windows PowerShell 是使用共享凭证文件还是 .NET 凭证文件。下表描述了参数在 Tools for 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 参数调用命令。