Skip to content

azd pipeline config --provider azdo cannot configure federated credentials, so the Azure DevOps path requires a long-lived client secret #9319

Description

@jongio

Problem

azd pipeline config supports OIDC federated credentials for the GitHub provider. The azdo provider does not. The documentation states this directly:

By default, azd pipeline config for Azure Pipelines uses client credentials. OIDC/federated credentials are not currently supported.

Source: Configure a pipeline using Azure Pipelines

Impact

Choosing Azure DevOps forces a long-lived client secret into pipeline configuration, while the same command against the other supported provider produces a secretless configuration. The security posture of a deployment is therefore determined by CI platform choice rather than by any deliberate decision, and the weaker option is the silent default.

For organizations where Azure DevOps is mandated rather than chosen, azd pipeline config is unusable for any workload with a no-stored-secrets requirement. Those users must configure the service connection and app registration by hand, which is the exact work the command exists to eliminate.

This is not a runtime limitation. The runtime half already works: azd auth login --federated-credential-provider azure-pipelines is implemented and supported, reading AZURESUBSCRIPTION_CLIENT_ID, AZURESUBSCRIPTION_TENANT_ID, AZURESUBSCRIPTION_SERVICE_CONNECTION_ID, and SYSTEM_ACCESSTOKEN. Only the configuration half is missing, so the gap is a parity gap, not a capability gap.

Proposed requirement

azd pipeline config --provider azdo must be able to produce a secretless configuration, and should do so by default.

  1. Create the Azure Resource Manager service connection using workload identity federation.
  2. Create the matching federated credential on the app registration, using the issuer and subject the service connection requires.
  3. Make federated credentials the default for azdo, with client credentials available only behind an explicit opt-in flag.
  4. Emit the generated pipeline YAML using azd auth login --federated-credential-provider azure-pipelines.

Acceptance criteria

  • azd pipeline config --provider azdo creates a workload identity federation service connection
  • The corresponding federated credential is created on the app registration
  • No client secret is created or stored on the default path
  • Generated pipeline YAML authenticates with the azure-pipelines federated provider
  • Client credentials remain reachable through an explicit opt-in flag
  • Documentation no longer states that OIDC is unsupported for this provider

Metadata

Metadata

Assignees

Labels

area/pipelineCI/CD pipeline config (GH Actions, AzDO)area/securitySecurity, permissions, RBACenhancementNew feature or improvement

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions