`az login` 如何存储凭据信息?

15

我在想,当我使用az login登录azure时,背后会发生什么事情。我长时间内仍然保持登录状态,这意味着机器上保存了某些可用于访问的数据。

如果攻击者获得硬盘访问权限,是否有可能明文读取该密码/令牌,以冒充我的身份?

P.S. 我指的不是az login命令本身的凭据,而是由命令背后保存的数据。

3个回答

12
好问题!
它不会存储您的登录凭据,而是存储一个身份验证刷新令牌。该令牌可以由Microsoft或您的租户管理员更改。
参考:
没有您的登录信息存储在Azure CLI中。相反,Azure会生成并存储一个身份验证刷新令牌。从2018年8月开始,该令牌在90天不活动后会被撤销,但这个值可以由Microsoft或您的租户管理员更改。一旦令牌被撤销,CLI会显示一条消息,要求您重新登录。 https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli CLI会存储令牌和其他详细信息,如您的配置文件、会话详细信息等。这些详细信息存储在您的主文件夹中。
从运行命令(在Windows操作系统中)导航到"%HOMEPATH%",然后打开".Azure"文件夹。您将能够找到您要查找的文件。

enter image description here


(更新:感谢IAmAliYousefi提供的信息)
如果你在WSL(Windows Subsystem for Linux)上使用Azure CLI,那么 .azure 目录不会出现在你的Linux WSL上(即 ~/.azure),而是在你的Windows系统上。你可以通过在Linux WSL上的路径 /mnt/C/Users/YOUR_USERNAME/.azure/ 来访问它。
当你感到“受到攻击”时,你可以考虑清理一下“.azure”文件夹。

2
谢谢你的回答!所以其中一个文件包含了刷新令牌,所以任何能够访问那个文件夹的人都可以冒充我长达90天,对吗? - Ilya Chernomordik
2
当然,它包含明文的访问令牌,任何拥有访问权限的人都可以冒充你。因此,“.azure”文件夹或其内容不应在公共领域中共享。 - Sunny Sharma
3
使用最新版本的az cli,令牌通过DPAPI存储,文件名为“msal_token_cache.bin”,您可以通过UnProtectFile解密它,我正在使用Microsoft.Identity.Client.Extensions.Msal让Msal处理内存中的令牌缓存...话虽如此,任何在您的帐户下运行的恶意软件只需要一个额外的调用来解码令牌。是的,使用刷新令牌,您可以在云中造成严重破坏。 - Coderookie
3
也许值得一提的是,即使您在WSL(Windows子系统)上使用Azure CLI,.azure目录也不会出现在Linux WSL上(即~/.azure),而是出现在Windows系统上。 您可以从/mnt/C/Users/YOUR_USERNAME/.azure/访问它。 - Ali Yousefi
感谢 @IAmAliYousefi - 已更新答案。 - undefined

2
同样在Mac上,对应的令牌似乎存储在这里。
~/.azure/msal_token_cache.json

我还不知道如何在Azure上做到这一点,但在AWS领域中,我用来防止对在您的主目录中找到的秘密进行滥用的机制是创建一个具有超级特定/有限权限/许可权的特殊用户,以帮助最小化您的曝光面。

我希望有朝一日也能学会如何在Azure上实现这一点 :)


0

我的意思是真正保存在命令本身中的凭据/令牌,而不是我们发送的凭据。我已经将其添加到问题中以更加精确。 - Ilya Chernomordik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接