|
1 | 1 | # Microsoft Assent |
2 | 2 | ## Assent <sub>**A***pproval* **S***olution* **S***implified for* **ENT***erprise*<sub> |
3 | 3 | Microsoft Assent (*a.k.a Approvals*) as a platform provides the "one stop shop" solution for approvers via a model that brings together disparate different approval requests in a consistent and ultra-modern model. Approvals delivers a unified approvals experience for any approval on multiple form factors - Website, Outlook Actionable email, Teams. It consolidates approvals across organization's line of business applications, building on modern technology and powered by Microsoft Azure. It serves as a showcase for solving modern IT scenarios using the latest technologies. |
4 | | -- Payload API - Accepts payload from tenant system. |
5 | | -- Audit Agent Processor - Logs the payload data into Cosmos db. |
6 | | -- Primary Processor - Processes the payload pushed by payload API to service bus. |
7 | | -- Notification Processor - Sends email notifications to Approvers/ Submitters. |
8 | | -- Core API - Set of Web APIs to support the Approvals UI. |
| 4 | +- Payload Receiver Service API - Accepts payload from tenant system. |
| 5 | +- Audit Processor - Azure Function that logs the payload data into Azure Cosmos DB. |
| 6 | +- Primary Processor - Azure Function that processes the payload pushed by payload receiver service API to service bus. |
| 7 | +- Notification Processor - Azure Function that sends email notifications to Approvers/ Submitters as per configurations. |
| 8 | +- WatchdogProcessor - as per configurations from tenant sends reminder email notifications to Approvers for pending approvals as per configurations from tenant. |
| 9 | +- Core Services API - Set of Web APIs to support the Approvals UI. |
9 | 10 |
|
10 | 11 | ## Getting Started |
11 | 12 |
|
@@ -197,15 +198,66 @@ Select the 'Label' under which the configurations needs to be added (e.g., DEV) |
197 | 198 | i.e. Enter the value in this format: @Microsoft.KeyVault(SecretUri=<keyvault Secret Identifier url for AzureAppConfigurationConnectionString>) |
198 | 199 | ``` |
199 | 200 | #### Setup Authentication/Access Permission |
200 | | -* For all the System assinged Managed Identity created earlier assign the following roles to the Azure Storage Account |
201 | | - > Storage Blob Data Contributor |
202 | 201 |
|
203 | 202 | * Setup Authentication for APIs and Function Apps |
204 | 203 | * Update the Reply Urls section of the AzureAD App created earlier with the URLs of the App Services and FunctionApps (HttpTriggered) URLs suffixed with '/auth/login/aad/callback' |
205 | 204 | * In the 'Authentication' section of the AppServices / FunctionApps (HttpTriggered), |
206 | 205 | * Add or update the Authentication values (ClientId/Secret/Issuer/Audience) |
207 | 206 | * Select 'Login with Azure Active Directory' for the option 'Action to take when the request is not authenticated' |
208 | 207 |
|
| 208 | +* Permissions needed needed for System assigned Managed Identity of below Azure Components |
| 209 | + * Payload Receiver Service API: |
| 210 | + * App Configuration Data Reader |
| 211 | + * Azure Service Bus Data Sender |
| 212 | + * Cosmos DB Built-in Data Contributor |
| 213 | + * Key Vault Secrets User |
| 214 | + * Storage Blob Data Contributor |
| 215 | + * Storage Table Data Contributor |
| 216 | + |
| 217 | + * Audit Processor: |
| 218 | + * App Configuration Data Reader |
| 219 | + * Azure Service Bus Data Owner |
| 220 | + * Cosmos DB Built-in Data Contributor |
| 221 | + * Key Vault Secrets User |
| 222 | + * Storage Blob Data Contributor |
| 223 | + * Storage Table Data Contributor |
| 224 | + |
| 225 | + * Primary Processor: |
| 226 | + * App Configuration Data Reader |
| 227 | + * Azure Service Bus Data Owner |
| 228 | + * Cosmos DB Built-in Data Contributor |
| 229 | + * Key Vault Secrets User |
| 230 | + * Storage Blob Data Contributor |
| 231 | + * Storage Table Data Contributor |
| 232 | + |
| 233 | + * Notification Processor: |
| 234 | + * App Configuration Data Reader |
| 235 | + * Azure Service Bus Data Owner |
| 236 | + * Cosmos DB Built-in Data Contributor |
| 237 | + * Key Vault Secrets User |
| 238 | + * Storage Blob Data Contributor |
| 239 | + * Storage Table Data Contributor |
| 240 | + |
| 241 | + * Watchdog Processor: |
| 242 | + * App Configuration Data Reader |
| 243 | + * Cosmos DB Built-in Data Contributor |
| 244 | + * Key Vault Secrets User |
| 245 | + * Storage Blob Data Contributor |
| 246 | + * Storage Table Data Contributor |
| 247 | + |
| 248 | + * Core Services API: |
| 249 | + * App Configuration Data Reader |
| 250 | + * Cosmos DB Built-in Data Contributor |
| 251 | + * Key Vault Secrets User |
| 252 | + * Storage Blob Data Contributor |
| 253 | + * Storage Table Data Contributor |
| 254 | + |
| 255 | + *Note: As of today only way to assign Cosmos DB Built-in Data Contributor is via the PowerShell or az cli below is the command fot the same:* |
| 256 | + ``` |
| 257 | + az cosmosdb sql role assignment create --account-name "Cosmosdb account name" --resource-group "Name of resource group where cosmosdb exists" --scope "/" --principal-id "System assigned identity to to which this Role Assignment is being granted" --role-definition-id "00000000-0000-0000-0000-000000000002" |
| 258 | + ``` |
| 259 | + For more information please read: [Configure role-based access control for your Azure Cosmos DB account with Azure AD | Microsoft Learn](https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-setup-rbac) |
| 260 | +
|
209 | 261 | ## Deploy |
210 | 262 | Deploy the code in these new components using Azure DevOps (Build and Release pipelines) |
211 | 263 |
|
|
0 commit comments