【问题标题】:Azure command "az keyvault secret list" throws "[Errno 22] Invalid argument" - how to debug?Azure 命令“az keyvault secret list”抛出“[Errno 22] Invalid argument”——如何调试?
【发布时间】:2021-12-19 10:09:48
【问题描述】:

我正在针对 Azure 密钥保管库运行 Azure 命令行界面 (azure-cli)。

我这样做:

$ az keyvault secret list --vault-name <name-of-my-vault> --maxresults 10
[Errno 22] Invalid argument

此命令曾经有效,但一两周前它停止工作并开始抛出此错误 ([Errno 22] Invalid argument)。我该如何调试?

我使用az login 登录。我的帐户对相关密钥保管库具有以下安全角色 (RBAC):

  • 所有者
  • 贡献者
  • Key Vault 证书官员
  • Key Vault 保密官

我安装了 azure-cli 2.30.0 版。我在 2.27.0 中遇到了同样的错误。我还在运行 2.27.0 的 Jenkins 构建服务器上看到它。

我的密钥保管库包含超过 200 个秘密(其中一些有多个版本)。它们都没有过期;事实上,它们都没有过期日期。

提前致谢。

【问题讨论】:

  • 所以,这适用于我在 2.27.0 和 2.30.0 版本中,我不相信语法已经改变了。我确实有一个问题 - 您是否将 az cli 从上次工作到现在更新到 2.30.0?我问是因为 2.30.0 破坏了 az devops 扩展的身份验证(AAD/MSAL 身份验证不再有效,唯一的解决方法是 Azure DevOps PAT)。如果您确实升级了,那么可以想象该版本也会破坏其他东西。
  • 另外,请根据github.com/Azure/azure-cli/issues/16683检查您的秘密的激活和到期日期
  • 我用的是2.27,突然坏了。我尝试升级以修复它,但这没有任何区别。

标签: azure azure-keyvault azure-cli error-code


【解决方案1】:

正如@WaitingForGuacamole 在评论部分建议的那样,我已经在我的环境中进行了测试

我在 Key Vault 中创建了到期日期如下的机密:

现在,我登录到 Azure CLI 并运行以下命令:

az keyvault secret list --vault-name <name-of-my-vault> --maxresults 10

我遇到了同样的错误:

现在,我删除了过期日期为 3008 年 1 月 1 日的密钥,并再次运行相同的命令

它运行没有任何错误。它列出了我的密钥保管库中的秘密

因此,调试问题的最佳方法是检查密钥保管库中所有机密的到期日期。确保机密的到期日期在 3000-01-01 之前

【讨论】:

  • 唉,我的秘密都没有有效期。
  • 他们有激活日期吗?
【解决方案2】:

受到@RamaraoAdapa-MT 答案的启发,我想我找到了答案。我的保险库中没有错误的秘密,但似乎有一个错误的证书。我从保险库中删除了此证书,现在我可以再次获取机密。

我为 azure-cli 的维护者创建了一个 GitHub 问题:https://github.com/Azure/azure-cli/issues/20241

【讨论】:

  • 我建议转到 Github 并为此提交问题 - 该命令仍应返回它可以返回的秘密,并且它当然不应该返回“无效选项”错误!
猜你喜欢
  • 2020-04-07
  • 1970-01-01
  • 2016-11-03
  • 2021-08-26
  • 2018-12-02
  • 1970-01-01
  • 2020-07-29
  • 2019-06-29
  • 2018-06-15
相关资源
最近更新 更多