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
<summary><b>List of References</b> (Click to expand)</summary>
17
17
18
18
-[Microsoft Foundry SDKs and Endpoints](https://learn.microsoft.com/en-us/azure/ai-foundry/how-to/develop/sdk-overview?view=foundry&pivots=programming-language-python)
19
+
- Microsoft Defender for Cloud (DevOps security):
20
+
-[Connect GitHub to Defender for Cloud](https://learn.microsoft.com/azure/defender-for-cloud/quickstart-onboard-github)
21
+
-[Connect Azure DevOps to Defender for Cloud](https://learn.microsoft.com/azure/defender-for-cloud/quickstart-onboard-devops)
22
+
-[DevOps security permissions and prerequisites](https://learn.microsoft.com/azure/defender-for-cloud/devops-support)
23
+
24
+
</details>
25
+
26
+
<details>
27
+
<summary><b>Table of Content</b> (Click to expand)</summary>
> 2. Initialize terraform with `terraform init`. Click here to [understand more about the deployment process](./terraform-infrastructure/README.md)
33
52
> 3. Run `terraform apply`, you can also leverage `terraform apply -auto-approve`.
34
53
54
+
## Deployment Approaches (pick one)
55
+
56
+
-**Container Apps (recommended default in this repo)**
57
+
- In `terraform-infrastructure/terraform.tfvars`: set `deployment_target = "containerapps"`
58
+
- Run: `cd terraform-infrastructure` then `terraform apply -var-file terraform.tfvars`
59
+
60
+
-**App Service (Linux custom container)**
61
+
- In `terraform-infrastructure/terraform.tfvars`: set `deployment_target = "appservice"` and choose `app_service_sku` (e.g. `P0v3`)
62
+
- Run: `cd terraform-infrastructure` then `terraform apply -var-file terraform.tfvars`
63
+
35
64
## Key Features
36
65
37
66
-**Multi-agent chat orchestration (default runtime)**: WebSocket `/ws` chat app orchestrates multiple agents in a single conversation flow (routing + multi-step handoffs)
@@ -49,11 +78,52 @@ Last updated: 2026-03-13
49
78
-**UI-visible diagnostics**: Correlated `error_id` responses and optional tracebacks via `A2A_DEBUG=true` for faster troubleshooting
50
79
-**Optional A2A server included**: `src/a2a/` contains an A2A-style server framework, but it is not the default Container Apps entrypoint unless you deploy it explicitly
51
80
52
-
## About A2A Protocol
81
+
> [!NOTE]
82
+
> Visibility-first rollout (recommended for demos):
83
+
>
84
+
> - Onboard **GitHub connector only** first to validate the Defender dashboards/workbooks.
85
+
> - Onboard **Azure DevOps connector** only in a **sandbox org/project**.
86
+
> - Keep **PR annotations OFF** initially (no write-back to PRs) until you decide to enable them.
87
+
88
+
## More Security with Microsoft Defender
53
89
54
-
`A2A (Agent-to-Agent) Protocol is a standardized communication framework that enables multiple AI agents to collaborate and coordinate tasks seamlessly.` Like a communication pattern for coordinating multiple agents through structured messages, delegation, and (optionally) event-driven workflows.
90
+
> [!IMPORTANT]
91
+
> **Defender is enabled by default in this repo's Terraform defaults.** This can incur Azure costs (Defender plans) and will provision DevOps security connector resources that still require a one-time interactive authorization step for GitHub/Azure DevOps.
92
+
> To opt out, explicitly set the related variables to `false` in [terraform-infrastructure/terraform.tfvars](terraform-infrastructure/terraform.tfvars).
93
+
94
+
This repo supports two complementary “Defender” scenarios:
95
+
96
+
1.**Microsoft Defender for Cloud (workload protection / cloud posture)**
97
+
- This repo includes an opt-in Terraform configuration to enable Defender for Cloud plans at the subscription scope.
98
+
- Toggle via `enable_defender_for_cloud` in [terraform-infrastructure/terraform.tfvars](terraform-infrastructure/terraform.tfvars) (or the example `tfvars` files above).
99
+
- Note: enabling Defender plans can incur Azure costs.
- This repo can provision the **connector resources** via Terraform, but onboarding still requires **interactive authorization** to GitHub and/or Azure DevOps in the Azure portal (or providing a one-time OAuth code).
103
+
- This is the feature area that provides the “central dashboard” experience for GHAS-like findings (code scanning, dependency, secrets) across **organizations/projects** (not just individual repos).
104
+
- It can optionally add **Pull Request annotations** (a write-back action) but only when you explicitly enable/configure that feature.
105
+
106
+
> [!NOTE]
107
+
> Opt out (disable Defender): In [terraform-infrastructure/terraform.tfvars](terraform-infrastructure/terraform.tfvars), set:
108
+
>
109
+
> -`enable_defender_for_cloud = false`
110
+
> -`enable_defender_devops_security = false`
111
+
112
+
### If the Azure portal blade errors
113
+
114
+
> If the Azure portal **Defender for Cloud → Environment settings** page fails to load with an error like: `ECS feature flags for project 'Defenders' are not initialized (ErrorAcquiringViewModel)`. Use one of these workarounds:
115
+
116
+
-**Open the connector resource directly** (bypasses the Environment Settings blade):
117
+
- Find the connector resource IDs from Terraform outputs (look for `defender_devops_security_connector_ids`).
-**List the connector IDs via CLI** (then open them with the URL above): `az resource list -g <rg-name> --resource-type Microsoft.Security/securityConnectors -o table`
122
+
-**Browser reset**: try InPrivate/Incognito, disable extensions (ad blockers), and sign out/in.
123
+
124
+
## About A2A Protocol
55
125
56
-
This repo contains **two multi-agent implementations**:
126
+
`A2A (Agent-to-Agent) Protocol is a standardized communication framework that enables multiple AI agents to collaborate and coordinate tasks seamlessly.` Like a communication pattern for coordinating multiple agents through structured messages, delegation, and (optionally) event-driven workflows. This repo contains **two multi-agent implementations**:
57
127
58
128
-**Default deployed chat runtime (what the Dockerfile runs)**: WebSocket `/ws` in `src/chat_app_multi_agent.py`, which routes requests and orchestrates **real Azure AI Foundry Agents** in a multi-step handoff sequence.
59
129
-**Optional A2A server implementation**: an A2A-style server under `src/a2a/` (routers, coordinator, event/task framework). Use this only if you deploy/run that entrypoint.
@@ -87,7 +157,7 @@ This repo contains **two multi-agent implementations**:
Copy file name to clipboardExpand all lines: terraform-infrastructure/README.md
+11-2Lines changed: 11 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -55,6 +55,15 @@ Templates structure:
55
55
- terraform.tfvars `(Variable values)`: This file contains the actual values for the variables defined in `variables.tf`. By separating variable definitions and values, you can easily switch between different sets of values for different environments (e.g., development, staging, production) without changing the main configuration files.
56
56
- outputs.tf `(Output values)`: This file defines the output values that Terraform should return after applying the configuration. Outputs are useful for displaying information about the resources created, such as IP addresses, resource IDs, and other important details. They can also be used as inputs for other Terraform configurations or scripts.
57
57
58
+
## Optional: Microsoft Defender for Cloud
59
+
60
+
This Terraform setup includes an opt-in configuration to enable **Microsoft Defender for Cloud** plans at the subscription scope.
61
+
62
+
> [!IMPORTANT]
63
+
> Enabling Defender plans can incur additional costs in your Azure subscription.
64
+
65
+
- To enable, set `enable_defender_for_cloud = true` in `terraform.tfvars` and optionally adjust `defender_for_cloud_plans`.
0 commit comments