akn*_*ott 3 azure gitlab docker gitlab-ci azure-managed-identity
我研究了将 docker 映像从 gitlab 容器注册表推送到 azure 资源的方法:将 Docker 映像从 gitlab-ci 推送到 Azure 容器注册表
\n我还在Azure 文档中找到了创建托管身份(系统分配的和用户分配的)的文档
\n我缺少连接如何az login \xe2\x80\x94-identity在gitlab-ci.yml文件中使用 \n 来访问azure 应用程序服务的点。目的是从gitlab 容器注册表推送docker镜像。
az login \xe2\x80\x94-service-principal更安全的方法吗?或者还有其他认证程序吗?ssh?提前谢谢你的帮助!
\n您可以使用 GitLab CI 作业 JWT 令牌从 CI/CD 管道内登录到 Azure,而无需在 GitLab 项目中存储机密。为此,您还需要配置 OpenID Connect (OIDC),以实现 GitLab 和 Azure 服务主体之间的 ID 联合。除其他用例外,Microsoft 建议使用此方法从 CI/CD 服务向 Azure 进行身份验证。
注意:仅当您使用 gitlab.com 或可公开访问的 GitLab 实例时,按如下所述使用 OIDC 才有效。这是因为 Azure 需要连接到密钥颁发者以验证令牌。如果您是自托管 GitLab 并且您的实例不可公开访问,您可以为步骤 2 选择不同的凭证类型。
首先,您需要在 Azure 中注册一个应用程序。您可以按照这些说明注册应用程序并创建服务主体来完成此操作。
执行此操作后,记下应用程序(客户端)ID和目录(租户)ID的值(在应用程序概述窗格中找到)。步骤 3 将需要这些值。
注册应用程序后,您可以将联合凭据添加到应用程序的服务主体。在 Azure 门户中,转到已注册的应用程序->您的应用程序。在侧边栏中,选择证书和机密。在“联合凭据”选项卡下,单击“添加凭据”按钮
使用以下参数进行凭证配置:
联合凭证 sceanrio:其他颁发者
颁发者:您的 gitlab URL 例如https://gitlab.example.com
主题标识符sub:要匹配的声明的值。例如,要允许项目main分支上的作业contoso/myproject使用此服务主体,请使用project_path:contoso/myproject:ref_type:branch:ref:main
Name:联合凭据的任何描述性名称(例如contoso-myproject-main)
Description:可选,联合凭据的描述。
受众:您的 GitLab URL 例如https://gitlab.example.com
创建联合凭据后,您可以利用CI_JOB_JWT_V2作业中的令牌通过 Azure 进行身份验证。在此示例中,我们将使用 Azure CLI ( az login)。
azure-cli:
image: mcr.microsoft.com/azure-cli
variables:
AZURE_CLIENT_ID: "YOUR Application Client ID"
AZURE_TENANT_ID: "YOUR TENANT ID"
script:
- az login --tenant $AZURE_TENANT_ID --service-principal -u $AZURE_CLIENT_ID --federated-token $CI_JOB_JWT_V2
# now you are logged into Azure and can take other actions using the CLI
# - az resource list # example
Run Code Online (Sandbox Code Playgroud)
CI_JOB_JWT_V2:预定义变量AZURE_CLIENT_ID:已注册应用程序的应用程序(客户端)ID。AZURE_TENANT_ID:要登录的Azure租户的ID(可以在应用程序概述中找到)另外,不要忘记为您注册的应用程序授予Azure容器注册表的适当权限
| 归档时间: |
|
| 查看次数: |
4251 次 |
| 最近记录: |