You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: azure_blob: document OAuth authentication support
Add new auth_type values (managed_identity, service_principal,
workload_identity) and their required configuration parameters
(tenant_id, client_id, client_secret, workload_identity_token_file).
Add OAuth authentication section with examples for each method.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|`auto_create_container`| If `container_name` doesn't exist in the remote service, enabling this option handles the exception and auto-creates the container. |`true`|
28
28
|`azure_blob_buffer_key`| Set the Azure Blob buffer key which needs to be specified when using multiple instances of Azure Blob output plugin and buffering is enabled. |`key`|
|`blob_uri_length`| Set the length of the generated blob URI used when creating and uploading objects to Azure Blob Storage. |`64`|
31
31
|`buffer_dir`| Specifies the location of directory where the buffered data will be stored. |`/tmp/fluent-bit/azure-blob/`|
32
32
|`buffer_file_delete_early`| Whether to delete the buffered file early after successful blob creation. |`false`|
33
33
|`buffering_enabled`| Enable buffering into disk before ingesting into Azure Blob. |`false`|
34
+
|`client_id`| Azure AD application (client) ID. Required for `service_principal` and `workload_identity` auth. For `managed_identity`, set to `system` for system-assigned or provide the client ID for user-assigned. |_none_|
35
+
|`client_secret`| Azure AD client secret. Required for `service_principal` auth. |_none_|
|`compress_blob`| Enables compression in the final `blockblob` file. When enabled without `compress`, it uses GZIP; if `compress` is also set, it inherits that codec. This option isn't compatible when `blob_type` = `appendblob`. Fluent Bit returns a configuration error and fails to start. |`false`|
36
38
|`configuration_endpoint_bearer_token`| Bearer token for the configuration endpoint. |_none_|
@@ -52,12 +54,14 @@ Fluent Bit exposes the following configuration properties.
52
54
|`scheduler_max_retries`| Maximum number of retries for the scheduler send blob. |`3`|
53
55
|`shared_key`| Specify the Azure Storage Shared Key to authenticate against the service. This configuration property is mandatory when `auth_type` is `key`. |_none_|
54
56
|`store_dir_limit_size`| Set the max size of the buffer directory. |`8G`|
57
+
|`tenant_id`| Azure AD tenant ID. Required for `service_principal` and `workload_identity` auth. |_none_|
55
58
|`tls`| Enable or disable TLS encryption. Azure service requires this to be set to `on`. |`off`|
56
59
|`unify_tag`| Whether to create a single buffer file when buffering mode is enabled. |`false`|
57
60
|`upload_file_size`| Specifies the size of files to be uploaded in MB. |`200M`|
58
61
|`upload_part_freshness_limit`| Maximum lifespan of an uncommitted file part. |`6D`|
59
62
|`upload_parts_timeout`| Timeout for uploading parts of a blob file. |`10M`|
60
63
|`upload_timeout`| Optional. Specify a timeout for uploads. Fluent Bit will start ingesting buffer files which have been created more than `x` minutes and haven't reached `upload_file_size` limit yet. |`30m`|
64
+
|`workload_identity_token_file`| Path to the federated token file for `workload_identity` auth. |`/var/run/secrets/azure/tokens/azure-identity-token`|
61
65
|`workers`| The number of [workers](../../administration/multithreading.md#outputs) to perform flush operations for this output. |`0`|
62
66
63
67
### Path templating
@@ -89,6 +93,131 @@ pipeline:
89
93
90
94
If a chunk arrives with the tag `kube.var.log.containers.app-default`, this configuration creates blobs under `kube/app-default/2025/12/16/05/042/abcd1234/...`.
91
95
96
+
## OAuth authentication
97
+
98
+
In addition to shared key and SAS token authentication, the Azure Blob plugin supports Azure AD-based authentication using the following methods.
99
+
100
+
### Managed identity
101
+
102
+
Use a system-assigned or user-assigned [managed identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) attached to the compute resource running Fluent Bit. No credentials need to be stored in the configuration.
| `managed_identity` | `system` for system-assigned |
107
+
| `managed_identity` | Application client ID for user-assigned |
108
+
109
+
{% tabs %}
110
+
{% tab title="fluent-bit.yaml" %}
111
+
112
+
```yaml
113
+
pipeline:
114
+
outputs:
115
+
- name: azure_blob
116
+
match: "*"
117
+
account_name: YOUR_ACCOUNT_NAME
118
+
auth_type: managed_identity
119
+
client_id: system
120
+
container_name: logs
121
+
tls: on
122
+
```
123
+
124
+
{% endtab %}
125
+
{% tab title="fluent-bit.conf" %}
126
+
127
+
```text
128
+
[OUTPUT]
129
+
Name azure_blob
130
+
Match *
131
+
Account_Name YOUR_ACCOUNT_NAME
132
+
Auth_Type managed_identity
133
+
Client_Id system
134
+
Container_Name logs
135
+
Tls on
136
+
```
137
+
138
+
{% endtab %}
139
+
{% endtabs %}
140
+
141
+
### Service principal
142
+
143
+
Authenticate using an Azure AD application registration with a client secret.
144
+
145
+
{% tabs %}
146
+
{% tab title="fluent-bit.yaml" %}
147
+
148
+
```yaml
149
+
pipeline:
150
+
outputs:
151
+
- name: azure_blob
152
+
match: "*"
153
+
account_name: YOUR_ACCOUNT_NAME
154
+
auth_type: service_principal
155
+
tenant_id: YOUR_TENANT_ID
156
+
client_id: YOUR_CLIENT_ID
157
+
client_secret: YOUR_CLIENT_SECRET
158
+
container_name: logs
159
+
tls: on
160
+
```
161
+
162
+
{% endtab %}
163
+
{% tab title="fluent-bit.conf" %}
164
+
165
+
```text
166
+
[OUTPUT]
167
+
Name azure_blob
168
+
Match *
169
+
Account_Name YOUR_ACCOUNT_NAME
170
+
Auth_Type service_principal
171
+
Tenant_Id YOUR_TENANT_ID
172
+
Client_Id YOUR_CLIENT_ID
173
+
Client_Secret YOUR_CLIENT_SECRET
174
+
Container_Name logs
175
+
Tls on
176
+
```
177
+
178
+
{% endtab %}
179
+
{% endtabs %}
180
+
181
+
### Workload identity
182
+
183
+
Use [Azure Workload Identity](https://azure.github.io/azure-workload-identity/docs/) to exchange a Kubernetes-projected service account token for an Azure AD access token. This is the recommended approach for workloads running in AKS.
184
+
185
+
{% tabs %}
186
+
{% tab title="fluent-bit.yaml" %}
187
+
188
+
```yaml
189
+
pipeline:
190
+
outputs:
191
+
- name: azure_blob
192
+
match: "*"
193
+
account_name: YOUR_ACCOUNT_NAME
194
+
auth_type: workload_identity
195
+
tenant_id: YOUR_TENANT_ID
196
+
client_id: YOUR_CLIENT_ID
197
+
container_name: logs
198
+
tls: on
199
+
```
200
+
201
+
{% endtab %}
202
+
{% tab title="fluent-bit.conf" %}
203
+
204
+
```text
205
+
[OUTPUT]
206
+
Name azure_blob
207
+
Match *
208
+
Account_Name YOUR_ACCOUNT_NAME
209
+
Auth_Type workload_identity
210
+
Tenant_Id YOUR_TENANT_ID
211
+
Client_Id YOUR_CLIENT_ID
212
+
Container_Name logs
213
+
Tls on
214
+
```
215
+
216
+
{% endtab %}
217
+
{% endtabs %}
218
+
219
+
The `workload_identity_token_file` parameter defaults to `/var/run/secrets/azure/tokens/azure-identity-token`, which is the standard path used by the Azure Workload Identity webhook. Override it only if your environment uses a different path.
220
+
92
221
## Get started
93
222
94
223
Fluent Bit can deliver records to the official service or an emulator.
0 commit comments