本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 AWS Tools for PowerShell 中共享凭证
Tools for Windows PowerShell 支持使用AWS共享凭证文件,类似于 AWS CLI 和其他AWS开发工具包。Tools for Windows PowerShell 现在支持在 .NET 凭证文件和AWS共享凭证文件中读取和写入 basic
、session
和 assume role
凭证配置文件。新的 Amazon.Runtime.CredentialManagement
命名空间支持此功能。
警告
为了避免安全风险,在开发专用软件或处理真实数据时,请勿使用 IAM 用户进行身份验证。而是使用与身份提供商的联合身份验证,例如 AWS IAM Identity Center。
注意
已添加到凭证相关 cmdlet Initialize-AWSDefaultConfiguration、New-AWSCredential 和 Set-AWSCredential 的以下参数支持新配置文件类型和AWS共享凭证文件访问。在服务 cmdlet 中,您可以通过添加通用参数 -ProfileName
来引用配置文件。
将 IAM 角色与 AWS Tools for PowerShell 结合使用
AWS 共享凭证文件启用其他类型的访问。例如,您可以使用 IAM 角色而不是 IAM 用户的长期凭证来访问您的AWS资源。为此,您必须有一个具有代入该角色的权限的标准配置文件。当您告知 AWS Tools for PowerShell 使用指定角色的配置文件时,AWS Tools for PowerShell将查找由 SourceProfile
参数标识的配置文件。这些凭证用于为由 RoleArn
参数指定的角色请求临时凭证。当此角色由第三方代入时,您可以选择要求使用多重身份验证 (MFA) 设备或 ExternalId
代码。
参数名称 | 描述 |
---|---|
ExternalId |
代入角色时要使用的用户定义的外部 ID (如果角色需要)。通常仅在将账户的访问权限委派给第三方时才需要。代入指定角色时,第三方必须包含 ExternalId 作为参数。有关更多信息,请参阅 IAM 用户指南中的如何在向第三方授予对AWS资源的访问权时使用外部 ID。 |
MfaSerial |
代入角色时要使用的 MFA 序列号 (如果角色需要)。有关更多信息,请参阅 IAM 用户指南中的在AWS中使用多重身份验证 (MFA)。 |
RoleArn |
要代入的角色的 ARN,用于代入角色凭证。有关创建和使用 IAM 角色的更多信息,请参阅 IAM 用户指南中的 IAM 角色。 |
SourceProfile |
代入角色凭证要使用的源配置文件的名称。在此配置文件中找到的凭证用于代入由 |
代入角色的配置文件设置
以下示例显示如何设置可直接代入 IAM 角色的源配置文件。
第一个命令创建由角色配置文件引用的源配置文件。第二个命令创建要代入哪个角色的角色配置文件。第三个命令显示角色配置文件的凭证。
PS >
Set-AWSCredential -StoreAs
my_source_profile
-AccessKeyaccess_key_id
-SecretKeysecret_key
PS >
Set-AWSCredential -StoreAs
my_role_profile
-SourceProfilemy_source_profile
-RoleArnarn: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。AWS 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 用户的长期凭证 |
|
会话: 这些是您手动检索的 IAM 角色的短期凭证,例如通过直接调用 Use-STSRole cmdlet。 |
|
角色: 这些是 AWS Tools for PowerShell 为您检索的 IAM 角色的短期凭证。 |
可选: 可选: |
ProfilesLocation
通用参数
您可以使用 -ProfileLocation
写入共享凭证文件以及指示 cmdlet 从凭证文件中读取。添加 -ProfileLocation
参数可以控制 Tools for Windows PowerShell 是使用共享凭证文件还是 .NET 凭证文件。下表描述了参数在 Tools for Windows PowerShell 中的工作方式。
配置文件位置值 | 配置文件解析行为 |
---|---|
null (未设置) 或空 |
首先,在 .NET 凭证文件中搜索具有指定名称的配置文件。如果找不到该配置文件,则在以下位置搜索 AWS 共享凭证文件: |
AWS 共享凭证文件格式的文件的路径 |
仅在指定文件中搜索具有给定名称的配置文件。 |
将凭证保存到凭证文件
要编写凭证并将其保存到两个凭证文件中的一个,请运行 Set-AWSCredential
cmdlet。下面的示例演示了具体做法。第一个命令使用 Set-AWSCredential
以及 -ProfileLocation
向由 -ProfileName
参数指定的配置文件添加访问密钥和秘密密钥。在第二行中,运行 Get-Content
PS >
Set-AWSCredential -ProfileLocation C:\Users\auser\.aws\credentials -ProfileName basic_profile -AccessKey access_key2 -SecretKey secret_key2PS >
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-AWSDefaultConfiguration、New-AWSCredential 和 Set-AWSCredential 支持角色配置文件的参数。您不能直接在命令上指定角色参数,例如 Get-S3Bucket
。这不起作用,因为服务 cmdlet 不直接支持 -SourceProfile
source_profile_name -RoleArn
arn:aws:iam::999999999999:role/role_name
SourceProfile
或 RoleArn
参数。而是您必须将这些参数存储在配置文件中,然后使用 -ProfileName
参数调用命令。