Skip to content

Commit cad8a33

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Introduce Preview Secretless Auth Flag for Azure App Registration Integrations (#3471)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 929e2a7 commit cad8a33

10 files changed

Lines changed: 30 additions & 15 deletions

.generator/schemas/v1/openapi.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,6 +791,11 @@ components:
791791
items:
792792
$ref: "#/components/schemas/ResourceProviderConfig"
793793
type: array
794+
secretless_auth_enabled:
795+
description: |-
796+
(Preview) When enabled, Datadog authenticates with this app registration using federated workload identity credentials instead of a client secret.
797+
example: true
798+
type: boolean
794799
tenant_name:
795800
description: Your Azure Active Directory ID.
796801
example: "testc44-1234-5678-9101-cc00736ftest"

examples/v1/azure-integration/UpdateAzureHostFilters.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
namespace="Microsoft.Compute",
3131
),
3232
],
33+
secretless_auth_enabled=True,
3334
tenant_name="testc44-1234-5678-9101-cc00736ftest",
3435
usage_metrics_enabled=True,
3536
)

examples/v1/azure-integration/UpdateAzureIntegration.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
new_client_id="9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
2222
new_tenant_name="9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
2323
resource_collection_enabled=True,
24+
secretless_auth_enabled=True,
2425
tenant_name="9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
2526
)
2627

