Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell for AWS从何处获取凭据?_Powershell_Amazon Web Services - Fatal编程技术网

PowerShell for AWS从何处获取凭据?

PowerShell for AWS从何处获取凭据?,powershell,amazon-web-services,Powershell,Amazon Web Services,我最近安装了AWS.NET SDK,它与PowerShell一起提供AWS CLI增强功能 我继续添加了一个IAM用户并生成了一个密钥对,然后将其安装到SDK存储中: 将AWSCredentails-AccessKey AAAAAAAAAA-SecretKey aaaaaaaa/AAAA-store设置为默认值 然后,我通过提出一个我知道我无权访问的请求来测试我的凭据: Get-EC2实例 。。。然后惊奇地发现打印出了三个EC2实例。我不拥有的实例!我也试过这个: Get-EC2实例-配置文件默

我最近安装了AWS.NET SDK,它与PowerShell一起提供AWS CLI增强功能

我继续添加了一个IAM用户并生成了一个密钥对,然后将其安装到SDK存储中:

将AWSCredentails-AccessKey AAAAAAAAAA-SecretKey aaaaaaaa/AAAA-store设置为默认值

然后,我通过提出一个我知道我无权访问的请求来测试我的凭据:

Get-EC2实例

。。。然后惊奇地发现打印出了三个EC2实例。我不拥有的实例!我也试过这个:

Get-EC2实例-配置文件默认值

这产生了预期的结果,访问不足。为了继续测试,我向我的用户添加了EC2FullAccess并重复了最后一行。它正确打印了我的个人使用EC2实例:

GroupNames    : {}
Groups        : {}
Instances     : {aws_personal}
OwnerId       : 835586800000
RequesterId   :
ReservationId : r-0e625fd77d0000000
但是,每当我尝试使用不带
-Profile default
的语句时,我都会访问另一个帐户。在没有详细说明的情况下,我在AWS仪表板中禁用了对该帐户的访问。现在,命令生成以下输出:

Get-EC2Instance:AWS无法验证提供的访问凭据 第1行字符:1 +Get-EC2实例


我的
%UserProfile%
中没有
.AWS
目录。在我的计算机上搜索
.aws
凭据
时,找不到可以解释这一点的凭据文件。

我无法解释为什么在指定-ProfileName参数和不指定参数之间会出现不同的行为,但我可以说明凭据的来源

PowerShell工具可以读取两个凭据位置(以及在EC2实例上运行时的环境变量和EC2实例元数据)

首先是加密的SDK凭据存储文件,位于C:\Users\userid\AppData\Local\AWSToolkit\RegisteredAccounts.json-此文件在PowerShell工具、AWS SDK for.NET和AWS Toolkit for Visual Studio之间共享。它还可以读取ini格式的共享凭据文件(与AWS CLI和其他AWS SDK共享)。请注意,尽管共享凭据文件可以在帐户和计算机之间移动,但加密的SDK文件只能由拥有该文件的用户使用,并且只能在该计算机上使用

PowerShell工具当前仅写入一个存储区-由.NET工具独占使用的加密文件。因此,当您设置凭据并使用-StoreAs选项时,配置文件将被写入RegisteredAccounts.json文件。如果在文本编辑器中打开此文件,您将看到名为“default”的配置文件以及两个加密的blob,它们是您的访问和密钥

当通过命令给出配置文件名时,工具会首先在RegisteredAccounts.json中查找具有该名称的配置文件,如果在RegisteredAccounts.json中找不到,则会尝试读取%USERPROFILE%.aws\credentials中的ini格式文件(要绕过加密存储,可以使用-ProfilesLocation参数指向要从中加载凭据的ini格式文件(如果该文件不在用户配置文件下的默认位置)

如果未提供配置文件名称,则工具将探测以查找最近的一组凭据-在的博客文章中描述了搜索“路径”。如果您看到加载配置文件的引用,请记住,工具首先在RegisteredAccounts.json中检查配置文件,然后在共享凭据文件中检查配置文件


HTH您可以跟踪工具在何处查找凭据。

我无法解释为什么在指定-ProfileName参数和不指定参数之间会出现不同的行为,但我可以说明凭据来自何处

PowerShell工具可以读取两个凭据位置(以及在EC2实例上运行时的环境变量和EC2实例元数据)

首先是加密的SDK凭据存储文件,位于C:\Users\userid\AppData\Local\AWSToolkit\RegisteredAccounts.json-此文件在PowerShell工具、AWS SDK for.NET和AWS Toolkit for Visual Studio之间共享。它还可以从ini格式的共享凭据文件中读取(与AWS CLI和其他AWS SDK共享)。请注意,尽管共享凭据文件可以在帐户和计算机之间移动,但加密的SDK文件只能由拥有该证书的用户使用,并且只能在该台计算机上使用

PowerShell工具当前仅写入一个存储区-由.NET工具独占使用的加密文件。因此,当您设置凭据并使用-StoreAs选项时,配置文件将被写入RegisteredAccounts.json文件。如果在文本编辑器中打开此文件,您将看到名为“default”的配置文件以及两个加密的blob是您的访问和密钥

当通过命令给出配置文件名时,工具会首先在RegisteredAccounts.json中查找具有该名称的配置文件,如果在RegisteredAccounts.json中找不到,则会尝试读取%USERPROFILE%.aws\credentials中的ini格式文件(要绕过加密存储,可以使用-ProfilesLocation参数指向要从中加载凭据的ini格式文件(如果该文件不在用户配置文件下的默认位置)

如果未提供配置文件名称,则工具将探测以查找最近的一组凭据-在的博客文章中描述了搜索“路径”。如果您看到加载配置文件的引用,请记住,工具首先在RegisteredAccounts.json中检查配置文件,然后在共享凭据文件中检查配置文件


HTH您可以跟踪工具查找凭据的位置。

当您运行Get-AWSCredentials-ListStoredRedentials时会发生什么情况?是否看到您不希望看到的内容?@crownedjitter-显示“默认”仅此而已。当您运行Get-AWSCredentials-ListStoredRedentials时会发生什么?是否看到任何您不希望看到的内容?@crownedjitter-它显示“默认”,仅此而已。