我如何保存我的 Azure 帐户,这样我就不必再次输入密码

我如何保存我的 Azure 帐户,这样我就不必再次输入密码

我正在使用azure cli*nix 机器中的工具来管理 Azure 帐户中的个人虚拟机。我想知道是否有办法保存我的登录凭据,这样我就不必重新执行命令,azure login也不必输入我的密码/凭据。

我使用 下载了我的帐户设置azure account download并使用 导入到我的机器上azure account import,但是当我重新启动会话时,我仍然需要执行手动登录步骤。

因此,有没有办法设置 azure cli 来保存我的帐户详细信息,这样我就不必手动登录了?

答案1

当你调用时,azure login你实际上得到的是一个只有有限生命周期的令牌,所以即使你能跨会话持久化,它也会于 12 小时后过期。这是有可能的,但是不建议在脚本中指定用户名和密码:

azure login -u $username -p $password

为此,您必须使用 Azure Active Directory 帐户进行身份验证,假设您愿意承担此风险,因为您正在管理您的个人的Azure 订阅可能是最简单的选择。

根据我的经验,有两种方法更适合公司、企业或高风险场景:

Azure 自动化

Azure 自动化是一项 Azure 平台服务,可让您在 Azure 中构建参数化工作流,并可按计划、从 Web UI 或从命令行触发这些工作流。由于工作流运行的环境在时间和多个环境中保持一致,因此重复性任务得以简化。

Azure Active Directory 服务主体

使用 Azure 进行身份验证服务主体允许您使用证书(.pfx)登录 Azure,假设所述证书没有密码存储,那么您可以按照以下步骤实现无密码登录:

  1. 生成用于身份验证的公钥/私钥对。
  2. 创建新的 Azure Active Directory 应用程序
  3. 为你的 AAD 应用程序创建新的服务主体
  4. 向你的服务主体授予订阅权限
  5. 在脚本中使用服务主体进行身份验证

    cert=$(openssl x509 -in "./examplecert.pem" -fingerprint -noout | sed 's/SHA1 Fingerprint=//g'  | sed 's/://g'
    tenantId=$(azure account show -s <subscriptionId> --json | jq -r '.[0].tenantId')
    appId=$(azure ad app show --search exampleapp --json | jq -r '.[0].appId')
    azure login --service-principal --tenant "$tenantId" -u "$appId" --certificate-file ./examplecert.pem --thumbprint "$cert"
    

相关内容