src/datadog_api_client/v1/model/azure_account.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def openapi_types(_):
3838
"new_tenant_name": (str,),
3939
"resource_collection_enabled": (bool,),
4040
"resource_provider_configs": ([ResourceProviderConfig],),
41+
"secretless_auth_enabled": (bool,),
4142
"tenant_name": (str,),
4243
"usage_metrics_enabled": (bool,),
4344
}
@@ -58,6 +59,7 @@ def openapi_types(_):
5859
"new_tenant_name": "new_tenant_name",
5960
"resource_collection_enabled": "resource_collection_enabled",
6061
"resource_provider_configs": "resource_provider_configs",
62+
"secretless_auth_enabled": "secretless_auth_enabled",
6163
"tenant_name": "tenant_name",
6264
"usage_metrics_enabled": "usage_metrics_enabled",
6365
}
@@ -79,6 +81,7 @@ def __init__(
7981
new_tenant_name: Union[str, UnsetType] = unset,
8082
resource_collection_enabled: Union[bool, UnsetType] = unset,
8183
resource_provider_configs: Union[List[ResourceProviderConfig], UnsetType] = unset,
84+
secretless_auth_enabled: Union[bool, UnsetType] = unset,
8285
tenant_name: Union[str, UnsetType] = unset,
8386
usage_metrics_enabled: Union[bool, UnsetType] = unset,
8487
**kwargs,
@@ -135,6 +138,9 @@ def __init__(
135138
:param resource_provider_configs: Configuration settings applied to resources from the specified Azure resource providers.
136139
:type resource_provider_configs: [ResourceProviderConfig], optional
137140
141+
:param secretless_auth_enabled: (Preview) When enabled, Datadog authenticates with this app registration using federated workload identity credentials instead of a client secret.
142+
:type secretless_auth_enabled: bool, optional
143+
138144
:param tenant_name: Your Azure Active Directory ID.
139145
:type tenant_name: str, optional
140146
@@ -171,6 +177,8 @@ def __init__(
171177
kwargs["resource_collection_enabled"] = resource_collection_enabled
172178
if resource_provider_configs is not unset:
173179
kwargs["resource_provider_configs"] = resource_provider_configs
180+
if secretless_auth_enabled is not unset:
181+
kwargs["secretless_auth_enabled"] = secretless_auth_enabled
174182
if tenant_name is not unset:
175183
kwargs["tenant_name"] = tenant_name
176184
if usage_metrics_enabled is not unset:
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2024-12-17T21:43:00.678Z
1+
2026-05-04T13:56:51.846Z

tests/v1/cassettes/test_scenarios/test_delete_an_azure_integration_returns_ok_response.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
interactions:
22
- request:
3-
body: '{"app_service_plan_filters":"key:value,filter:example","automute":true,"client_id":"17344717-0000-0000-0000-173447178000","client_secret":"TestingRh2nx664kUy5dIApvM54T4AtO","container_app_filters":"key:value,filter:example","cspm_enabled":true,"custom_metrics_enabled":true,"errors":["*"],"host_filters":"key:value,filter:example","metrics_enabled":true,"metrics_enabled_default":true,"new_client_id":"17344717-0000-0000-0000-173447178000","new_tenant_name":"17344717-0000-0000-0000-173447178000","resource_collection_enabled":true,"resource_provider_configs":[{"metrics_enabled":false,"namespace":"Microsoft.Compute"},{"metrics_enabled":false,"namespace":"Microsoft.Web"}],"tenant_name":"17344717-0000-0000-0000-173447178000","usage_metrics_enabled":true}'
3+
body: '{"app_service_plan_filters":"key:value,filter:example","automute":true,"client_id":"17779030-0000-0000-0000-177790301100","client_secret":"TestingRh2nx664kUy5dIApvM54T4AtO","container_app_filters":"key:value,filter:example","cspm_enabled":true,"custom_metrics_enabled":true,"errors":["*"],"host_filters":"key:value,filter:example","metrics_enabled":true,"metrics_enabled_default":true,"new_client_id":"17779030-0000-0000-0000-177790301100","new_tenant_name":"17779030-0000-0000-0000-177790301100","resource_collection_enabled":true,"resource_provider_configs":[{"metrics_enabled":false,"namespace":"Microsoft.Compute"},{"metrics_enabled":false,"namespace":"Microsoft.Web"}],"secretless_auth_enabled":false,"tenant_name":"17779030-0000-0000-0000-177790301100","usage_metrics_enabled":true}'
44
headers:
55
accept:
66
- application/json
@@ -20,7 +20,7 @@ interactions:
2020
code: 200
2121
message: OK
2222
- request:
23-
body: '{"client_id":"17344717-0000-0000-0000-173447178000","tenant_name":"17344717-0000-0000-0000-173447178000"}'
23+
body: '{"client_id":"17779030-0000-0000-0000-177790301100","tenant_name":"17779030-0000-0000-0000-177790301100"}'
2424
headers:
2525
accept:
2626
- application/json
@@ -40,7 +40,7 @@ interactions:
4040
code: 200
4141
message: OK
4242
- request:
43-
body: '{"client_id":"17344717-0000-0000-0000-173447178000","tenant_name":"17344717-0000-0000-0000-173447178000"}'
43+
body: '{"client_id":"17779030-0000-0000-0000-177790301100","tenant_name":"17779030-0000-0000-0000-177790301100"}'
4444
headers:
4545
accept:
4646
- application/json
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2024-12-17T21:43:01.129Z
1+
2026-05-04T13:56:52.686Z

tests/v1/cassettes/test_scenarios/test_update_an_azure_integration_returns_ok_response.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
interactions:
22
- request:
3-
body: '{"app_service_plan_filters":"key:value,filter:example","automute":true,"client_id":"17344717-0000-0000-0000-173447178100","client_secret":"TestingRh2nx664kUy5dIApvM54T4AtO","container_app_filters":"key:value,filter:example","cspm_enabled":true,"custom_metrics_enabled":true,"errors":["*"],"host_filters":"key:value,filter:example","metrics_enabled":true,"metrics_enabled_default":true,"new_client_id":"17344717-0000-0000-0000-173447178100","new_tenant_name":"17344717-0000-0000-0000-173447178100","resource_collection_enabled":true,"resource_provider_configs":[{"metrics_enabled":false,"namespace":"Microsoft.Compute"},{"metrics_enabled":false,"namespace":"Microsoft.Web"}],"tenant_name":"17344717-0000-0000-0000-173447178100","usage_metrics_enabled":true}'
3+
body: '{"app_service_plan_filters":"key:value,filter:example","automute":true,"client_id":"17779030-0000-0000-0000-177790301200","client_secret":"TestingRh2nx664kUy5dIApvM54T4AtO","container_app_filters":"key:value,filter:example","cspm_enabled":true,"custom_metrics_enabled":true,"errors":["*"],"host_filters":"key:value,filter:example","metrics_enabled":true,"metrics_enabled_default":true,"new_client_id":"17779030-0000-0000-0000-177790301200","new_tenant_name":"17779030-0000-0000-0000-177790301200","resource_collection_enabled":true,"resource_provider_configs":[{"metrics_enabled":false,"namespace":"Microsoft.Compute"},{"metrics_enabled":false,"namespace":"Microsoft.Web"}],"secretless_auth_enabled":false,"tenant_name":"17779030-0000-0000-0000-177790301200","usage_metrics_enabled":true}'
44
headers:
55
accept:
66
- application/json
@@ -20,7 +20,7 @@ interactions:
2020
code: 200
2121
message: OK
2222
- request:
23-
body: '{"app_service_plan_filters":"key:value,filter:example","automute":true,"client_id":"17344717-0000-0000-0000-173447178100","client_secret":"TestingRh2nx664kUy5dIApvM54T4AtO","container_app_filters":"key:value,filter:example","cspm_enabled":true,"custom_metrics_enabled":true,"errors":["*"],"host_filters":"key:value,filter:example","new_client_id":"17344717-0000-0000-0000-173447178100","new_tenant_name":"17344717-0000-0000-0000-173447178100","resource_collection_enabled":true,"tenant_name":"17344717-0000-0000-0000-173447178100"}'
23+
body: '{"app_service_plan_filters":"key:value,filter:example","automute":true,"client_id":"17779030-0000-0000-0000-177790301200","client_secret":"TestingRh2nx664kUy5dIApvM54T4AtO","container_app_filters":"key:value,filter:example","cspm_enabled":true,"custom_metrics_enabled":true,"errors":["*"],"host_filters":"key:value,filter:example","new_client_id":"17779030-0000-0000-0000-177790301200","new_tenant_name":"17779030-0000-0000-0000-177790301200","resource_collection_enabled":true,"secretless_auth_enabled":true,"tenant_name":"17779030-0000-0000-0000-177790301200"}'
2424
headers:
2525
accept:
2626
- application/json
@@ -40,7 +40,7 @@ interactions:
4040
code: 200
4141
message: OK
4242
- request:
43-
body: '{"client_id":"17344717-0000-0000-0000-173447178100","tenant_name":"17344717-0000-0000-0000-173447178100"}'
43+
body: '{"client_id":"17779030-0000-0000-0000-177790301200","tenant_name":"17779030-0000-0000-0000-177790301200"}'
4444
headers:
4545
accept:
4646
- application/json

tests/v1/features/azure_integration.feature

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Feature: Azure Integration
1212
@generated @skip @team:DataDog/azure-integrations
1313
Scenario: Create an Azure integration returns "Bad Request" response
1414
Given new "CreateAzureIntegration" request
15-
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
15+
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "secretless_auth_enabled": true, "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
1616
When the request is sent
1717
Then the response status is 400 Bad Request
1818

@@ -26,7 +26,7 @@ Feature: Azure Integration
2626
@generated @skip @team:DataDog/azure-integrations
2727
Scenario: Delete an Azure integration returns "Bad Request" response
2828
Given new "DeleteAzureIntegration" request
29-
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
29+
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "secretless_auth_enabled": true, "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
3030
When the request is sent
3131
Then the response status is 400 Bad Request
3232

@@ -53,28 +53,28 @@ Feature: Azure Integration
5353
@generated @skip @team:DataDog/azure-integrations
5454
Scenario: Update Azure integration host filters returns "Bad Request" response
5555
Given new "UpdateAzureHostFilters" request
56-
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
56+
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "secretless_auth_enabled": true, "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
5757
When the request is sent
5858
Then the response status is 400 Bad Request
5959

6060
@generated @skip @team:DataDog/azure-integrations
6161
Scenario: Update Azure integration host filters returns "OK" response
6262
Given new "UpdateAzureHostFilters" request
63-
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
63+
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "secretless_auth_enabled": true, "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
6464
When the request is sent
6565
Then the response status is 200 OK
6666

6767
@generated @skip @team:DataDog/azure-integrations
6868
Scenario: Update an Azure integration returns "Bad Request" response
6969
Given new "UpdateAzureIntegration" request
70-
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
70+
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "testc7f6-1234-5678-9101-3fcbf464test", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "metrics_enabled": true, "metrics_enabled_default": true, "new_client_id": "new1c7f6-1234-5678-9101-3fcbf464test", "new_tenant_name": "new1c44-1234-5678-9101-cc00736ftest", "resource_collection_enabled": true, "resource_provider_configs": [{"metrics_enabled": true, "namespace": "Microsoft.Compute"}], "secretless_auth_enabled": true, "tenant_name": "testc44-1234-5678-9101-cc00736ftest", "usage_metrics_enabled": true}
7171
When the request is sent
7272
Then the response status is 400 Bad Request
7373

7474
@team:DataDog/azure-integrations
7575
Scenario: Update an Azure integration returns "OK" response
7676
Given there is a valid "azure_account" in the system
7777
And new "UpdateAzureIntegration" request
78-
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "{{ uuid }}", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "new_client_id": "{{ uuid }}", "new_tenant_name": "{{ uuid }}", "resource_collection_enabled": true, "tenant_name": "{{ uuid }}"}
78+
And body with value {"app_service_plan_filters": "key:value,filter:example", "automute": true, "client_id": "{{ uuid }}", "client_secret": "TestingRh2nx664kUy5dIApvM54T4AtO", "container_app_filters": "key:value,filter:example", "cspm_enabled": true, "custom_metrics_enabled": true, "errors": ["*"], "host_filters": "key:value,filter:example", "new_client_id": "{{ uuid }}", "new_tenant_name": "{{ uuid }}", "resource_collection_enabled": true, "secretless_auth_enabled": true, "tenant_name": "{{ uuid }}"}
7979
When the request is sent
8080
Then the response status is 200 OK

0 commit comments

Comments
 (0)