

的版本 5 (V5) AWS Tools for PowerShell 已经发布！

有关重大更改和迁移应用程序的信息，请参阅[迁移主题](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)。

 [https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)

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

# 中的共享凭据 AWS Tools for PowerShell
<a name="shared-credentials-in-aws-powershell"></a>

Windows 工具 PowerShell 支持使用 AWS 共享凭据文件，类似于 AWS CLI 和其他 AWS SDKs。Windows 工具 PowerShell 现在支持读取和写入.NET `assume role` 凭据文件和 AWS 共享凭据文件`session`、以及凭据配置文件。`basic`新的 `Amazon.Runtime.CredentialManagement` 命名空间支持此功能。

**警告**  
为了避免安全风险，在开发专用软件或处理真实数据时，请勿使用 IAM 用户进行身份验证，而是使用与身份提供者的联合身份验证，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

**注意**  
本主题中的信息适用于需要手动获取和管理短期或长期凭证的情况。有关短期和长期凭证的更多信息，请参阅*AWS SDKs 和工具参考指南*中的[其他身份验证方式](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)。  
要了解最佳安全实践，请使用 AWS IAM Identity Center，如中所述[使用进行身份验证 AWS](creds-idc.md)。

[已添加到凭据相关的 cmdlet 中的以下参数（[初始化-AWSDefault 配置、新建和设置-）支持[新的](https://docs.aws.amazon.com/powershell/v5/reference/items/New-AWSCredential.html)配置](https://docs.aws.amazon.com/powershell/v5/reference/items/Initialize-AWSDefaultConfiguration.html)文件类型和对 AWS 共享凭证文件的访问权限。AWSCredential AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Set-AWSCredential.html)在服务 cmdlet 中，您可以通过添加通用参数 `-ProfileName` 来引用配置文件。

## 将 IAM 角色与配合使用 AWS Tools for PowerShell
<a name="shared-credentials-assume-role"></a>

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


****  

| 参数名称 | 说明 | 
| --- | --- | 
|  ExternalId  |  代入角色时要使用的用户定义的外部 ID (如果角色需要)。通常仅在将账户的访问权限委派给第三方时才需要。第三方在担任分配的角色时必须将 ExternalId 作为参数包括在内。有关更多信息，请参阅 *IAM 用户指南*中的[如何在向第三方授予对您的 AWS 资源的访问权限时使用外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)。  | 
|  MfaSerial  |  代入角色时要使用的 MFA 序列号 (如果角色需要)。有关更多信息，请参阅 *IAM 用户指南*中的[在 AWS中使用多重身份验证 (MFA)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)。  | 
|  RoleArn  |  要代入的角色的 ARN，用于代入角色凭证。有关创建和使用 IAM 角色的更多信息，请参阅 [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)中的 *IAM 角色*。  | 
|  SourceProfile  |  代入角色凭证要使用的源配置文件的名称。在此配置文件中找到的凭证用于代入由 `RoleArn` 参数指定的角色。  | 

### 代入角色的配置文件设置
<a name="setup"></a>

以下示例显示如何设置可直接代入 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`公共参数以引用该角色配置文件。以下示例使用在上一个示例中定义的角色配置文件来访问 [Get-S3Bucket](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-S3Bucket.html)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
```

## 使用凭证配置文件类型
<a name="using-the-credential-profile-types"></a>

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


****  

| 凭证类型 | 必须使用的参数 | 
| --- | --- | 
|  **基本** 这些是 IAM 用户的长期凭证  |  `-AccessKey`  `-SecretKey`  | 
|  **会话**： 这些是您手动检索的 IAM 角色的短期证书，例如直接调用 Use [-STSRole](https://docs.aws.amazon.com/powershell/v5/reference/items/Use-STSRole.html) cmdlet。  |  `-AccessKey`  `-SecretKey` `-SessionToken`  | 
|  **角色**： 这些是 AWS Tools for PowerShell 为您检索的 IAM 角色的短期凭证。  |  `-SourceProfile` `-RoleArn`  可选：`-ExternalId` 可选：`-MfaSerial`  | 

## `ProfileLocation` 通用参数
<a name="the-profileslocation-common-parameter"></a>

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


****  

| 配置文件位置值 | 配置文件解析行为 | 
| --- | --- | 
|  null (未设置) 或空  |  首先，在 .NET 凭证文件中搜索具有指定名称的配置文件。如果找不到个人资料，请在以下位置搜索 AWS 共享凭据文件`(user's home directory)\.aws\credentials`。  | 
|   AWS 共享凭据文件格式的文件路径  |  仅在指定文件中搜索具有给定名称的配置文件。  | 

### 将凭证保存到凭证文件
<a name="save-credentials-to-a-credentials-file"></a>

要编写凭证并将其保存到两个凭证文件中的一个，请运行 `Set-AWSCredential` cmdlet。下面的示例演示了具体做法。第一个命令使用 `Set-AWSCredential` 以及 `-ProfileLocation` 向由 `-ProfileName` 参数指定的配置文件添加访问密钥和秘密密钥。在第二行中，运行 [Get-Content](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/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
```

## 显示您的凭证配置文件
<a name="showing-credential-profiles"></a>

运行 [Get-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-AWSCredential.html) cmdlet 并添加`-ListProfileDetail`参数以返回凭据文件类型和位置以及配置文件名称列表。

```
PS > Get-AWSCredential -ListProfileDetail

ProfileName                     StoreTypeName         ProfileLocation
-----------                     -------------         ---------------
source_profile                  NetSDKCredentialsFile
assume_role_profile             NetSDKCredentialsFile
basic_profile                   SharedCredentialsFile C:\Users\auser\.aws\credentials
```

## 删除凭证配置文件
<a name="removing-credential-profiles"></a>

要删除凭据配置文件，请运行新的 R [emove-Profile cmd AWSCredential le](https://docs.aws.amazon.com/powershell/v5/reference/items/Remove-AWSCredentialProfile.html) t。C@@ [lear-](https://docs.aws.amazon.com/powershell/v5/reference/items/Clear-AWSCredential.html) 已AWSCredential被弃用，但仍可用于向后兼容。

## 重要提示
<a name="important-notes"></a>

只有 “[初始化-AWSDefault 配置](https://docs.aws.amazon.com/powershell/v5/reference/items/Initialize-AWSDefaultConfiguration.html)[” AWSCredential、“新建](https://docs.aws.amazon.com/powershell/v5/reference/items/New-AWSCredential.html)[” 和 “设置](https://docs.aws.amazon.com/powershell/v5/reference/items/Set-AWSCredential.html)” AWSCredential 支持角色配置文件的参数。您不能直接在命令上指定角色参数，例如 `Get-S3Bucket -SourceProfile source_profile_name -RoleArn arn:aws:iam::999999999999:role/role_name`。这不起作用，因为服务 cmdlet 不直接支持 `SourceProfile` 或 `RoleArn` 参数。而是您必须将这些参数存储在配置文件中，然后使用 `-ProfileName` 参数调用命令。