PowerShell for AWS从何处获取凭据?
我最近安装了AWS.NET SDK,它与PowerShell一起提供AWS CLI增强功能 我继续添加了一个IAM用户并生成了一个密钥对,然后将其安装到SDK存储中: 将AWSCredentails-AccessKey AAAAAAAAAA-SecretKey aaaaaaaa/AAAA-store设置为默认值 然后,我通过提出一个我知道我无权访问的请求来测试我的凭据: Get-EC2实例 。。。然后惊奇地发现打印出了三个EC2实例。我不拥有的实例!我也试过这个: Get-EC2实例-配置文件默认值 这产生了预期的结果,访问不足。为了继续测试,我向我的用户添加了EC2FullAccess并重复了最后一行。它正确打印了我的个人使用EC2实例: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实例-配置文件默
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-它显示“默认”,仅此而已。