
云原生CI/CDDevOps后端【免费下载链接】pipelineA cloud-native Pipeline resource.项目地址https://gitcode.com/gh_mirrors/pipelin/pipeline点击查看免费下载本指南以仓库中 vendored 的 azidentity CHANGELOG.md 为骨架系统梳理github.com/Azure/azure-sdk-for-go/sdk/azidentity模块从 v0.1.0 到 v1.14.1 的功能演进涵盖DefaultAzureCredential凭据链的选择机制、AZURE_TOKEN_CREDENTIALS环境变量、WorkloadIdentityCredential在 Kubernetes 中的身份绑定模式、受管标识Managed Identity在各类 Azure 托管环境下的行为以及持久化令牌缓存、CAE 与错误处理等关键变更。结合本仓库 vendor 目录下的实际源码当前 vendored 版本为 v1.14.1见 version.go读者可以掌握该库的选型依据、迁移路径与升级注意事项并理解它作为间接依赖出现在本 pipeline 仓库 go.mod 中的原因。版本总览从 v0.1.0 到 v1.14.1azidentity 模块是 Azure SDK for Go 的核心身份认证组件为 SDK 客户端提供基于 Microsoft Entra ID原 Azure AD的令牌认证能力通过一组实现azcore.TokenCredential接口的凭据类型完成。本仓库以间接依赖的形式 vendored 了该模块 v1.14.1 版本其引入链条为github.com/sigstore/sigstore/pkg/signature/kms/azure见 go.mod——即 Tekton Pipeline 的 Sigstore 签名 KMS 后端在 Azure Key Vault 场景下会用到 azidentity。从 CHANGELOG 看该库经历了三个明显阶段阶段版本区间标志性事件早期构建v0.1.0 ~ v0.14.02020-07 ~ 2022-04引入AzureCLICredential、InteractiveBrowserCredential、AuthorizationCodeCredential、DeviceCodeCredential并在 0.14.0 要求 Go 1.18、改用azcore/cloud配置主权云1.x 稳定期v1.0.0 ~ v1.9.02022-05 ~ 2025-04移除AuthorizationCodeCredential引入WorkloadIdentityCredential、ClientAssertionCredential、AzurePipelinesCredential、AzurePowerShellCredential重构持久化缓存1.10 凭据选择期v1.10.0 ~ v1.14.12025-05 ~ 2026-08引入AZURE_TOKEN_CREDENTIALS凭据子集选择机制DefaultAzureCredential可强制指定凭据类型工作负载身份绑定模式迭代v1.14.12026-08-27是当前最新稳定版仅包含依赖升级。v1.14.02026-06-15将最低 Go 版本要求提升到1.25这一要求会直接约束使用方项目的工具链版本。DefaultAzureCredential 凭据链核心机制与演进凭据链的尝试顺序DefaultAzureCredential是 azidentity 面向应用开发的主入口。在仓库源码 default_azure_credential.go 中其文档明确了凭据尝试顺序EnvironmentCredentialWorkloadIdentityCredential仅当环境变量配置由 Azure workload identity webhook 设置时ManagedIdentityCredentialAzureCLICredentialAzureDeveloperCLICredentialAzurePowerShellCredential其底层实现是ChainedTokenCredential字段chain *ChainedTokenCredential。在 chained_token_credential.go 中可以确认链式求值逻辑只有当前凭据返回credentialUnavailableError时才会继续尝试下一个凭据其余错误会立即中断并包装为AuthenticationFailedError。一旦某个凭据成功successfulCredential会被记录后续GetToken调用直接复用该凭据不再遍历整个链该行为自 v0.13.0 起生效若需每次重试全部凭据可设置ChainedTokenCredentialOptions.RetrySources。AZURE_TOKEN_CREDENTIALS按需裁剪凭据链v1.10.02025-05-14引入环境变量AZURE_TOKEN_CREDENTIALS允许启用凭据链的子集v1.11.0-beta.12025-07-15扩展为按名称精确选择单个凭据类型v1.12.02025-09-16新增DefaultAzureCredentialOptions.RequireAzureTokenCredentials当该选项为 true 且环境变量未设置时NewDefaultAzureCredential直接返回错误。v1.13.0 进一步规定当变量值为ManagedIdentityCredential时DefaultAzureCredential行为与直接使用ManagedIdentityCredential完全一致——不施加特殊重试配置、不探测 IMDS 可用性。合法取值源码 default_azure_credential.go链中任一凭据类型名如EnvironmentCredential、AzureCLICredential特殊值dev依次尝试AzureCLICredential→AzureDeveloperCLICredential→AzurePowerShellCredential特殊值prod依次尝试EnvironmentCredential→WorkloadIdentityCredential→ManagedIdentityCredential。典型使用# 仅使用生产凭据忽略本地开发工具 export AZURE_TOKEN_CREDENTIALSprod # 或精确指定单一凭据 export AZURE_TOKEN_CREDENTIALSWorkloadIdentityCredential该机制配合DefaultAzureCredentialOptions.RequireAzureTokenCredentials能让 CI/CD 与生产环境对“究竟用了哪种身份”有确定性的预期避免本地开发凭据误入生产链路。工作负载身份Workload Identity与 Kubernetes从 webhook 环境变量到身份绑定模式v1.3.0-beta.12022-12-13为WorkloadIdentityCredential与DefaultAzureCredential引入 Kubernetes 上的 Workload Identity Federation 支持。v1.3.0-beta.52023-04-11将NewWorkloadIdentityCredential()的参数移入WorkloadIdentityCredentialOptions构造函数默认从 Azure workload identity webhook 注入的环境变量读取配置。源码 workload_identity.go 展示了该凭据的选项模型三个核心字段均可用环境变量覆盖Options 字段对应环境变量含义TenantIDAZURE_TENANT_ID服务主体的租户 IDClientIDAZURE_CLIENT_ID服务主体的客户端 IDTokenFilePathAZURE_FEDERATED_TOKEN_FILE存放 Kubernetes Service Account token 的文件路径身份绑定模式identity binding的迭代CHANGELOG 记录了该特性的曲折演进使用该特性的用户需要特别注意v1.13.0-beta.12025-09-17WorkloadIdentityCredential新增身份绑定模式支持v1.13.02025-10-07立即移除该支持说明“将在 v1.14.0-beta.1 回归”v1.14.0-beta.12025-10-07恢复身份绑定模式支持v1.14.0-beta.22025-11-10身份绑定模式默认关闭需显式设置WorkloadIdentityCredentialOptions.EnableAzureTokenProxy true启用同时DefaultAzureCredential移除对该模式的支持必须直接使用WorkloadIdentityCredentialv1.14.0-beta.32026-02-10EnableAzureTokenProxy更名为EnableAzureProxyv1.14.02026-06-15移除WorkloadIdentityCredentialOptions.EnableAzureProxy计划在 v1.15.0-beta.1 回归。也就是说截至当前 vendored 的 v1.14.1EnableAzureProxy选项不存在使用早期 beta 版本代码的应用必须等待 v1.15.0-beta.1 或改用直接令牌请求。身份绑定模式面向“部署到多个集群、集群托管多个应用”的场景通过从环境变量读取代理配置来决定是经由代理还是直接向 Entra ID 请求令牌见 workload_identity.go。受管标识Managed Identity行为演进ManagedIdentityCredential支持在 App Service、Arc、Cloud Shell、AKS、Service Fabric、VM、Container Instances、Azure ML 等环境中以受管标识认证。CHANGELOG 中关于它的变更密度最高要点如下IMDS 探测与重试v0.13.02022-01-11不再在请求令牌前探测 IMDS且 IMDS 的错误响应不再使凭据实例失效v1.4.02023-10-10IMDS 返回 410/503 时进行重试v1.6.0-beta.32024-04-09DefaultAzureCredential对 IMDS 受管标识环境发送无重试的探测请求避免本地开发时因 IMDS 不可用产生过长的重试延迟v1.8.12025-01-15DefaultAzureCredential在 Azure Container Instances 中跳过受管标识ChainedTokenCredential与DefaultAzureCredential在收到来自非 IMDS如代理的意外响应后继续尝试下一个凭据v1.11.0-beta.12025-07-15默认 IMDS 重试时长从约 54 秒提升到约70 秒与 IMDS 文档建议一致。用户分配标识user-assigned identityv0.9.02021-05-21IMDS 场景支持用户分配标识v0.12.02021-11-02移除NewManagedIdentityCredential的 id 参数改用ManagedIdentityCredentialOptions.ID支持ClientID与ResourceID两种类型见 CHANGELOG 中的迁移示例v1.0.02022-05-12DefaultAzureCredential读取AZURE_CLIENT_ID作为用户分配受管标识的客户端 IDv1.8.0-beta.22024-08-06在不支持用户分配标识的平台上Azure Arc、指定 resource ID 的 Azure ML、Cloud Shell、Service FabricNewManagedIdentityCredential直接返回错误而非像从前那样仅记录警告——这避免了凭据意外认证了非预期身份、导致客户端以意外权限操作的隐患v1.8.0-beta.32024-09-17新增ObjectID类型用于ManagedIdentityCredentialOptions.IDv1.9.02025-04-08NewManagedIdentityCredential记录已配置的用户分配标识如有。平台支持v0.4.3 加入 Azure Arcv0.9.2 加入 Service Fabric 与 resource ID 选项v1.2.0-beta.3 起凭据在内存中缓存令牌v1.5.0-beta.2 支持 Azure ML 受管标识v1.6.0-beta.3 修复 Container Instances 中 resource ID 的指定问题。新增凭据类型与认证流程CHANGELOG 展示了 azidentity 凭据家族的持续扩充各凭据对应源码文件均存在于仓库 vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ 目录版本新增凭据源码文件说明v0.2.1InteractiveBrowserCredentialinteractive_browser_credential.go交互式浏览器登录v0.2.2AuthorizationCodeCredential—v1.0.0 移除授权码流程v1.0.0 起改用InteractiveBrowserCredentialv1.2.0-beta.2ClientAssertionCredentialclient_assertion_credential.go自定义客户端断言如联邦凭据v1.3.0-beta.2OnBehalfOfCredentialon_behalf_of_credential.goOBO 流程v1.6.0 增加NewOnBehalfOfCredentialWithClientAssertionsv1.3.0 重命名FromCertificate→WithCertificate、FromSecret→WithSecretv1.5.0-beta.1AzureDeveloperCLICredentialazure_developer_cli_credential.go以azd auth login的身份认证v1.6.0-beta.4AzurePipelinesCredentialazure_pipelines_credential.goAzure Pipelines 服务连接 workload identity federationv1.7.0-beta.1 中环境变量参数改为构造参数选项类型更名v1.13.0AzurePowerShellCredentialazure_powershell_credential.go以 Azure PowerShell 登录身份认证其余长期存在的凭据类型还包括 client_secret_credential.go、client_certificate_credential.go、environment_credential.go、device_code_credential.go、username_password_credential.go 与 azure_cli_credential.go。值得关注的弃用与兼容性事项UsernamePasswordCredential已弃用v1.9.0Microsoft Entra ID 在大多数租户要求 MFA用户名密码凭据无法支持官方迁移指引见 https://aka.ms/azsdk/identity/mfaAuthorizationCodeCredential已移除v1.0.0用户认证请使用InteractiveBrowserCredentialAzurePipelinesCredential曾在 v1.6.0 移除于 v1.7.0-beta.1 回归——beta 版与稳定版之间的往返更迭在 CHANGELOG 中反复出现升级时务必核对版本。令牌缓存与 CAE连续访问评估持久化令牌缓存的反复迭代持久化缓存 API 在 CHANGELOG 中经历了多次往返使用方需要特别留意版本对齐v1.5.0-beta.12023-10-10引入可选持久化令牌缓存通过TokenCachePersistenceOptions配置v1.5.02024-01-16移除称将在 v1.6.0-beta.1 回归v1.6.0-beta.12024-01-17回归v1.7.02024-06-20再次移除v1.8.0-beta.12024-07-17回归并重新设计 API加密成为必选项缓存构建与凭据构建分离新增Cache类型。当前源码中Cache类型定义在 azidentity.go是internal.Cache的别名通过github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache.New构造可使认证数据跨进程共享。服务主体类凭据如ClientCertificateCredential只需在选项上设置Cache字段即可复用持久缓存。CAE 与 CP1 能力v1.3.0-beta.32023-02-07默认设置客户端能力CP1向 Entra ID 表明应用能处理 CAE claims challenge可用环境变量AZURE_IDENTITY_DISABLE_CP1true关闭。同时凭据支持DisableInstanceDiscovery私有/断网云与AdditionallyAllowedTenants多租户认证选项v1.3.0 移除 CAE、v1.4.0-beta.1 回归v1.4.0-beta.52023-09-12是否请求 CAE 令牌由TokenRequestOptions.EnableCAE决定支持 CAE 的 Azure SDK 客户端会自动设置该选项凭据不再默认请求 CAE 令牌也不再读取AZURE_IDENTITY_DISABLE_CP1——该环境变量自此失效源码中 CP1 能力定义于 azidentity.go。CAE 相关变更同样呈现“beta 引入 → 稳定版移除 → 后续 beta 回归”的模式跨版本升级时建议先核对目标版本的 CHANGELOG。云环境、租户与多租户配置主权云与私有云配置v0.14.02022-04-05移除AuthorityHost字段改用azcore/cloud的 API 配置主权云或私有云。迁移方式见 CHANGELOG 中的代码示例// before (v0.13 及更早) opts : azidentity.ClientSecretCredentialOptions{AuthorityHost: azidentity.AzureGovernment} cred, err : azidentity.NewClientSecretCredential(tenantID, clientID, secret, opts) // after (v0.14.0) import github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud opts : azidentity.ClientSecretCredentialOptions{} opts.Cloud cloud.AzureGovernment cred, err : azidentity.NewClientSecretCredential(tenantID, clientID, secret, opts)底层setAuthorityHostazidentity.go的优先级为用户设置的cloud.Configuration.ActiveDirectoryAuthorityHost→AZURE_AUTHORITY_HOST环境变量 → 默认 Azure 公有云并要求 authority host 必须是https协议。租户解析与多租户v1.3.0-beta.3多数凭据新增AdditionallyAllowedTenants选项支持在多个租户中认证通配符*允许任意租户源码 azidentity.go 中resolveAdditionalTenants会简化通配符配置环境变量AZURE_ADDITIONALLY_ALLOWED_TENANTS可用分号分隔的租户列表等价设置DefaultAzureCredentialOptions.TenantIDv1.4.0-beta.2 起同时作用于 workload identity 认证AzureCLICredentialOptions.Subscriptionv1.6.0-beta.1可指定 CLI 订阅v1.8.1具有可选租户 ID 的凭据AzureCLICredential、InteractiveBrowserCredential与某些客户端搭配使用时必须设置AdditionallyAllowedTenantsv1.3.0-beta.3 还支持在 Azure Stack 上以adfs作为租户进行 ADFS 认证。错误处理与诊断能力错误模型是 azidentity 演进中变化最大的部分之一CredentialUnavailableError表示凭据无法认证链式凭据会因此继续尝试下一个凭据。v0.13.0 起非导出改为同名接口v1.3.0-beta.2 提供NewCredentialUnavailableError()构造函数AuthenticationFailedError表示认证失败认证已发生但被拒绝。v1.0.0 起以指针形式返回v1.6.0-beta.2 用携带TokenRequestOptions的AuthenticationRequiredError结构体取代ErrAuthenticationRequiredGetToken契约v1.0.0返回azcore.AccessToken值类型调用方未指定 scope 时返回错误子进程超时修复v1.10.1、v1.12.0AzureCLICredential与AzureDeveloperCLICredential曾可能无限等待子进程输出已修复AZD_DEBUG设置下不再挂起AzureDeveloperCLICredential的错误信息逐步去噪v1.14.0-beta.3 移除多余 JSON、v1.14.0 改进azd错误信息上报GetToken对Claims的处理v1.12.0AzureCLICredential与AzureDeveloperCLICredential在TokenRequestOptions.Claims有值时返回错误并描述获取令牌所需的操作日志与链接v0.12.0 起NewDefaultAzureCredential()记录非致命错误并汇总到最终错误信息v1.8.0 起AzurePipelinesCredential允许记录调试请求头并包含在错误信息中v1.14.0 起错误中在适当时附上排障指南链接v1.8.1 修复用户凭据类型记录访问令牌 scope 不一致的问题。其他值得关注的变更与升级建议依赖与工具链要求最低 Go 版本v0.12.0 要求 1.16v0.14.0 要求 1.18v1.14.0 要求1.25MSAL 依赖microsoft-authentication-library-for-go从 v0.5.1 逐步升级到 v1.0.0v1.3.0v0.13.0 起全面采用 MSAL 完成用户与服务主体认证azcore 依赖同步升级v0.21.0、v0.18.1 等各版本 CHANGELOG 均有记录。区域性认证ESTS-Rv1.1.0 起ClientCertificateCredential与ClientSecretCredential支持 ESTS-R第一方应用可设置AZURE_REGIONAL_AUTHORITY_NAME指定区域名。环境变量速查表环境变量作用引入版本AZURE_CLIENT_ID客户端 ID也用于DefaultAzureCredential的用户分配受管标识v1.0.0AZURE_TENANT_ID/AZURE_CLIENT_SECRET/AZURE_USERNAME/AZURE_PASSWORDEnvironmentCredential的服务主体/用户凭据输入早期版本AZURE_CLIENT_CERTIFICATE_PATH/AZURE_CLIENT_CERTIFICATE_PASSWORD证书凭据路径与口令口令读取 v1.2.0-beta.1 引入v1.2.0-beta.1AZURE_CLIENT_SEND_CERTIFICATE_CHAIN设为true时启用证书 SNI 认证v0.13.1v0.13.1AZURE_FEDERATED_TOKEN_FILEworkload identity 的联邦令牌文件路径v1.3.0-beta.1AZURE_AUTHORITY_HOST覆盖 authority host非 HTTPS 会报错v0.14.0 前后AZURE_ADDITIONALLY_ALLOWED_TENANTS分号分隔的额外允许租户列表v1.3.0-beta.3AZURE_TOKEN_CREDENTIALS选择DefaultAzureCredential凭据子集dev/prod/类型名v1.10.0 / v1.11.0-beta.1AZURE_IDENTITY_DISABLE_CP1旧版关闭 CP1 能力v1.4.0-beta.5 起已失效v1.3.0-beta.3失效于 v1.4.0-beta.5AZURE_REGIONAL_AUTHORITY_NAMEESTS-R 区域名第一方应用v1.1.0升级建议CHANGELOG 中反复出现“beta 引入、稳定版移除、后续 beta 回归”的特性往返持久化缓存、AzurePipelinesCredential、工作负载身份绑定模式、CAE升级时务必核对目标版本对应条目从 v0.14.0 之前的版本升级需迁移AuthorityHost→cloud配置v1.14.x 系列需 Go 1.25使用 beta 特性的代码在升级稳定版前应确认该特性当前是否仍然存在。结语在本仓库中的实际定位本仓库Tekton Pipeline并未直接在自身代码中调用 azidentity——搜索pkg、cmd、internal、docs等目录均无直接引用——它作为sigstore/sigstore的 Azure KMS 签名后端的间接依赖被引入见 go.mod、go.modvendored 版本锁定为 v1.14.1。这意味着当你在本仓库启用 Sigstore 签名且使用 Azure Key Vault KMS 时凭据获取路径实际由本指南所述的 azidentity 凭据链承载。理解DefaultAzureCredential的尝试顺序、AZURE_TOKEN_CREDENTIALS的裁剪能力以及WorkloadIdentityCredential在 Kubernetes 上的环境变量约定将直接有助于配置 Tekton 的 Azure 签名场景。升级仓库依赖时azidentity 的最低 Go 版本要求v1.14.0 起为 1.25也是需要纳入评估的约束之一。赞分享云原生CI/CDDevOps后端【免费下载链接】pipelineA cloud-native Pipeline resource.项目地址https://gitcode.com/gh_mirrors/pipelin/pipeline点击查看免费下载相关推荐Cilium 中的 Azure IdentityazidentityGo 库演进全解析从凭证链到工作负载身份Cilium 中的 Azure IdentityazidentityGo 库演进全解析从凭证链到工作负载身份 导读 本文以 Cilium 仓库中 vend云原生网络服务网格可观测性网络安全eBPFKubernetes 身份与权限认证实战指南RBAC、ServiceAccount 与 SPIFFE 工作负载身份Kubernetes 身份与权限认证实战指南RBAC、ServiceAccount 与 SPIFFE 工作负载身份 Kubernetes 集群中的每一次 AP教程云原生容器编排vcluster 仓库内 azidentity 版本演进全解析从 Go 凭据类型到 DefaultAzureCredential 认证链vcluster 仓库内 azidentity 版本演进全解析从 Go 凭据类型到 DefaultAzureCredential 认证链 导读 本文以当前仓库云原生集群管理虚拟化多集群上一篇timm框架下的dpn68b.ra_in1k快速上手图像分类与特征提取的最佳实践下一篇Bilibili直播录制工具剪辑与转封装功能简单操作实现专业效果创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考