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
|**Microsoft Purview**| Governance layer for cataloging, scans, and Data Security Posture Management |
36
37
|**Private Networking**| All traffic secured via private endpoints—no public internet exposure |
@@ -61,6 +62,9 @@ This accelerator extends the [AI Landing Zone](https://github.com/Azure/ai-landi
61
62
-**Integrated data-to-AI pipeline** <br/>
62
63
Connect Fabric lakehouses → OneLake indexer → AI Search → Foundry playground for grounded chat experiences.
63
64
65
+
-**PostgreSQL-to-Fabric mirroring path** <br/>
66
+
Provision Azure Database for PostgreSQL, prepare it for Fabric mirroring, create the Fabric connection, and mirror operational data into OneLake for downstream analytics and AI scenarios.
67
+
64
68
-**Governance built-in** <br/>
65
69
Microsoft Purview integration for cataloging, scoped scans, and Data Security Posture Management (DSPM).
66
70
@@ -169,6 +173,7 @@ After deployment, you'll have a complete, enterprise-ready platform that unifies
169
173
|-------|-----------------|----------------|
170
174
|**AI Platform**| Azure AI Foundry with OpenAI models, playground, and prompt flow | Build, test, and publish AI chat applications without managing infrastructure |
171
175
|**Data Foundation**| Microsoft Fabric with bronze/silver/gold lakehouses and OneLake indexing | Store documents at scale and automatically feed them into your AI workflows |
176
+
|**Operational Data Mirroring**| Azure Database for PostgreSQL prepared for Fabric mirroring | Bring PostgreSQL operational data into Fabric with a documented connection and mirror setup path |
172
177
|**Search & Retrieval**| Azure AI Search with vector and semantic search | Enable RAG (Retrieval-Augmented Generation) for grounded, accurate AI responses |
173
178
|**Governance**| Microsoft Purview with cataloging, scans, and DSPM | Track data lineage, enforce policies, and maintain compliance visibility |
174
179
|**Security**| Private endpoints, managed identities, RBAC, network isolation | Zero public internet exposure—all traffic stays on the Microsoft backbone |
@@ -186,6 +191,9 @@ After deployment, you'll have a complete, enterprise-ready platform that unifies
186
191
- **Fabric-powered retrieval workflows**
187
192
<br/>Land documents in a Fabric lakehouse, index them with OneLake + Azure AI Search, and wire the index into the Foundry playground for grounded chat experiences.
188
193
194
+
- **Fabric mirroring for PostgreSQL**
195
+
<br/>Prepare Azure Database for PostgreSQL for Fabric mirroring, create the Fabric connection, and mirror source data into Fabric using the documented post-deployment flow.
196
+
189
197
- **Governed data and agent operations**
190
198
<br/>Integrate Microsoft Purview for cataloging, scoped scans, and Data Security Posture Management (DSPM) so compliance teams can monitor the same assets the app consumes.
191
199
@@ -208,6 +216,16 @@ After deployment, you'll have a complete, enterprise-ready platform that unifies
208
216
5. **Publish application** → Deploy the chat experience to end users
209
217
6. **Monitor governance** → Review data lineage and security posture in Purview
210
218
219
+
### PostgreSQL Mirroring Setup
220
+
221
+
If you deploy Azure Database for PostgreSQL, the repo also supports a documented Fabric mirroring path after deployment:
222
+
223
+
1. Prepare the PostgreSQL server and mirroring user with the provided automation.
224
+
2. Create the Fabric PostgreSQL connection using the `fabric_user` credentials stored in Key Vault.
225
+
3. Start the mirror in Fabric so PostgreSQL data lands in OneLake.
226
+
227
+
See the detailed steps in [docs/postgresql_mirroring.md](./docs/postgresql_mirroring.md) and the shorter checklist in [docs/post_deployment_steps.md](./docs/post_deployment_steps.md).
When `postgreSqlNetworkIsolation` is `false`, PostgreSQL uses public access and does not create private endpoints or private DNS resources.
450
455
456
+
`postgreSqlAuthConfig` should remain set to both authentication modes enabled if you plan to configure Fabric mirroring after deployment. This ensures the server is created with password authentication available for the `fabric_user` connection instead of relying on a later hook to change the auth mode.
457
+
458
+
`postgreSqlMirrorConnectionMode` controls which credential the manual Fabric PostgreSQL connection should use after deployment:
459
+
460
+
-`fabricUser` uses the dedicated least-privilege mirroring user and `postgres-fabric-user-password`. This is the production-oriented default.
461
+
-`admin` uses the PostgreSQL admin login and `postgres-admin-password`. This is intended for demo automation scenarios where you want to avoid creating a separate mirroring user.
5. Open the **bronze** lakehouse and verify the `Files/documents` folder structure exists
49
+
6. In the workspace, check each lakehouse (**bronze**, **silver**, **gold**) and confirm the **Sensitivity label** matches the value set in the parameter file.
49
50
50
51
### PostgreSQL Mirroring (if enabled)
51
52
52
-
Use these short steps to create the Fabric connection and enable mirroring. For full details and troubleshooting, see [PostgreSQL mirroring](./postgresql_mirroring.md).
53
+
Use these short steps to verify the automatic Fabric connection and mirroring flow. For full details and troubleshooting, see [PostgreSQL mirroring](./postgresql_mirroring.md).
53
54
54
-
0. In **Azure Portal** → **Key Vault** → your vault → **Networking**, set **Public access** to **Allow public access from specific virtual networks and IP addresses**, add your client IP, then **Apply**. This lets you read the `fabric_user` password from the vault.
55
+
0. In **Azure Portal** → **Key Vault** → your vault → **Networking**, set **Public access** to **Allow public access from specific virtual networks and IP addresses**, add your client IP, then **Apply**. This lets you read the PostgreSQL connection password from the vault.
55
56
After you retrieve the secret, remove your IP and **Apply** again to re-lock the vault.
56
-
1. In Fabric, open the workspace, then select **Connections** → **New** → **PostgreSQL**.
57
-
2. Use the PostgreSQL server name, database name, and the `fabric_user` credentials stored in Key Vault.
58
-
3. Test the connection and **Save**.
59
-
4. In the workspace, select **New** → **Data pipeline** → **Mirror database**.
60
-
5. Pick the PostgreSQL connection, select the target database, and **Start mirroring**.
57
+
1. Check the resolved mirroring identity instead of hardcoding it:
Copy file name to clipboardExpand all lines: docs/postgresql_mirroring.md
+56-20Lines changed: 56 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,13 +7,8 @@ This guide explains how to complete PostgreSQL mirroring in Microsoft Fabric aft
7
7
What is automated today:
8
8
9
9
- PostgreSQL server prep (roles, grants, seed table, parameters).
10
-
- Mirror creation **after** a Fabric connection exists (scripted).
11
-
12
-
What is still manual and why:
13
-
14
-
- Fabric connection creation is **portal-only** today. The public Fabric API does not currently expose a supported endpoint to create PostgreSQL connections, so the connection must be created in the UI to obtain a `connectionId`.
15
-
16
-
Once Fabric exposes a supported API for connection creation, this step can be fully automated.
10
+
- Fabric connection creation or reuse for PostgreSQL mirroring.
11
+
- Mirror creation after the Fabric connection is resolved.
17
12
18
13
## Why a Fabric Connection Is Required
19
14
@@ -25,16 +20,17 @@ The Fabric mirroring API requires a Fabric "connection" object that stores the P
25
20
- You can sign in to Fabric (app.fabric.microsoft.com) with access to the workspace.
26
21
- PostgreSQL authentication mode is **PostgreSQL and Microsoft Entra authentication** (password auth enabled).
27
22
- You have access to the Key Vault that stores the PostgreSQL secrets.
23
+
- Decide which connection mode you are using: `fabricUser` (default) or `admin` via `postgreSqlMirrorConnectionMode`.
28
24
29
25
## Step 1: Confirm PostgreSQL Details
30
26
31
27
Get the PostgreSQL server FQDN and database name:
32
28
33
29
- FQDN: from `azd env get-value postgreSqlServerFqdn`
34
30
- Database name: `postgres` (default) or your custom DB
- Reuses `fabricPostgresConnectionId` when it is already stored in `azd`.
102
+
- Otherwise resolves the connection login from `postgreSqlMirrorConnectionUserNameOut`.
103
+
- Resolves the connection password secret name from `postgreSqlMirrorConnectionSecretNameOut`.
104
+
- Reads the chosen secret from Key Vault, creates or reuses the Fabric PostgreSQL connection, and stores the resulting `fabricPostgresConnectionId` back into `azd`.
105
+
- Creates the mirrored database after the connection is available.
106
+
107
+
If your PostgreSQL server is reachable only through a Fabric VNet data gateway, set the gateway ID before rerunning the script:
Without `fabricPostgresGatewayId`, the script creates a standard cloud connection.
114
+
115
+
### Manual fallback
116
+
117
+
If you need to create the Fabric connection manually, do not hardcode `fabric_user`, `pgadmin`, or the secret name. Read the values from the deployment outputs first:
Run the mirror script (this is the automation step after the connection exists):
146
+
If the previous script already created the connection automatically, re-running it is safe and idempotent. If you created the connection manually, run it once now:
@@ -126,16 +156,22 @@ Run the mirror script (this is the automation step after the connection exists):
126
156
127
157
## Notes
128
158
129
-
- The deployment now skips the mirror step until a valid Fabric connection exists, so `azd up` will no longer fail on this step.
159
+
- The deployment now attempts to create or reuse the Fabric PostgreSQL connection automatically before creating the mirror.
160
+
- If automatic connection creation cannot reach Key Vault or the source database, the script exits without failing the entire deployment and leaves a manual fallback path.
130
161
- If you rotate passwords, update the Fabric connection in the workspace.
131
162
132
163
## Troubleshooting
133
164
134
165
### Invalid credentials
135
166
136
167
- Ensure PostgreSQL auth is **PostgreSQL and Microsoft Entra authentication** (password auth enabled).
137
-
- Use `fabric_user` in the Fabric connection.
138
-
- Verify the Key Vault secret matches the role password. Automation sets it unless it failed.
168
+
- Use the login from `postgreSqlMirrorConnectionUserNameOut` in the Fabric connection.
169
+
- Verify the Key Vault secret named by `postgreSqlMirrorConnectionSecretNameOut` matches the chosen connection credential.
170
+
171
+
### Private networking or gateway-required sources
172
+
173
+
- If the PostgreSQL server is private-only, set `fabricPostgresGatewayId` in `azd` before rerunning the script so the connection is created under the Fabric VNet gateway.
174
+
- If the gateway ID is not set, the automation uses a shareable cloud connection.
0 commit comments