【问题标题】:Azure Build Pipeline - How to Grant Access to Storage Accounts?Azure Build Pipeline - 如何授予对存储帐户的访问权限?
【发布时间】:2021-02-12 04:35:02
【问题描述】:

目标:

通过标记从 Azure 管道安全地获取 Azure 资源。

详情:

我有一个azure-pipelines.yaml,它构建了一个静态网站并将其保存到硬编码的存储帐户中。这是一个安全漏洞。

我现在需要更新文件以处理蓝绿部署,azure-pipelines.yaml 需要获取标记为当前生产存储帐户的存储帐户,即类似于(只是一个 bash 脚本)

prod_storage_acct_name=$(az resource list --is_prod=true --query [0].name)

这可行,但是,它需要事先az login -u $un -p $pwd,我与我的用户一起测试。显然我不会把我的个人用户放在管道中,所以问题是......

问题:

  1. 让 Azure 管道访问另一个资源的最佳方式是服务主体帐户吗?
  2. 管道是否有一些内置方式来配置其访问权限,而无需指定不同的服务主体,因为它们是“内置”Azure 进程? (Get own Service Principal Name in an Azure DevOps Powershell pipeline task 似乎暗示内置了服务主体)
  3. 有没有更好的方法来做到这一点,我完全错过了?

如果我需要选择 #1,这里的最佳安全做法是什么?我是否只是将服务主体密码放入密钥保管库并在构建脚本中引用它?


也许是一种直观的提问方式:有什么方法可以基本上说“我是一个管道,我住在 Azure 上,让我使用我自己的访问权限进行这个查询”?

【问题讨论】:

    标签: azure rbac azure-yaml-pipelines azure-service-principal


    【解决方案1】:

    为了让管道中的管道/任务能够访问 Azure 资源,您需要某种类型的服务主体,该服务主体对您希望查询的 Azure 资源具有权限。

    在 Azure DevOps 中,这通常通过在项目设置中创建服务连接来完成。服务连接将使用 Azure AD 服务主体进行配置,您的管道将引用服务连接来访问服务主体的凭据。服务连接为您保护您的 SP 凭据(取消选中授予对所有管道的访问权限以要求您获得使用服务连接的权限)。

    当您选择 Azure RM 连接类型时,DevOps 中的服务连接创建对话框将为您提供创建新服务主体的选项 - 如果您有权限并且可以创建 SP,您可以执行此操作在您指定的范围内具有贡献者角色;或者(和更好的做法),创建一个与 Azure DevOps 分开的新 SP,只为其分配您需要的权限,然后在“服务连接创建”对话框中手动输入 SP 的详细信息。

    要手动创建服务主体,一种快速的方法是使用 Azure CLI 和命令 az ad sp create-for-rbac -n <yourSPName> --skip-assignment,然后使用 Portal 或 CLI 向 SP 授予必要的权限。

    【讨论】:

    • 谢谢,现在正在考虑使用服务连接。
    猜你喜欢
    • 2018-10-24
    • 2021-12-21
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多