Skip to content

feat(azure_blob sink): Expand support for Azure authentication types#24729

Merged
pront merged 43 commits intovectordotdev:masterfrom
jlaundry:feature-azure_auth
Apr 8, 2026
Merged

feat(azure_blob sink): Expand support for Azure authentication types#24729
pront merged 43 commits intovectordotdev:masterfrom
jlaundry:feature-azure_auth

Conversation

@jlaundry
Copy link
Copy Markdown
Contributor

@jlaundry jlaundry commented Feb 25, 2026

Summary

As mentioned in #24492 (comment), now that #22912 has landed, we can make the AzureAuthentication config generic, so that the other Azure authentication types can be re-supported by azure_blob (and eventually azure_data_explorer #24633, and azure_event_hub #24659).

This currently includes Azure CLI, Managed Identity, Workload Identity, as well as a special chained Managed Identity Client Assertion. I'm happy to add others that people believe they have a use-case for, I just didn't want to add code that was unlikely to be used.

Todo list

  • Migrate existing AzureAuthentication config type
  • Add additional requested authentication types
  • Remove block_in_place (int tests fail with thread 'sinks::azure_blob::test::azure_blob_build_config_with_client_id_and_secret' (1977) panicked at src/sinks/azure_common/config.rs:380:43: can call blocking only when running on the multi-threaded runtime)
  • Integration tests with Azurite and real and Mock tokens

Vector configuration

For example:

sinks:
  blob:
    type: azure_blob
    inputs:
      - stdin

    connection_string: AccountName=teststorage
    container_name: vectorlogs

    encoding:
      codec: json
      json:
        pretty: true

    auth:
      azure_client_id: ${AZURE_CLIENT_ID}
      azure_client_secret: ${AZURE_CLIENT_SECRET}
      azure_tenant_id: ${AZURE_TENANT_ID}

How did you test this PR?

Currently testing in my lab environment; I've got WIP for running the integration test suite, but it's failing to pick up the integration test CA (#24729 (review))

Change Type

  • Bug fix
  • New feature
  • Dependencies
  • Non-functional (chore, refactoring, docs)
  • Performance

Is this a breaking change?

  • Yes
  • No

Does this PR include user facing changes?

  • Yes. Please add a changelog fragment based on our guidelines.
  • No. A maintainer will apply the no-changelog label to this PR.

References

Notes

  • Please read our Vector contributor resources.
  • Do not hesitate to use @vectordotdev/vector to reach out to us regarding this PR.
  • Some CI checks run only after we manually approve them.
    • We recommend adding a pre-push hook, please see this template.
    • Alternatively, we recommend running the following locally before pushing to the remote branch:
      • make fmt
      • make check-clippy (if there are failures it's possible some of them can be fixed with make clippy-fix)
      • make test
  • After a review is requested, please avoid force pushes to help us review incrementally.
    • Feel free to push as many commits as you want. They will be squashed into one before merging.
    • For example, you can run git merge origin master and git push.
  • If this PR introduces changes Vector dependencies (modifies Cargo.lock), please
    run make build-licenses to regenerate the license inventory and commit the changes (if any). More details here.

Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
@github-actions github-actions bot added the domain: sinks Anything related to the Vector's sinks label Feb 25, 2026
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
@github-actions github-actions bot added the domain: external docs Anything related to Vector's external, public documentation label Feb 25, 2026
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Copy link
Copy Markdown
Contributor Author

@jlaundry jlaundry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

@zapdos26
Copy link
Copy Markdown
Contributor

Hey @jlaundry thanks for doing this! Would be possible to add ClientCertificateCredential as well? We would certainly use it!

Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
@github-actions github-actions bot added the domain: ci Anything related to Vector's CI environment label Mar 5, 2026
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
@jlaundry jlaundry marked this pull request as ready for review March 10, 2026 08:36
jlaundry added 2 commits April 4, 2026 18:56
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
@jlaundry
Copy link
Copy Markdown
Contributor Author

jlaundry commented Apr 4, 2026

#25124 opened for the Check Spelling issue

@pront pront requested a review from LarryOsterman April 6, 2026 20:56
Copy link
Copy Markdown
Member

pront commented Apr 6, 2026

Disclaimer: this comment was generated and posted by Codex.

I think there is still one azure_blob issue worth addressing before merge:

Configs that set account_name or blob_endpoint without auth currently pass config build, and build_client then falls back to anonymous access. That means a configuration which cannot successfully write blobs can still look valid at startup, only to fail later in healthcheck/runtime.

It seems safer to reject this combination up front with a config error, so that account_name / blob_endpoint imply "OAuth-style auth path" and therefore require auth to be present.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 04f91f5431

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

jlaundry added 2 commits April 7, 2026 08:36
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
@jlaundry
Copy link
Copy Markdown
Contributor Author

jlaundry commented Apr 7, 2026

Configs that set account_name or blob_endpoint without auth currently pass config build, and build_client then falls back to anonymous access. That means a configuration which cannot successfully write blobs can still look valid at startup, only to fail later in healthcheck/runtime.

It seems safer to reject this combination up front with a config error, so that account_name / blob_endpoint imply "OAuth-style auth path" and therefore require auth to be present.

Easy, done: abff085

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: abff085801

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Copy link
Copy Markdown
Member

@pront pront left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @jlaundry, this is an awesome contribution. And special thanks to @LarryOsterman for the thorough reviews.

@pront pront enabled auto-merge April 7, 2026 17:44
@pront
Copy link
Copy Markdown
Member

pront commented Apr 7, 2026

@jlaundry I will enqueue this PR after all checks pass (needs some small fixes)

auto-merge was automatically disabled April 7, 2026 20:07

Head branch was pushed to by a user without write access

@pront pront enabled auto-merge April 7, 2026 20:24
auto-merge was automatically disabled April 8, 2026 07:18

Head branch was pushed to by a user without write access

@jlaundry
Copy link
Copy Markdown
Contributor Author

jlaundry commented Apr 8, 2026

And thank you @pront and the team for the work you do!

(and sorry for the fmt issues... one of these days I'll figure out why the pre-push hook doesn't seem to work in a vscode remote)

@pront pront enabled auto-merge April 8, 2026 17:26
@pront pront added this pull request to the merge queue Apr 8, 2026
Merged via the queue into vectordotdev:master with commit 30d9a58 Apr 8, 2026
58 checks passed
@github-actions github-actions bot locked and limited conversation to collaborators Apr 8, 2026
@pront
Copy link
Copy Markdown
Member

pront commented Apr 8, 2026

@jlaundry this got merged Can you recap the followups you had planned?

@jlaundry jlaundry deleted the feature-azure_auth branch April 10, 2026 19:47
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

domain: ci Anything related to Vector's CI environment domain: external docs Anything related to Vector's external, public documentation domain: sinks Anything related to the Vector's sinks

Projects

None yet

9 participants