[英]How do I authenticate using a managed identity from gitlab-ci to push a docker container from gitlab registry to Azure web service?
I have researched the way to push docker images from gitlab container registry to an azure resource: Pushing Docker image from gitlab-ci to Azure Container Registry
我还在Azure 文档中找到了创建托管标识(系统分配和用户分配)的文档
我缺少关于如何在gitlab-ci.yml
文件中使用az login —-identity
来访问azure 应用服务的要点。 目的是从gitlab 容器注册表推送docker镜像。
az login —-service-principal
是一种更安全的方法吗? 或任何其他身份验证程序? ssh
?提前谢谢你的帮助!
You can use a GitLab CI Job JWT token to login to Azure from within a CI/CD pipeline without needing to store secrets in a GitLab project. 为此,您还需要为 GitLab 和 Azure 服务主体之间的 ID 联合配置 OpenID Connect (OIDC)。 这是 Microsoft 推荐的,用于从 CI/CD 服务以及其他用例对 Azure 进行身份验证。
注意:仅当您使用 gitlab.com 或可公开访问的 GitLab 实例时,才能使用如下所述的 OIDC。 这是因为 Azure 需要连接到令牌颁发者以获取密钥以验证令牌。 如果您是自托管 GitLab 并且您的实例不可公开访问,您可以为步骤 2 选择不同的凭证类型。
首先,您需要在 Azure 中注册一个应用程序。 您可以按照这些说明注册应用程序并创建服务主体来执行此操作。
完成此操作后,记下应用程序(客户端)ID和目录(租户)ID的值(在应用程序概览窗格中找到)。 第 3 步将需要这些值。
注册应用程序后,您可以将联合凭据添加到应用程序的服务主体。 在 Azure 门户中,go 到已注册的应用程序->您的应用程序。 在侧边栏中, select Certificates & secrets 。 在联合凭据选项卡下,单击“添加凭据”按钮
使用以下参数进行凭证配置:
联合凭证场景:其他颁发者
发行者:您的 gitlab URL 例如https://gitlab.example.com
主题标识符:要匹配的sub
声明的值。 例如,要允许contoso/myproject
项目的main
分支上的作业使用此服务主体,请使用project_path:contoso/myproject:ref_type:branch:ref:main
名称:联合凭据的任何描述性名称(例如contoso-myproject-main
)
描述:可选,联合凭证的描述。
观众:您的 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
CI_JOB_JWT_V2
:预定义变量AZURE_CLIENT_ID
:已注册应用程序的应用程序(客户端)ID。AZURE_TENANT_ID
:要登录的 Azure 租户的 ID(可以在应用程序概述中找到)另外,不要忘记为您注册的应用授予 Azure 容器注册表的适当权限
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.