Skip to main content

i-ARM Configuration Design

Last Updated: 2024-12

Prepared By: i-ARM Devops Team;Vivek.B@infotechtion.com

Prepared For: Consumer Architects

STANDARDS

Naming Standards

The naming standards and guidelines for Azure resources followed by the i-ARM are described in this section. Following recommended naming conventions makes managing resources in the Azure environment easier, increases clarity, and makes resource grouping and recognizing them simpler.

Note: In Azure, there are several types of resources that must have globally unique names. These resources are typically part of services that need to be accessible worldwide, so the names are unique across all tenants in Azure.

Below is the list of I-ARM resources which should have unique name

  • Azure Key Vault
  • Azure Container Registry
  • Azure SQL Database Server
  • Azure App Service (Web Apps & Function Apps)
  • Azure Storage Account
Azure ComponentStandard
Application Registrationspn-<azureserviceabbr>-iarm-<purpose>-<env>
Resource Group Namerg-iarm-<purpose>-<regionabbr>-<env>
Azure Services (Without Storage Accounts)<azureserviceabbr>-iarm-<iarmmodule>-<regionabbr>-<env>
Azure Storage Account<azureserviceabbr>iarm<iarmmodule><regionabbr><env> (This should always be less than 24 characters)
Security Groupssg-<azureserviceabbr>-iarm-<purpose>-<env>
Virtual Machine<azureserviceabbr><iarm><purpose><regionabbr><env> (This should always be less than 15 characters)
General NamesMust include iarm to clearly identify a dedicated use of iarm.

Acronyms

AcronymDescription
MSMicrosoft
SPNService Principal
WAPPWeb application
IARMInfotechtion-ARM
UIDIRECTORYACCESSUser interface directory access
PRDProduction
FUNCFunction
APIAUTHApplication Programming Interface Authentication
GRAPHAPIGraph API
DEVOPSCONNAzure Devops Connection
MYDISPPAMy Disposal Power Automate
SPOACCESSSharePoint Online Access
SQLStructured Query Language
SGService Group
SVCService
VNETVirtual Network
RGResource Group
WEBAPPWeb Application
FUNCAPPFunction Application
PEPrivate Endpoint
KVKey Vault
ASPActive Server Pages
MYDISPMy Disposal (feature of iARM)
UIUser interface
VMVirtual Machine
IACInfrastructure as a code
PRMPhysical Records Management
SPFxSharePoint Framework
PnPPatterns and Practices
PBIPower BI
DGData Gateway
RDPRemote Desktop
WJWeb Job
ACIAzure Container Instance
ACRAzure Container Registry
AFSAzure File Share
NFSNetwork File Share
MPIPMicrosoft Purview Information Protection

Overview

Design Architecture

![A screenshot of a computer

Description automatically generated](data:image/png;base64...)

RefSource NameTarget NameProtocolsData GatewayVNetTarget’s Inbound PortFirewallAuthentication method
MS Purview – i-ARM Power Automatei-ARM SQL Data storeTCP / HTTPS: <confirmed during implementation>YSource: N Target: N1433Y –nativeSQL Authentication
i-ARM Function AppsMS PurviewHTTPS: <confirmed during implementation>NSource: Y Target: N443NDedicated Service Principal (OAUTH)
i-ARM Function Appsi-ARM SQL Data storeTCP / HTTPS: <confirmed during implementation>NSource: Y Target: N1433Y –nativeEntra Managed Identity (OAUTH)
i-ARM Function AppsApplication Insights/Log AnalyticsHTTPS: <confirmed during implementation>NSource: Y Target: N443NInstrumentation Key
i-ARM Function appsSharePoint OnlineHTTPS: <confirmed during implementation>NSource: Y Target: N443NDedicated Service Principal (OAUTH)
i-ARM Power AutomateKey VaultHTTPS: <confirmed during implementation>NSource: N Target: N443Y –nativeEntra Cloud Service Account
i-ARM Power AutomateStorage AccountHTTPS: <confirmed during implementation>NSource: N Target: N443Y –nativeEntra Cloud Service Account
i-ARM Power AutomateSharePoint OnlineHTTPS: <confirmed during implementation>NSource: N Target: N443NDedicated Service Principal (OAUTH)
i-ARM Function AppsKey VaultHTTPS: <confirmed during implementation>NSource: Y Target: N443Y –nativeEntra Managed Identity (OAUTH)
i-ARM WebApp (App Service)i-ARM Function appsHTTPS: <confirmed during implementation>NSource: Y Target: Y443NEntra Managed Identity (OAUTH)
i-ARM WebApp (App Service)Graph APIs graph.microsoft.com/*HTTPS: <confirmed during implementation>NSource: Y Target: N443NDedicated Service Principal (OAUTH)
i-ARM Function AppsGraph APIs graph.microsoft.com/*HTTPS: <confirmed during implementation>NSource: Y Target: N443NDedicated Service Principal (OAUTH)
i-ARM Web Job (App Service)Graph APIs graph.microsoft.com/*HTTPS: <confirmed during implementation>NSource: Y Target: N443NDedicated Service Principal (OAUTH)
i-ARM Web Job (App Service)i-ARM SQL Data storeTCP / HTTPS: <confirmed during implementation>NSource: Y Target: N1433Y –nativeEntra Managed Identity (OAUTH)
i-ARM Web Job (App Service)Key VaultHTTPS: <confirmed during implementation>NSource: Y Target: N443Y –nativeEntra Managed Identity (OAUTH)
i-ARM Web Job (App Service)Office Management API manage.office.com/api/*HTTPS: <confirmed during implementation>NSource: Y Target: N443NDedicated Service Principal (OAUTH)
i-ARM Function AppsOffice Management API manage.office.com/api/*HTTPS: <confirmed during implementation>NSource: Y Target: N443NDedicated Service Principal (OAUTH)
Infotechtion i-ARM DevOpsResource GroupHTTPS: <confirmed during implementation>NSource: N Target: N443NDedicated Service Principal (OAUTH)
Power BIi-ARM SQL Data storeTCP / HTTPS: <confirmed during implementation>YSource: N Target: N1433Y –nativeSQL Authentication
Landing Zone i-ARM Container RegistryInfotechtion Container registryTCP / HTTPS: <confirmed during implementation>NSource: N Target: N443Y - nativeDedicated Service Principal (OAUTH)
i-ARM Container InstanceLanding Zone i-ARM Container RegistryTCP / HTTPS: <confirmed during implementation>NSource: Y Target: N443Y - nativeEntra Managed Identity (OAUTH)
i-ARM Agent ServicesKey VaultHTTPS: <confirmed during implementation>NSource: N Target: N443Y –nativeEntra Cloud Service Account
i-ARM Agent Servicesi-ARM SQL Data storeTCP / HTTPS: <confirmed during implementation>NSource: N Target: N443Y –nativeDedicated Service Principal (OAUTH)
i-ARM Agent ServicesStorage AccountHTTPS: <confirmed during implementation>NSource: N Target: N443Y –nativeEntra Cloud Service Account
25i-ARM Agent ServicesAzure File Share and Network File ShareSMBNSource: N Target: N445Y –native (Storage Account)Entra Cloud Service Account

Azure Governance

Management Group

This section describes the deployment strategy for the i-ARM solution within the Azure environment, specifically focusing on the use of Management Groups. By utilizing a structured approach to Management Groups, the solution can be efficiently organized and governed within the landing zone, ensuring compliance, security, and streamlined management of resources across multiple subscriptions.

ParentLanding Zone
Management Group<Consumer Landing Zone>
Azure Monitor<Consumer log analytics workspace for app events>

Subscription

This section outlines the deployment of i-ARM solution within an existing or dedicated Azure subscription in the specified tenancy. All solution components are consolidated within a single Azure resource group, facilitating streamlined management and organization of resources.

Tenant<Consumer tenant name> (<Consumer tenant id>)
Subscription<Consumer subscription name>

Subscription Resource Providers

This section outlines the configuration of the required Azure subscription resource providers for deploying the i-ARM solution within the Azure subscription identified for i-ARM in the specified tenancy. All necessary resource providers are enabled at the subscription level, ensuring that all i-ARM solution components can be consolidated within a single Azure resource group. This setup facilitates streamlined management and organization of resources, allowing for consistent provisioning, monitoring, and scaling of the solution's components.

Before deploying the i-ARM solution, ensure that the following Azure resource providers are registered within the subscription by the subscription owner:

RefResource ProviderDescription
1Microsoft.DomainRegistrationManages domain registrations for custom domains in Azure.
2Microsoft.NetworkProvides networking capabilities, including Virtual Networks, Load Balancers, and Network Security.
3Microsoft.AdvisorDelivers best practice recommendations for cost, security, reliability, and operational excellence.
4Microsoft.CloudShellSupports the Azure Cloud Shell service, a browser-accessible shell environment for managing resources.
5Microsoft.SqlEnables provisioning of Azure SQL databases and associated resources.
6Microsoft.MarketplaceNotificationsHandles notifications related to Azure Marketplace subscriptions and services.
7Microsoft.ServiceLinkerFacilitates connections between Azure services for resource linking and integrations.
8Microsoft.ManagedIdentityProvides Managed Identity for secure service connections without credentials.
9Microsoft.AlertsManagementManages and monitors alerts for various Azure services.
10Microsoft.RecoveryServicesManages backup and recovery solutions using Azure Backup and Site Recovery.
11Microsoft.SecurityManages security solutions and configurations within Azure Security Center.
12Microsoft.WebEnables hosting and management of web applications, including Azure App Services and Functions.
13Microsoft.StorageManages Azure Storage accounts including Blob, File Shares, and more.
14Microsoft.ComputeProvides virtual machines, scale sets, and compute-related resources.
15Microsoft.EventGridEnables event-driven architectures with support for events from Azure resources.
16Microsoft.OperationalInsightsProvides monitoring and management solutions like Log Analytics and Azure Monitor.
17microsoft.insightsEnables Azure Monitor features for diagnostics, metrics, and alerts.
18Microsoft.KeyVaultManages secure storage and access for secrets, keys, and certificates.
19Microsoft.ResourceHealthProvides real-time monitoring of resource health and availability in Azure.
20Microsoft.GuestConfigurationManages guest OS configuration policies and auditing in Azure Virtual Machines.
21Microsoft.PolicyInsightsManages policy compliance status and enforcement in Azure resources.
22Microsoft.LogicFacilitates workflows using Azure Logic Apps for integration and automation.
23Microsoft.AutomationProvides automation capabilities for resource management through runbooks and scripts.
24Microsoft.ContainerInstanceManages Azure Container Instances (ACI), which allow you to run containers in a fully managed environment without the need for VM provisioning or container orchestration.
25Microsoft.PowerPlatformManages resources related to Microsoft Power Platform, which includes Power Apps, Power Automate, Power BI, and Power Virtual Agents. This provider allows you to create, manage, and integrate Power Platform environments within Azure, enabling the development and deployment of low-code/no-code applications and automation workflows. It's essential for managing Power Platform environments, connections, and integrations with Azure resources.
26Microsoft.ContainerRegistryManages Azure Container Registry (ACR), a managed Docker container registry service provided by Microsoft Azure. It allows you to store and manage Docker container images and artifacts.

Azure Policy

This section highlights the importance of Azure Policies in governing the i-ARM solution and ensuring compliance with organizational standards. This section is usually completed with the consumer architecture team, and refers to consumer specific policies as-built in consumer environment.

Entra

Application Registration

This section details the process and significance of Microsoft Entra / Azure Active Directory (AD) application registration for the i-ARM solution. Application registration is essential for enabling secure access and authentication for several components of the solution. By registering the application in Entra ID / Azure AD, you can manage permissions, control access to APIs, and ensure secure integration with other Azure services.

Note:

  • All SPN permissions must have global admin consent to function properly.
  • All Service Principal Names (SPNs) utilizing a client secret or certificate should have an expiration date set to a minimum of one year from the date of creation, unless explicitly specified otherwise.
Namespn-wapp-iarm-uidirectoryaccess-prd
DescriptionThe service principal used by the i-ARM webapp for hosting the Single-page portal to display the i-ARM user interface and authenticate users against MS Entra ID.
Single-page apphttps://web-iarm-ui-regionabbr-prd.azurewebsites.net
Token configurationToken type: ID Optional Claim: login_hint
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: Groupmember.Read.AllDelegate
Namespn-func-iarm-apiauth-prd
DescriptionThe service principal used for operations which relate to Azure function applications required for the functioning of the ‘My Data & My Disposal’ user interface people picker feature.
Web Redirecthttps://func-iarm-mydata-regionabbr-prd.azurewebsites.net/.auth/login/aad/callback https://func-iarm-mydisp-regionabbr-prd.azurewebsites.net/.auth/login/aad/callback *Pointing to the function apps created
Expose an APIScopeAuthorized Client Applications
Application ID Uri: api://{ Client ID (spn-func-iarm-apiauth-prd) }/user_impersonation Scope Name: user_impersonation Who can consent? Admins and Users Admin consent display name: user_impersonation Admin consent description: Access iarm apis State: Enabled{ Client ID (spn-wapp-iarm-uidirectoryaccess-prd) }
Namespn-func-iarm-urclabelsync-prd
DescriptionThe service principal is used by the i-ARM URC function app to sync the retention labels from Microsoft Purview to i-ARM Data Store.
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: RecordsManagement.ReadWrite.AllApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientsecret
Certificates & SecretsClient Secret: Create a client secret and capture the information in a secure place. This information will be stored in the key vault.
Namespn-func-iarm-graphapi-prd
DescriptionThe service principal necessary for executing Microsoft Graph API calls from other APIs.
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: User.Read.AllApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientcert
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-devopsconn-iarm-deploy-prd
DescriptionThe service principal used for establishing the service connection from target environment to Infotechtion DevOps.
APIPermissionType
Microsoft Graph: User.ReadDelegate
RBACScopeRole
rg-iarm-svc-regionabbr-prdContributor
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientsecret
Certificates & SecretsClient Secret: Create a client secret and capture the information in a secure place. This information will be stored in the key vault.
Namespn-func-iarm-notifications-prd
DescriptionThe service principal required to send any i-ARM notifications to stakeholders.
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: Mail.SendApplication
Microsoft Graph: User.ReadBasic.AllApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientcert
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-mydisppa-iarm-spoaccess-prd
DescriptionThe service principal used for operations which relate to the Power Automate Flows required for the “My Disposal” Module of i-ARM.
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: Sites.ReadWrite.AllApplication
SharePoint: Sites.Read.AllApplication
SharePoint: Sites.FullControl.AllApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientcert
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-func-iarm-mydispconnspoaccess-prd
DescriptionThe service principal used for operations which relate to the M365 Audit Disposal Connector required for the “My Disposal” Module of i-ARM.
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: Sites.Read.AllApplication
Microsoft Graph: Files.Read.AllDelegate
Microsoft Graph: Files.Read.AllApplication
SharePoint: Sites.Read.AllApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientcert
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-sql-iarm-sqlaccess-prd
DescriptionThe service principal used by i-ARM internal services to authenticate with i-ARM SQL leveraging SPN based Entra authentication. This can be changed to use a service account to align with consumer architecture standards.
APIPermissionType
Microsoft Graph: User.ReadDelegate
External ProviderCREATE USER [spn-sql-iarm-sqlaccess-prd] FROM EXTERNAL PROVIDER ALTER ROLE db_datareader ADD MEMBER [spn-sql-iarm-sqlaccess-prd] ALTER ROLE db_datawriter ADD MEMBER [spn-sql-iarm-sqlaccess-prd] GRANT EXEC TO [spn-sql-iarm-sqlaccess-prd] Note: A DB admin is required to login to SQL and run the above scripts
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientsecret
Certificates & SecretsClient Secret: Create a client secret and capture the information in a secure place. This information will be stored in the key vault.
Namespn-func-iarm-prmprovisioning-prd
DescriptionThis service principal is used to provide access to specific SharePoint sites to the Sites.Selected permission for the “spn-func-iarm-prmbulkimport-prd”
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: Sites.FullControl.AllApplication
SharePoint: Sites.FullControl.AllApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientcert
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-func-iarm-prmbulkimport-prd
DescriptionThis service principal is required to authenticate and communicate with SharePoint APIs for PRM Bulk Import functionality
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: TermStore.Read.AllApplication
SharePoint: Sites.SelectedApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientcert
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-func-iarm-prmsync-prd
DescriptionThis service principal is required to authenticate and communicate with SharePoint APIs for PRM Sync functionality to i-ARM
APIPermissionType
Microsoft Graph: User.ReadDelegate
SharePoint: TermStore.Read.AllApplication
SharePoint: TermStore.ReadWrite.AllApplication
SharePoint: Sites.Read.AllApplication
SharePoint: Sites.ReadWrite.AllApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientcert
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-wj-iarm-m365auditsync-prd
DescriptionThis service principal is required for syncing M365 Audit Logs data to i-ARM Data Store
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Graph: AuditLog.Read.AllApplication
Microsoft Graph: AuditLogsQuery-SharePoint.Read.AllApplication
Microsoft Graph: AuditLogsQuery.Read.AllApplication
Office 365 Management APIs: ActivityFeed.ReadApplication
Office 365 Management APIs: ActivityFeed.ReadDlpApplication
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientsecret
Certificates & SecretsClient Secret: Create a client secret and capture the information in a secure place. This information will be stored in the key vault.
Namespn-agent-iarm-downloadarchiveblobs-prd
DescriptionThe service principal used by the i-ARM agent for reading and downloading blobs stored in the archival storage account.
APIPermissionType
Microsoft Graph: User.ReadDelegate
RBACScopeRole
kv-iarm-svc-regionabbr-prdKey Vault Secrets User
kv-iarm-svc-regionabbr-prdKey Vault Certificate User
saiarmarchiveregionabbrprdStorage Blob Data Reader
CredentialsKey VaultSecret Name
kv-iarm-svc-regionabbr-prd{spn name}-clientid
kv-iarm-svc-regionabbr-prd{spn name}-clientsecret
Certificates & SecretsClient Secret: Create a client secret and capture the information in a secure place. This information will be stored in the key vault.
Namespn-agent-iarm-scannerservice-prd
DescriptionThe service principal used by the i-ARM Scanner agent to authenticate against KeyVault using the certificate installed on the VM.
APIPermissionType
Microsoft Graph: User.ReadDelegate
RBACScopeRole
kv-iarm-svc-regionabbr-prdKey Vault Secrets User
kv-iarm-svc-regionabbr-prdKey Vault Certificate User
Certificates & SecretsCertificates: Upload a certificate (public key) with one of the following file types: .cer, .pem
Namespn-agent-iarm-mpipscannerservice-prd
DescriptionThe service principal used by the MPIP Scanner agent to capture sensitive information on files based on the sensitive information types in Microsoft purview portal.
APIPermissionType
Microsoft Graph: User.ReadDelegate
Microsoft Information Protection Sync Service: UnifiedPolicy.Tenant.ReadApplication
Azure Rights Management Services: Content.DelegatedReaderApplication
Azure Rights Management Services: Content.DelegatedWriterApplication
Certificates & SecretsClient Secret: Create a client secret and capture the information in a secure place. This will be required while configuring the MPIP Scanner service on the Virtual Machine

Group

This part highlights the importance of Entra ID / Azure Active Directory security groups in controlling access and permissions within the i-ARM solution.

Namesg-sub-iarm-reader-prd
DescriptionRead access to the azure subscription where i-ARM would be deployed.
RBACScopeRole
SubscriptionReader
Members<To be confirmed at the time of configuration>
Namesg-svc-iarm-webappadministrators-prd
Descriptioni-ARM persona performing administrative actions within i-ARM.
RBACScopeRole
NA
Members<To be confirmed at the time of configuration>
Namesg-svc-iarm-sqlentraadministrators-prd
DescriptionEntra ID administrators accessing i-ARM Data Store
RBACScopeRole
NA
Members<To be confirmed at the time of configuration>
Namesg-svc-iarm-recordsadministrators-prd
Descriptioni-ARM Entra ID group required for the Records Administrator persona
RBACScopeRole
NA
Members<To be confirmed at the time of configuration>
Namesg-svc-iarm-ediscoveryadministrators-prd
Descriptioni-ARM Entra ID group required for eDiscovery Administrator persona
RBACScopeRole
NA
Members<To be confirmed at the time of configuration>

Service/User Accounts

This part highlights the importance of Entra ID / Azure Active Directory service/user accounts in setting up and configuration of the i-ARM solution.

NameTo be Confirmed during engagement
DescriptionAccount required for importing and configuring the power automate flows. This account should also be added as a Connection Creator in the data gateway Note: If the labels in the Microsoft Purview Compliance portal were created with an account different from the one importing the flow, the flows must be shared with the account that created the labels. Additionally, that account should have an E5 license along with the Power Automate Premium Per User Plan. If the Power Automate flows are imported into an environment other than the default Power Platform environment, the labels should only be created and managed using PowerShell. Learn more
LicenseE5 license with Power Automate Premium Per User Plan (Any plan that supports premium connectors)
PermissionsScopeRole
Power Automate EnvironmentEnvironment Maker Role
On-Premises Data Gateway (Power Platform Admin Center)Connection Creator
NameTo be Confirmed during engagement
DescriptionAccount identified as a Gateway Admin for the data gateway that is installed and configured
LicenseE5 license
PermissionsScopeRole
Power Automate EnvironmentEnvironment Maker Role
On-Premises Data Gateway (Power Platform Admin Center)Gateway Admin
NameTo be Confirmed during engagement
DescriptionAccount required to sync the label policies and labels from purview compliance portal. This account would be added to the custom role group created in purview compliance center
LicenseE5 license
PermissionsScopeRole
Microsoft Purview Compliance PortalCreate a custom role group with the below roles in Microsoft Purview Compliance Center View-Only Retention Management View-Only Record Management
NameTo be Confirmed during engagement
DescriptionAccount identified for publishing Power BI reports
LicenseE5 license
PermissionsScopeRole
Power BI WorkspaceOwner
Azure SQL Databasedb_datareader
NameTo be Confirmed during engagement
DescriptionAccount from which the notification emails would be sent
LicenseE3/E5
RBACScopeRole
NANA
NameTo be Confirmed during engagement
DescriptionAccount used by the windows service for reading and downloading blobs
LicenseE5 license
PermissionsScopeRole
Azure Storage Account (saiarmarchiveregionabbrprd)Storage Blob Data Reader
Azure Key Vault (kv-iarm-svc-regionabbr-prd)* Key Vault Secrets User * Key Vault Certificate User
NameTo be Confirmed during engagement
DescriptionAccount used by the windows service for scanning the Network File Shares or Azure File Shares
LicenseE5 license
PermissionsScopeRole
Azure Storage Account (mounting must be done using the Storage Account access Key)NA
Network File ShareRead Write access on the file share for scanning (Write is only necessary if Immutability Feature is enabled)
Azure Key Vault (kv-iarm-svc-regionabbr-prd)* Key Vault Secrets User * Key Vault Certificate User
NameTo be Confirmed during engagement
DescriptionAccount used by the MPIP Scanner service for installing and scanning the Network File Shares or Azure File Shares
LicenseE5 license
Other considerationsThere should be at least one sensitivity label policy published to this service account for the MPIP Scanner to start capturing Sensitive information types. The sensitivity label should also have send to audit attribute set to true for the data to be captured in M365 audit logs. Reference: Enable Audit
PermissionsScopeRole
sql-iarmmpip-svc-regionabbr-prdSysadmin Reference
sql-iarmmpip-svc-regionabbr-prddb_owner
Network/ Azure File Share (Mounted on Scanner VM)Read Write access on the file share for scanning (Write is only necessary if protection is being applied)
Azure Key Vault (kv-iarm-svc-regionabbr-prd)* Key Vault Secrets User * Key Vault Certificate User

RBAC Roles

RBAC (Role-Based Access Control) on Azure is a system for managing access to Azure resources by assigning roles to different actors (users, groups, or managed identities)

Note: An authorized user from the consumer cloud team with an Owner role on the subscription is required to assign the necessary RBAC roles defined below for the following Azure services.

ServiceActorRoleActor TypeAzure Entra ID Group or Assignment Type
M365 and Azure[Global Admin Account]Global AdminUserDirect
SharePoint Admin Portal[SharePoint Administrator Account]SharePoint AdministratorUserDirect
Microsoft Purview Portal[Records Management Account]Records Management (Purview Role group)UserDirect
Azure Subscription Readersg-sub-iarm-reader-prdReaderGroupEntra ID Security Group
Azure Resource Groupspn-devopsconn-iarm-deploy-prdContributorService PrincipalDirect
Azure Key Vaultsg-sub-iarm-reader-prdKey Vault Secrets UserGroupEntra ID Security Group
Key Vault Certificate UserGroupEntra ID Security Group
spn-agent-iarm-downloadarchiveblobs-prdKey Vault Secrets UserService PrincipalDirect
Key Vault Certificate UserService PrincipalDirect
spn-agent-iarm-scannerservice-prdKey Vault Secrets UserService PrincipalDirect
Key Vault Certificate UserService PrincipalDirect
spn-devopsconn-iarm-deploy-prdKey Vault AdministratorService PrincipalDirect
* func-iarm-urc-regionabbr-prd * func-iarm-mydisp-regionabbr-prd * func-iarm-mydata-regionabbr-prd * func-iarm-prmbulk-regionabbr-prd * func-iarm-prmsync-regionabbr-prd * wj-iarm-m365auditsync-regionabbr-prd * func-iarm-m365auditconnector-regionabbr-prd * func-iarm-m365dispconnector-regionabbr-prdKey Vault Certificate UserManaged IdentityDirect
* func-iarm-urc-regionabbr-prd * func-iarm-mydisp-regionabbr-prd * func-iarm-mydata-regionabbr-prd * func-iarm-prmbulk-regionabbr-prd * func-iarm-prmsync-regionabbr-prd * wj-iarm-m365auditsync-regionabbr-prd * func-iarm-m365auditconnector-regionabbr-prd * func-iarm-m365dispconnector-regionabbr-prdKey Vault Secrets UserManaged IdentityDirect
[Service Account Importing the PowerAutomate Flows]Key Vault Certificate UserUserDirect
Key Vault Secrets UserUserDirect
[Service Account reading and downloading blobs]Key Vault Certificate UserUserDirect
Key Vault Secrets UserUserDirect
Dataverse (Common Data Service)Key Vault Secrets UserEnterprise ApplicationDirect
Azure SQL Database [sql-iarm-svc-regionabbr-prd]* func-iarm-urc-regionabbr-prd * func-iarm-mydisp-regionabbr-prd * func-iarm-mydata-regionabbr-prd * func-iarm-prmbulk-regionabbr-prd * func-iarm-prmsync-regionabbr-prd * wj-iarm-m365auditsync-regionabbr-prd * func-iarm-m365auditconnector-regionabbr-prd * func-iarm-m365dispconnector-regionabbr-prddb_datareader db_datawriterManaged IdentityDirect
spn-sql-iarm-sqlaccess-prddb_datareader db_datawriterService PrincipalDirect
Azure SQL Database [sql-iarmmpip-svc-regionabbr-prd][Service Account identified for MPIP Scanner installation and configuration]Sysadmin sb_ownerUserDirect
Azure Storage Account [saiarmprmbulkregionabbrprd]func-iarm-prmbulk-regionabbr-prd* Storage Blob Data Contributor * Storage Queue Data Contributor * Storage Table Data ContributorManaged IdentityDirect
Azure Storage Account [saiarmmydispregionabbrprd]func-iarm-mydisp-regionabbr-prdStorage Blob Data ContributorManaged IdentityDirect
Azure Storage Account [saiarmmydataregionabbrprd]func-iarm-mydata-regionabbr-prdStorage Blob Data ContributorManaged IdentityDirect
Azure Storage Account [saiarmurcregionabbrprd]func-iarm-urc-regionabbr-prdStorage Blob Data ContributorManaged IdentityDirect
Azure Storage Account [saiarmprmsyncregionabbrprd]func-iarm-prmsync-regionabbr-prdStorage Blob Data ContributorManaged IdentityDirect
Azure Storage Account [saiarm365syncregionabbrprd]wj-iarm-m365auditsync-regionabbr-prd* Storage Blob Data Contributor * Storage Queue Data ContributorManaged IdentityDirect
Azure Storage Account [saiarm365connregionabbrprd]func-iarm-m365auditconnector-regionabbr-prdStorage Blob Data ContributorManaged IdentityDirect
Azure Storage Account [saiarmdispconregionabbrprd]func-iarm-m365dispconnector-regionabbr-prd* Storage Blob Data Contributor * Storage Queue Data Contributor * Storage Table Data ContributorManaged IdentityDirect
Azure Storage Account [saiarmarchiveregionabbrprd][Service Account importing the Power Automate Flows]Storage Blob Data ContributorUserDirect
[Service Account reading and downloading blobs]Storage Blob Data ReaderUserDirect
[spn-agent-iarm-downloadarchiveblobs-prd]Storage Blob Data ReaderService PrincipalDirect
Azure Storage Account [saiarmdiappregionabbrprd]func-iarm-mydata-regionabbr-prdStorage Blob Data ContributorManaged IdentityDirect
Azure VMsg-sub-iarm-reader-prdReaderGroupEntra ID Security Group
Azure Bastionsg-sub-iarm-reader-prdReaderGroupEntra ID Security Group
Power Platform[Service Account Importing the Power Automate Flows]Environment Maker RoleUserDirect
[Service Account Importing the Power Automate Flows]Connection CreatorUserDirect
[Service Account for Gateway Admin]Gateway AdminUserDirect
Power BI[Service Account for Publishing Power BI Reports]Power BI Workspace OwnerUserDirect
M365 Purview Compliance Portal[Service Account for syncing label and label policies from Microsoft Purview Compliance Portal]View-Only Retention Management View-Only Record ManagementUserDirect
Azure Container InstanceUser managed Identity (ADD Name)ACR RoleUser Managed IdentityDirect

Networking

Virtual Network

This section highlights that the relevant PaaS services for the i-ARM solution are deployed within the Azure Virtual Network. This deployment ensures secure communication and isolation among resources while leveraging the benefits of Azure networking capabilities.

NameResource GroupRegionAddress SpaceDescription
vnet-iarm-svc-regionabbr-prdrg-iarm-svc-regionabbr-prd<Consumer Azure region>x.x.x.x/22A Virtual Network that is essential for securing communication among PaaS services, managing traffic, and ensuring compliance.

User Defined Route Tables

The i-arm solution currently operates using the default routing rules associated with the various provisioned subnets, without the implementation of custom routing. However, it is designed to be flexible and can be customized to utilize specific route tables as needed. This customization is particularly useful in scenarios involving a central firewall or when traffic needs to be directed towards a Network Virtual Appliance (NVA).

NameRoute NameAddress prefixNext hope typeNext hope IP addressAttached Subnet
rt-iarm-webapp-regionabbr-prdTo-Internet0.0.0.0/0Virtual appliance< Connectivity Subscription Firewall Private IP Address>nsg-iarm-webapp-regionabbr-prd
NameRoute NameAddress prefixNext hope typeNext hope IP addressAttached Subnet
rt-iarm-funcapp -regionabbr-prdTo-Internet0.0.0.0/0Virtual appliance<Connectivity Subscription Firewall Private IP Address>nsg-iarm-funcapp-regionabbr-prd
NameRoute NameAddress prefixNext hope typeNext hope IP addressAttached Subnet
rt-iarm-pe -regionabbr-prdTo-Internet0.0.0.0/0Virtual appliance< Connectivity Subscription Firewall Private IP Address>nsg-iarm-pe-regionabbr-prd
NameRoute NameAddress prefixNext hope typeNext hope IP addressAttached Subnet
rt-iarm-workloads-regionabbr-prdTo-Internet0.0.0.0/0Virtual appliance< Connectivity Subscription Firewall Private IP Address>nsg-iarm-workloads -regionabbr-prd

Network Security Groups

The section below outlines the Network Security Groups (NSGs) applied within the Azure Virtual Network for the i-ARM solution. These NSGs play a key role in enhancing security by managing inbound and outbound traffic at the subnet and VM level, minimizing unauthorized access risks. They contribute to optimized performance by filtering unnecessary traffic, enable tailored security rules for different resources, and promote a clear network structure by logically organizing security boundaries. For detailed NSG configurations, please refer to the section below.

NameInbound/ OutboundRule NamePort/ ProtocolPrioritySourceDestinationActionDescription
nsg-iarm-webapp-regionabbr-prdInboundAllowVnetInBoundAny65000VirtualNetworkVirtualNetworkAllowAllows traffic between resources within the same virtual network.
InboundAllowAzureLoadBalancerInBoundAny65001AzureLoadBalancerAnyAllowAllows traffic from the Azure load balancer to the resources.
InboundDenyAllInBoundAny65500AnyAnyDenyDenies all inbound traffic by default.
OutboundAllowVnetOutBoundAny65000VirtualNetworkVirtualNetworkAllowAllows outbound traffic between resources within the same virtual network.
OutboundAllowInternetOutBoundAny65001AnyInternetAllowAllows outbound traffic to the internet.
OutboundDenyAllOutBoundAny65500AnyAnyDenyDenies all outbound traffic by default.
NameInbound/ OutboundRule NamePort/ ProtocolPrioritySourceDestinationActionDescription
nsg-iarm-funcapp-regionabbr-prdInboundAllowVnetInBoundAny65000VirtualNetworkVirtualNetworkAllowAllows traffic between resources within the same virtual network.
InboundAllowAzureLoadBalancerInBoundAny65001AzureLoadBalancerAnyAllowAllows traffic from the Azure load balancer to the resources.
InboundDenyAllInBoundAny65500AnyAnyDenyDenies all inbound traffic by default.
OutboundAllowVnetOutBoundAny65000VirtualNetworkVirtualNetworkAllowAllows outbound traffic between resources within the same virtual network.
OutboundAllowInternetOutBoundAny65001AnyInternetAllowAllows outbound traffic to the internet.
OutboundDenyAllOutBoundAny65500AnyAnyDenyDenies all outbound traffic by default.
NameInbound/ OutboundRule NamePort/ ProtocolPrioritySourceDestinationActionDescription
nsg-iarm-pe-regionabbr-prdInboundAllowVnetInBoundAny65000VirtualNetworkVirtualNetworkAllowAllows traffic between resources within the same virtual network.
InboundAllowAzureLoadBalancerInBoundAny65001AzureLoadBalancerAnyAllowAllows traffic from the Azure load balancer to the resources.
InboundDenyAllInBoundAny65500AnyAnyDenyDenies all inbound traffic by default.
OutboundAllowVnetOutBoundAny65000VirtualNetworkVirtualNetworkAllowAllows outbound traffic between resources within the same virtual network.
OutboundAllowInternetOutBoundAny65001AnyInternetAllowAllows outbound traffic to the internet.
OutboundDenyAllOutBoundAny65500AnyAnyDenyDenies all outbound traffic by default.
NameInbound/ OutboundRule NamePort/ ProtocolPrioritySourceDestinationActionDescription
nsg-iarm-workloads-regionabbr-prdInboundAllowVnetInBoundAny65000VirtualNetworkVirtualNetworkAllowAllows traffic between resources within the same virtual network.
InboundAllowAzureLoadBalancerInBoundAny65001AzureLoadBalancerAnyAllowAllows traffic from the Azure load balancer to the resources.
InboundDenyAllInBoundAny65500AnyAnyDenyDenies all inbound traffic by default.
OutboundAllowVnetOutBoundAny65000VirtualNetworkVirtualNetworkAllowAllows outbound traffic between resources within the same virtual network.
OutboundAllowInternetOutBoundAny65001AnyInternetAllowAllows outbound traffic to the internet.
OutboundDenyAllOutBoundAny65500AnyAnyDenyDenies all outbound traffic by default.
NameInbound/ OutboundRule NamePort/ ProtocolPrioritySourceDestinationActionDescription
nsg-iarm-bastion-regionabbr-prdInboundAllowHttpsInbound443120InternetAnyAllowAllows inbound HTTPS traffic from the internet to any destination.
InboundAllowGatewayManagerInbound443130GatewayManagerAnyAllowAllows inbound traffic from the Gateway Manager on port 443 to any destination.
InboundAllowAzureLoadBalancerInbound443140AzureLoadBalancerAnyAllowAllows inbound traffic from the Azure Load Balancer on port 443 to any destination.
InboundAllowBastionHostCommunication80808080150VirtualNetworkVirtualNetworkAllowAllows communication between resources within the virtual network on port 8080.
InboundAllowBastionHostCommunication57018080151VirtualNetworkVirtualNetworkAllowAllows communication between resources within the virtual network on port 8080.
InboundAllowVnetInBoundAny65000VirtualNetworkVirtualNetworkAllowAllows traffic between resources within the same virtual network.
InboundAllowAzureLoadBalancerInBoundAny65001AzureLoadBalancerAnyAllowAllows traffic from the Azure load balancer to the resources.
InboundDenyAllInBoundAny65500AnyAnyDenyDenies all inbound traffic by default.
OutboundAllowSshOutbound22100AnyVirtualNetworkAllowAllows outbound SSH traffic on port 22 to the virtual network.
OutboundAllowRdpOutbound3389101AnyVirtualNetworkAllowAllows outbound RDP traffic on port 3389 to the virtual network.
OutboundAllowAzureCloudOutbound443110AnyAzureCloudAllowAllows outbound HTTPS traffic on port 443 to Azure Cloud services.
OutboundAllowBastionCommunication80808080120VirtualNetworkVirtualNetworkAllowAllows outbound communication on port 8080 within the virtual network.
OutboundAllowBastionCommunication57015701121VirtualNetworkVirtualNetworkAllowAllows outbound communication on port 5701 within the virtual network.
OutboundAllowHttpOutbound80130AnyInternetAllowAllows outbound HTTP traffic on port 80 to the internet.
OutboundAllowVnetOutBoundAny65000VirtualNetworkVirtualNetworkAllowAllows outbound traffic between resources within the same virtual network.
OutboundAllowInternetOutBoundAny65001AnyInternetAllowAllows outbound traffic to the internet.
OutboundDenyAllOutBoundAny65500AnyAnyDenyDenies all outbound traffic by default.
NameInbound/ OutboundRule NamePort/ ProtocolPrioritySourceDestinationActionDescription
nsg-iarm-container-regionabbr-prdInboundAllowVnetInBoundAny65000VirtualNetworkVirtualNetworkAllowAllows traffic between resources within the same virtual network.
InboundAllowAzureLoadBalancerInBoundAny65001AzureLoadBalancerAnyAllowAllows traffic from the Azure load balancer to the resources.
InboundDenyAllInBoundAny65500AnyAnyDenyDenies all inbound traffic by default.
OutboundAllowVnetOutBoundAny65000VirtualNetworkVirtualNetworkAllowAllows outbound traffic between resources within the same virtual network.
OutboundAllowInternetOutBoundAny65001AnyInternetAllowAllows outbound traffic to the internet.
OutboundDenyAllOutBoundAny65500AnyAnyDenyDenies all outbound traffic by default.

Subnets

The section below details the subnets within the Azure Virtual Network for the i-ARM solution. This isolation is critical for improving security by containing network traffic and reducing unauthorized access risks, optimizing performance through effective bandwidth management, allowing for personalized application of network security group rules, and improving clarity by logically segmenting resources. For specific subnet configurations, please refer to the section below.

NamevNetAddress SpaceRoute TableNSGDescription
subnet-iarm-webapp-regionabbr-prdvnet-iarm-svc-regionabbr-prdx.x.x.x/25Defaultnsg-iarm-webapp-regionabbr-prdThis subnet provides a secure and scalable environment for hosting web applications.
subnet-iarm-funcapp-regionabbr-prdvnet-iarm-svc-regionabbr-prdx.x.x.x /25Defaultnsg-iarm-funcapp-regionabbr-prdThis subnet ensures that serverless functions operate within a secure and isolated environment.
subnet-iarm-pe-regionabbr-prdvnet-iarm-svc-regionabbr-prdx.x.x.x /25Defaultnsg-iarm-pe-regionabbr-prdThis subnet secures private access to Azure services, ensuring that sensitive data is exchanged without being exposed to the public internet.
subnet-iarm-workloads-regionabbr-prdvnet-iarm-svc-regionabbr-prdx.x.x.x /25Defaultnsg-iarm-workloads-regionabbr-prdThis subnet isolates and secures virtual machines, enabling controlled access to VMs.
AzureBastionSubnetvnet-iarm-svc-regionabbr-prdx.x.x.x /25Defaultnsg-iarm-bastion-regionabbr-prdThe Bastion subnet enables secure remote access to Azure Virtual Machines (VMs) without exposing them to the public internet. Learn more
subnet-iarm-container-regionabbr-prdvnet-iarm-svc-regionabbr-prdx.x.x.x /25Defaultnsg-iarm-container-regionabbr-prdThis subnet enhances the network capabilities and security of container instances in Azure.

Key Vault

Vault

Azure Key Vault is a critical component for the i-ARM solution, safeguarding secrets used by services within the i-ARM framework. It provides secure storage for sensitive data such as API keys, passwords, ensuring that they are protected with strong encryption and access policies. Integrated with Entra ID / Azure Active Directory, it enforces strict access controls, allowing only authorized users and applications to retrieve sensitive information.

  • Only one key vault is required. All secrets and certificates will be stored in this key vault.

Note: The key vault should have the IP addresses of the Power platform to be whitelisted. These IP addresses vary depending on the region where the power platform is hosted.

Reference: Power Platform Outbound IP Addresses

Namekv-iarm-svc-regionabbr-prd
DescriptionRequired to securely store and access secrets, certificates, API keys. Access is tightly controlled.
Resource Grouprg-iarm-svc-regionabbr-prd
RegionUK-SOUTH
TierStandard
Access Configuration (Permission Model)Azure role-based access control (RBAC)
Resource AccessNot required
Network AccessEnabled from selected virtual networks and IP addresses*
Private EndpointNamekv-iarm-svc-regionabbr-prd-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.vaultcore.azure.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution

* An azure policy exemption rule needs to be created in the consumer azure portal to exempt the “kv-iarm-svc-regionabbr-prd” key vault from the “Deny-PublicPaaSEndpoints” policy to allow configuring the Key Vault firewall with “Enabled from selected virtual networks and IP addresses”. This is necessary for Power Automate to read secrets from the “kv-iarm-svc-regionabbr-prd” Key Vault. Since Power Automate is a cloud service, it initiates requests from the public internet and does not operate within the same private network as the key vault.

Web

App Service Plan

This section outlines the configurations for the App Service Plan associated with the i-ARM web app and the different Azure Function Apps, all of which are VNET integrated.

The App Service Plan for the i-ARM web app ensures a scalable and high-availability hosting environment with integrated security features and monitoring tools, while the Azure Function Apps are designed to efficiently handle serverless workloads with custom scaling options.

Nameasp-iarm-ui-regionabbr-prd
DescriptionThis app service is used to create and manage the compute resources required by the i-ARM web app supporting the user experience.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-webapp-regionabbr-prd
Nameasp-iarm-urc-regionabbr-prd
DescriptionThis app service hosts the compute resources required to synchronize retention labels from Microsoft Purview to i-ARM database.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-funcapp-regionabbr-prd
Nameasp-iarm-mydisp-regionabbr-prd
DescriptionThis app service hosts the compute resources required for the business layer of the disposal dashboard and related workflows supporting the i-ARM webapp. This app service provides integration between the i-ARM web app and the i-ARM database.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-funcapp-regionabbr-prd
Nameasp-iarm-mydata-regionabbr-prd
DescriptionThis app service hosts the compute resources required for the business layer of the mydata supporting navigation and administration modules in the i-ARM webapp. This app service provides integration between the i-ARM web app and the i-ARM database.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-funcapp-regionabbr-prd
Nameasp-iarm-prmbulk-regionabbr-prd
DescriptionThis app service hosts the compute resources required for the bulk import functionality supporting the PRM module.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-funcapp-regionabbr-prd
Nameasp-iarm-prmsync-regionabbr-prd
DescriptionThis app service hosts the compute resources required for the sync functionality supporting the PRM module.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-funcapp-regionabbr-prd
Nameasp-iarm-m365auditsync-regionabbr-prd
DescriptionThis app service hosts the compute resources required for the M365 audit logs sync functionality to i-ARM Data Store.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-webapp-regionabbr-prd
Nameasp-iarm-m365auditconnector-regionabbr-prd
DescriptionThis app service hosts the compute resources required for the M365 audit logs connector sync functionality to i-ARM Data Store.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-funcapp-regionabbr-prd
Nameasp-iarm-m365dispconnector-regionabbr-prd
DescriptionThis app service hosts the compute resources required for the M365 disposal connector sync functionality to i-ARM Data Store.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Operating SystemWindows
Pricing PlanStandard S2
Subnetsubnet-iarm-funcapp-regionabbr-prd

Function App

This section details the configurations for the Azure Function Apps, which are integrated with private endpoints and deployed within a designated private subnet (Private Endpoint - PE subnet). The use of private endpoints ensures secure, private access to the Function Apps, enhancing data protection and compliance by preventing exposure to the public internet.

Namefunc-iarm-urc-regionabbr-prd
DescriptionThis function app is associated with the app service “asp-iarm-urc-regionabbr-prd”. The purpose of this function app is to provide the logic for synchronizing the retention labels from MS Purview to i-ARM database.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Deploy TypeCode;.NET; 8.0 Isolated
Operating SystemWindows
HostingApp Service Plan (asp-iarm-urc-regionabbr-prd)
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightsappi-iarm-urc-regionabbr-prd
Private EndpointName{function app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namefunc-iarm-mydisp-regionabbr-prd
DescriptionThis function app is associated with the app service “asp-iarm-mydisp-regionabbr-prd”. This function app provides the logic for the workflows associated with the disposition process.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Deploy TypeCode;.NET; 8.0 Isolated
Operating SystemWindows
HostingApp Service Plan (asp-iarm-mydisp-regionabbr-prd)
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-mydisp-regionabbr-prd
Private EndpointName{function app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namefunc-iarm-mydata-regionabbr-prd
DescriptionThis function app is associated with the app service “asp-iarm-mydata-regionabbr-prd”. This function app provides the logic for the navigation and administration module process.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Deploy TypeCode;.NET; 8.0 Isolated
Operating SystemWindows
HostingApp Service Plan ( asp-iarm-mydata-regionabbr-prd)
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-mydata-regionabbr-prd
Private EndpointName{function app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namefunc-iarm-prmbulk-regionabbr-prd
DescriptionThis function app is associated with the app service “asp-iarm-prmbulk-regionabbr-prd ”. This durable function app provides the logic for the bulk import functionality associated with the PRM bulk import process.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Deploy TypeCode;.NET; 8.0 Isolated
Operating SystemWindows
HostingApp Service Plan ( asp-iarm-prmbulk-regionabbr-prd)
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-prmbulk-regionabbr-prd
Private EndpointName{function app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namefunc-iarm-prmsync-regionabbr-prd
DescriptionThis function app is associated with the app service “asp-iarm-prmsync-regionabbr-prd ”. This function app provides the logic for the sync functionality associated with the PRM sync process.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Deploy TypeCode;.NET; 8.0 Isolated
Operating SystemWindows
HostingApp Service Plan ( asp-iarm-prmsync-regionabbr-prd)
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-prmsync-regionabbr-prd
Private EndpointName{function app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namefunc-iarm-m365auditconnector-regionabbr-prd
DescriptionThis function app is associated with the app service “asp-iarm-m365auditconnector-regionabbr-prd”. This function app provides the logic for the fetching and performing data transformation of the m365 audit sync data captured.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Deploy TypeCode;.NET; 8.0 Isolated
Operating SystemWindows
HostingApp Service Plan (asp-iarm-m365auditconnector-regionabbr-prd )
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-m365auditconnector-regionabbr-prd
Private EndpointName{function app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namefunc-iarm-m365dispconnector-regionabbr-prd
DescriptionThis function app is associated with the app service “ asp-iarm-m365dispconnector-regionabbr-prd”. This function app provides the logic for the fetching and performing data transformation of the m365 audit sync data captured.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Deploy TypeCode;.NET; 8.0 Isolated
Operating SystemWindows
HostingApp Service Plan (asp-iarm-m365auditconnector-regionabbr-prd )
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-m365dispconnector-regionabbr-prd
Private EndpointName{function app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution

Storage Accounts

This section outlines the configurations for the Azure Storage Accounts associated with the Function Apps. Storage accounts are integrated with private endpoints and are deployed within the same private subnet (Private Endpoint - PE subnet). By utilizing private endpoints, the storage accounts benefit from secure and private connectivity, ensuring that data is transmitted only within the private network and remains isolated from the public internet. This setup enhances security and compliance by safeguarding the storage accounts from unauthorized access while supporting the seamless operation of the Function Apps.

Namesaiarmmydataregionabbrprd
DescriptionThis storage account is associated with the ‘func-iarm-mydata-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarmmydispregionabbrprd
DescriptionThis storage account is associated with the ‘func-iarm-mydisp-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarmurcregionabbrprd
DescriptionThis storage account is associated with the ‘func-iarm-urc-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarmprmbulkregionabbrprd
DescriptionThis storage account is associated with the ‘func-iarm-prmbulk-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Private EndpointName{storage account name}-blob-pe {storage account name}-queue-pe {storage account name}-table-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net privatelink.queue.core.windows.net privatelink.table.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarmprmsyncregionabbrprd
DescriptionThis storage account is associated with the ‘func-iarm-prmsync-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarm365syncregionabbrprd
DescriptionThis storage account is associated with the app service ‘wj-iarm-m365auditsync-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Data Storage[ Queue]queue-iarm-m365auditfullscantrigger-regionabbr-prd
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net privatelink.queue.core.windows.net privatelink.table.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarm365connregionabbrprd
DescriptionThis storage account is associated with the ‘func-iarm-m365auditconnector-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net privatelink.queue.core.windows.net privatelink.table.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarmdispconregionabbrprd
DescriptionThis storage account is associated with the ‘func-iarm-m365dispconnector-regionabbr-prd‘ function app.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net privatelink.queue.core.windows.net privatelink.table.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarmarchiveregionabbrprd
DescriptionThis storage account is used for storing the SharePoint content that is approved for archival from my disposal dashboard review screen
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyRA-GZRS
Network accessEnabled from selected virtual networks and IP addresses*
Data Storage[ Container]container-iarm-archived-files-regionabbr-prd
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesaiarmdiappuksothprd
DescriptionThis storage account is used for downloading source instance registration templates & storing source instance registration files.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PerformanceStandard (General Purpose V2)
RedundancyZRS
Network accessDisable Public Access
Data Storage[ Container]container-iarm-manifest-files-regionabbr-prd container-iarm-manifest-templates-regionabbr-prd
Private EndpointName{storage account name}-blob-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.blob.core.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution

* An azure policy exemption rule needs to be created in the consumer azure portal to exempt the “saiarmarchiveregionabbrprd” storage account from the “Deny-PublicPaaSEndpoints” policy to allow configuring the Storage account firewall with “Enabled from selected virtual networks and IP addresses”. This is necessary for Power Automate to create blobs within the “saiarmarchiveregionabbrprd” storage account. Since Power Automate is a cloud service, it initiates requests from the public internet and does not operate within the same private network as the storage account.

App Service

This section outlines the App Service configuration for the i-ARM web app, which includes a private endpoint integrated within a designated private subnet (PE subnet). The private endpoint ensures secure, private access to the web app, significantly enhancing data security by restricting exposure to the public internet.

Nameweb-iarm-ui-regionabbr-prd (User Interface)
DescriptionThis app service is associated with the App service plan “asp-iarm-ui-regionabbr-prd”. The purpose of this is to provide logic for the User interface related to all of the i-ARM portal features.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PublishCode; Node 18 LTS; Windows
HostingApp Service Plan ( asp-iarm-ui-regionabbr-prd)
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-ui-regionabbr-prd
Private EndpointName{web app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namewj-iarm-m365auditsync-regionabbr-prd
DescriptionThis app service is associated with the App service plan “asp-iarm-m365auditsync-regionabbr-prd”. The purpose of this is to provide logic for syncing M365 audit log records to i-ARM Datastore.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
PublishCode:.NET; 8.0 Isolated
HostingApp Service Plan (asp-iarm-m365auditsync-regionabbr-prd)
Managed IdentityEnabled (System Assigned)
Network accessDisable Public Access
Network InjectionEnabled; vnet-iarm-regionabbr-prd (app)
Application Insightappi-iarm-m365auditsync-regionabbr-prd
Private EndpointName{web app name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.azurewebsites.net
Continuous deploymentDisabled
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution

Database

Azure SQL Database

This section details the configuration of the Azure SQL Database, which serves as the backend data store for i-ARM services. The database is equipped with a private endpoint, ensuring secure, private access within a designated VNET and preventing exposure to the public internet.

Using the General-Purpose tier, it offers balanced performance and cost-efficiency for standard workloads. Native data encryption is enabled, providing an additional layer of security for sensitive information, while Azure's built-in firewall ensures that only authorized access is permitted.

This setup delivers a strong and secure data storage solution, integral to the reliable operation of i-ARM services.

Namesql-iarm-svc-regionabbr-prd
DescriptionThis is the database which holds all the data managed by i-ARM across all its functionalities.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Service + Compute TierGeneral Purpose, Provisioned, 2 vCores. (The number of cores can be scaled up based on the workload demand)
Workload EnvironmentProduction
Database Zone RedundantYes
Backup RedundancyGZRS
Auth MethodMicrosoft Entra authentication, SQL authentication
Adminsg-svc-iarm-sqlentraadministrators-prd
Managed IdentityEnabled (System Assigned)
Public EndpointDisabled
Private EndpointName{sql server name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.database.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution
Namesql-iarmmpip-svc-regionabbr-prd
DescriptionThis is the database which holds all the configuration data related to MPIP Scanner
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Service + Compute TierGeneral Purpose, Provisioned, 2 vCores. (The number of cores can be scaled up based on the workload demand)
Workload EnvironmentProduction
Database Zone RedundantYes
Backup RedundancyGZRS
Auth MethodMicrosoft Entra authentication, SQL authentication
Adminsg-svc-iarm-sqlentraadministrators-prd
Managed IdentityEnabled (System Assigned)
Public EndpointDisabled
Private EndpointName{sql server name}-pe
Subnetsubnet-iarm-pe-regionabbr-prd
Private DNS Zoneprivatelink.database.windows.net
DiagnosticsDiagnostics logs are sent to the central log analytics workspace of the solution

Azure Monitoring

Log Analytics Workspace

This section provides an overview of the Log Analytics Workspace configuration, which acts as a central repository for aggregating and analyzing log data from various resources of i-ARM. The workspace is crucial for enhancing operational visibility and security by enabling the collection, querying, and monitoring of log data, while supporting advanced integrations with services like Azure Monitor and Azure Sentinel for comprehensive data analysis and threat detection, if required.

Namelog-iarm-svc-regionabbr-prd
DescriptionThis workspace acts as a central repository for all the diagnostics logs
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>

Virtual Machine

On-Premises Data Gateway

The application gateway serves as an intermediary, facilitating secure connections between external SaaS offerings, such as Power Platform and Power BI, and the SQL database that is safeguarded by a firewall or positioned behind the native platform firewall of SQL azure database.

Note:

  • If IP Whitelisting can be configured on the Azure SQL server, then there is no need for the data gateway.
  • The VM requires an interactive logon, this can be done using a local account for a one-off configuration of data gateway on the VM.
  • Based on the workload, additional VMs may need to be configured to function as data gateways
  • SQL connection using Data Gateway works only with either SQL Authentication or Windows Authentication
  • Internet should be enabled on the Data gateway VM
  • Data gateway is a manual installation by downloading MSI package from Microsoft website. Detailed steps for installation can be found here - Install an on-premises data gateway | Microsoft Learn
  • The Data Gateway VM should not have any Azure policy such as Auto Shutdown Schedule configured for automatic shutdown that would cause it to shut down on its own. Reference: Deploy Virtual Machine Auto Shutdown Schedule - Deploy-Vm-autoShutdown
VM Namevmiarmdgukprd
DescriptionThe gateway provides connectivity between MS Purview Power automate flows, Power BI and i-ARM database. The gateway supports the registration of records eligible for disposal between MS Purview and i-ARM.
Resource Grouprg-iarm-svc-regionabbr-prd
Location<Consumer Azure region>
VM SizeGeneral Purpose D4ds_v4
Operating SystemWindows Server 2022
Subnetsubnet-iarm-workloads-regionabbr-prd
Public IPYes (if required for external access)
Installation RequirementsOn-premises Data Gateway, .NET Framework 4.7 or later

i-ARM Scanner Services

The virtual machine is where the i-ARM Scanner Services will be installed. The scanner service captures the file properties and other information related to the source being scanned into the i-ARM Data Store. Infotechtion recommends a minimum of 2 Virtual Machines to host the i-ARM and MPIP Scanner Agents respectively.

VM Namevmiarmscannerservice01prd, vmiarmscannerservice02prd
DescriptionThe scanner service will scan the mounted & configured Network File Shares or Azure File Shares.
Resource Grouprg-iarm-svc-regionabbr-prd
Location<Consumer Azure region>
VM SizeStandard_D8as_v4 (8 vcpus, 32 GiB memory)
Operating SystemWindows Server 2022
Subnetsubnet-iarm-workloads-regionabbr-prd
Public IPYes (if required for external access)
Installation Requirements.NET Framework 4.7 or later, .Net Core 8.0, Information Protection Scanner

Note:

  • IP Whitelisting needs to be configured on the Azure KeyVault.
  • The VM needs to be part of the domain and will require login from a Service Account.
  • The VM should be able to communicate with the File Shares to scan an i-ARM Data Store to capture the metadata information for part of the same network as the Network File Share and
  • the scanner Service Account needs Read/Write access to the Network File Share (Write only in case the Immutability feature is required)
  • Incase Scanner Service is configured to scan Azure File Share, then mounting of Azure File Share has to be using Shared Access Key.
  • The VM needs will require a Certificate to be installed to access the Key Vault. A certificate can either be procured from your Certificate Authority or a Self-Signed generated Certificate will also work.
  • Based on the workload, additional VMs may need to be configured to scan larger number of data sources
  • Internet should be enabled on the i-ARM Scanner Service VM
  • If the Windows Defender service is configured to scan the NFS Agent Service folder, it should be exempted to avoid performance issues.
  • Additionally, we recommend stopping the NFS Agent Service, as it has been observed to consume high CPU resources. This consumption can eventually increase runtime and decrease overall performance.
  • To support scans on NFS shares, services for NFS must be deployed on the scanner machine.

On your machine, navigate to the Windows Features (Turn Windows features on or off) settings dialog, and select the following items: Services for NFS > Administrative Tools and Client for NFS.

Security

Consumer Firewall Access

The policy document shared earlier outlines (Azure policies) various security policies established as part of the Enterprise Scale Landing Zone. These policies are designed to enhance the overall security posture of the subscription, ensuring robust protection against potential threats. As a critical component of our architecture, the i-ARM services are required to comply with these security policies, reinforcing our commitment to safeguarding data and maintaining regulatory compliance.

Note: additional firewall policies should be updated by the consumer cloud support team for review by the Infotechtion engagement team dedicated to the consumer.

The table below outlines the rules to be added in the connectivity subscription’s azure firewall

#Rule Name JustificationSourceDestinationPortsProtocolAction
1ALLOW_PE_TRAFFIC Used for allowing traffic from the connectivity subscription to the private endpoints of the i-ARM subscription within the PE subnetHUB_VNET_ADDRESS_SPACESubscription: Connectivity SubscriptionI-ARM_PE_SUBNET (subnet-iarm-pe-regionabbr-prd)Subscription: i-ARM Subscription443TCPALLOW
2ALLOW_IARM_WEBAPP_OUTBOUND Used by i-ARM Web App to make Graph API calls for user authentication, establish connections with storage accounts, log into Application Insights, and integrate with SharePointI-ARM_WEBAPP_SUBNET (subnet-iarm-webapp-regionabbr-prd)Subscription: i-ARM Subscriptiondc.applicationinsights.azure.comdc.applicationinsights.microsoft.comdc.services.visualstudio.com*.in.applicationinsights.azure.comlive.applicationinsights.azure.comrt.applicationinsights.microsoft.comrt.services.visualstudio.com*.ods.opinsights.azure.com*.oms.opinsights.azure.com*.blob.core.windows.netgraph.microsoft.com/**.sharepoint.com manage.office.com/api/**.database.windows.net*.queue.core.windows.net *.blob.core.windows.net*.table.core.windows.net *.vault.azure.net443TCPALLOW
3ALLOW_IARM_FUNCAPP_OUTBOUND Used by i-ARM Function Apps to make Graph API calls, establish connections with storage accounts, log into Application Insights, and integrate with SharePointI-ARM_FUNCTIONAPP_SUBNET (subnet-iarm-funcapp-regionabbr-prd)Subscription: i-ARM Subscriptiondc.applicationinsights.azure.comdc.applicationinsights.microsoft.comdc.services.visualstudio.com*.in.applicationinsights.azure.comlive.applicationinsights.azure.comrt.applicationinsights.microsoft.comrt.services.visualstudio.com*.ods.opinsights.azure.com*.oms.opinsights.azure.com*.blob.core.windows.netgraph.microsoft.com/**.sharepoint.com manage.office.com/api/**.database.windows.net*.queue.core.windows.net *.blob.core.windows.net*.table.core.windows.net *.vault.azure.net443TCPALLOW
4ALLOW_IARM_WEBAPP_OUTBOUND_SQL Used to facilitate communication between i-ARM Web App and i-ARM datastoreI-ARM_WEBAPP_SUBNET (subnet-iarm-webapp-regionabbr-prd)Subscription: i-ARM Subscription*.database.windows.net1433TCPALLOW
5ALLOW_IARM_FUNCAPP_OUTBOUND_SQL Used to facilitate communication between i-ARM Function Apps and i-ARM datastoreI-ARM_FUNCTIONAPP_SUBNET (subnet-iarm-funcapp-regionabbr-prd)Subscription: i-ARM Subscription*.database.windows.net1433TCPALLOW
6ALLOW_IARM_WORKLOAD_OUTBOUND Used for Advanced Message Queuing Protocol (AMQP)I-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)Subscription: i-ARM Subscription*.servicebus.window.net5671-5672TCPALLOW
7ALLOW_IARM_WORKLOAD_OUTBOUND Used to download the installer. The gateway app also uses this domain to check the version and gateway regionI-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)*.download.microsoft.com*.msftncsi.com80TCPALLOW
8ALLOW_IARM_WORKLOAD_OUTBOUND Used to authenticate the gateway app for Microsoft Entra ID and OAuth2. Note that additional URLs could be required as part of the Microsoft Entra ID sign in process that can be unique to a tenantI-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)Subscription: i-ARM Subscription*.powerbi.com,*.analysis.windows.net*.login.windows.net, login.live.com, aadcdn.msauth.net, *.servicebus.windows.net,*.dc.services.visualstudio.com,*.frontend.clouddatahub.net,login.microsoft.com,login.windows.net,login.microsoftonline.com,*.microsoftonline-p.comgraph.microsoft.com/* *.sharepoint.com443TCPALLOW
9ALLOW_IARM_WORKLOAD_OUTBOUND Listens on Azure Relay over TCPI-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)Subscription: i-ARM Subscription*.servicebus.windows.net9350-9354TCPALLOW
10ALLOW_IARM_WORKLOAD_OUTBOUND Used to allow Internet access inside the Virtual machineI-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)Subscription: i-ARM Subscription*80, 443TCPALLOW
ALLOW_IARM_WORKLOAD_OUTBOUND Used for MPIP Scanner ServicesI-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)Subscription: i-ARM Subscription*.aadrm.com*.azurerms.com*.informationprotection.azure.cominformationprotection.hosting.portal.azure.net*.aria.microsoft.com*.protection.outlook.com443TCPALLOW
ALLOW_IARM_WORKLOAD_OUTBOUND Allows traffic for the agent installed on Azure VM to interact with the NFS and AFSI-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)Subscription: i-ARM SubscriptionNFS/ AFS445TCPALLOW
11ALLOW_IARMPBI_TRAFFIC Used by Power BI to read data from i-ARM datastorePowerBI (Azure Service Tag*)I-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd) I-ARM_PE_SUBNET (subnet-iarm-pe-regionabbr-prd)Subscription: i-ARM Subscription1433, 3342TCPALLOW
12ALLOW_IARMPA_TRAFFIC Used to facilitate communication between Power Automate and i-ARM datastoreAzureConnectors.UKSouth (Azure Service Tag*)AzureConnectors.UKSouth2 (Azure Service Tag*)I-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd) I-ARM_PE_SUBNET (subnet-iarm-pe-regionabbr-prd)Subscription: i-ARM Subscription1433, 443TCPALLOW
13ALLOW_RDP_OUTBOUND_BASTION Used to establish a remote session with the Data Gateway Virtual machine via bastionI-ARM_BASTION_SUBNET (AzureBastionSubnet)Subscription: i-ARM SubscriptionI-ARM_WORKLOAD_SUBNET (subnet-iarm-workloads-regionabbr-prd)Subscription: i-ARM Subscription3389,22TCPALLOW
14ALLOW_IARMDEVOPS_TRAFFIC Used for provisioning and configuring i-ARM components and binaries deployment within i-ARM subscriptions resource groupAzureDevOps (Azure Service Tag)I-ARM_VNET (vnet-iarm-svc-regionabbr-prd)Subscription: i-ARM Subscription443TCPALLOW
15ALLOW_IARMACR_TRAFFIC Used for fetching windows images from Azure Container Registry hosted in Infotechtion Managed SubscriptionMicrosoftContainerRegistry (Azure Service Tag) AzureFrontDoor.FirstParty (Azure Service Tag)I-ARM_VNET (vnet-iarm-svc-regionabbr-prd) Subscription: i-ARM Subscription443TCPALLOW

*A service tag represents a group of IP address prefixes from a given Azure service. Microsoft manages the address prefixes encompassed by the service tag and automatically updates the service tag as addresses change, minimizing the complexity of frequent updates to network security rules. This service tag needs to be updated based on the consumer azure region.

Available Service Tags

Powerplatform

Power BI

This section provides an overview of the Power BI configuration, which acts as a central hub for aggregating and visualizing data from various resources of i-ARM. Power BI is crucial for enhancing operational insights and decision-making by enabling the creation of interactive reports and dashboards, while supporting advanced integrations for comprehensive data analysis and real-time performance monitoring, if required.

Workspace Nameiarm-pbi-workspace-prd
DescriptionThe Power BI workspace where i-arm datasets, reports, and dashboards are stored.
LicensingPro/Premium*

Note:

* If the Power BI workspace is created with Premium Capacity, then users who only need to consume content (e.g., view reports and dashboards) do not require a Pro license. However, users who create, modify, or publish content in the workspace still need a Pro license

Power automate

This section provides an overview of the Power Automate configuration, which acts as the backbone for automating and orchestrating workflows supporting the disposal dashboard scenarios in i-ARM. Power Automate is crucial for streamlining operational processes by enabling automated flows that integrate various systems, trigger actions based on predefined conditions and ensure data consistency across platforms.

Power platform EnvironmentDefault
DescriptionEnvironment hosts, manages, and segregates resources, applications, data, flows, and connections related to Power Automate
TypeProduction
DataverseYes
Premium Connectors usedMicrosoft 365 Compliance, Azure Key Vault, Microsoft Dataverse, SQL Server, HTTP

Note:

When the power automate flows are imported in an environment other than the default power platform environment, then the labels should be created and managed using PowerShell only.

Learn more

SharePoint Webpart

PRM SPFx

The Physical Records Management Module within i-ARM is built on the SharePoint Framework (SPFx), that allow authorized users to register, categorize, and store information about physical records in a structured and secure manner. The modular design enables seamless integration with SharePoint’s core functionalities, ensuring that users can easily interact with their data while benefiting from features like version control, metadata tagging, and user permissions.

Display NameInfotechtion PRM
DescriptionThis webpart provides modern, user-friendly interface for registering and managing physical records.
Version1

PnP Search SPFx

PnP (Patterns and Practices) Search in SPFx to enable a wide range of reporting scenarios. This allows users to dynamically search, filter, and generate customized reports on physical records based on various criteria, offering a flexible and powerful solution for managing records data.

Display NamePnP Modern Search - Search Web Parts - v4
DescriptionThis webpart provides enhanced search and filtering capabilities
Version1.0.0.15

Modern Script Editor SPFx

The Physical Records Management Module within i-ARM leverages the modern Script Editor web part to support custom styling for an enhanced user experience.

NameModern Script Editor
DescriptionThis webpart provides the capability to hide the OOTB page fields for better user interface.
Version4.4.1.0

SharePoint Configuration

Note: A separate step by step document will be shared by the product team to perform the below configurations.

Content Type

Content Types are essential for defining the structure and metadata associated with physical records. A content type allows us to standardize the data fields used for specific categories of physical records within the system.

Term Store

The Term Store allows us to manage and maintain a consistent set of terms and metadata ensuring uniformity in categorization of physical records.

Search configuration

Managed properties are used to optimize the search for physical records by mapping relevant metadata fields so that these fields can be easily queried and retrieved via the search functionality. The PnP Search Webpart leverages these fields to allow authorized users to view reports based on the search and filter criteria.

Azure DevOps

Repository

The Infotechtion Azure DevOps code repository utilizes Git for version control, enabling collaboration through branching, pull requests, and code reviews. Integrated with Azure Pipelines for CI/CD, it automates builds and deployments while enforcing role-based access controls to ensure security and accountability in the i-ARM services development process.

OrganizationInfotechtion
Project Namei-ARM Infrastructure DevOps
Repo Nameiac-iarm

Note:

During CI/CD pipeline deployments, the IPs of the Microsoft-hosted agents running the deployment jobs must be whitelisted to ensure successful deployments. It is essential that the consumer tenant allows for this IP whitelisting.

All deployments in the consumer tenant for provisioning i-ARM resources will be managed exclusively through Bicep templates from Infotechtion's Azure DevOps. Additionally, Azure CLI commands will be utilized for configuring Container Registry and Container Instance activities. Deployments for the Azure Web App, Function App, and Web Job will also be managed from the same DevOps environment.

Azure Container Registry

This section outlines the configuration for Azure Container Registry associated with the deployment for i-ARM resources.

Azure Container Registry is a service from Microsoft Azure that helps you store and manage your container images. It makes it easy to build and deploy these images securely and at scale.

Nameacriarmregionabbrprd
DescriptionAzure Container Registry is used for storing and managing container images that can be deployed with other Azure services.
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
Pricing PlanPremium

Azure container instance

Azure Container Instances (ACI) allows you to run containers in the cloud without managing infrastructure, which can be used to deploy i-ARM applications.

Nameaci-iarm-regionabbr-prd
DescriptionAzure Container Instances (ACI) is a fully managed service that allows you to run containers directly on the Microsoft Azure cloud without needing to manage the underlying infrastructure
Resource Grouprg-iarm-svc-regionabbr-prd
Region<Consumer Azure region>
SKUStandard
Image SourceAzure Container Registry
Registryacriarmregionabbrprd
Imageacriarmregionabbrprd.azurecr.io/azp-agent:windows
Image Tagazp-agent:windows
OS TypeWindows
Size2 core CPU, 6GB Memory
Subnetsubnet-iarm-container-regionabbr-prd

List of allowed IP addresses and domain URLs:

Azure DevOps IP and URL Allow List

For more information on configuring client firewall rules for Azure Container Registry, refer to the official documentation: Configure client firewall rules for MCR

For more information on configuring client firewall rules for Azure Container Registry, refer to the official documentation: Configure client firewall rules for MCR

For a list of allowed IP addresses and domain URLs, refer to the official documentation: Azure DevOps IP and URL Allow List

Binary validation

Binary validation helps ensure that only high-quality, secure, and correctly versioned binaries are built and released to customer environments. Binaries refer to files such as executables, libraries, or other compiled files, such as .dll and .js files

To ensure the integrity and security of our delivered packages, we perform checksum (SHA-256) validation on all binary files produced. During the build process in Infotechtion DevOps, a SHA-256 checksum is generated for each binary file and documented for reference. This check sum will be included in the release notes with a listing of each binary included in the package shared with the customer IT team to allow for independent validation.

Package Properties Includes:

PropertyDescription
File NameThe name of the binary file.
File ExtensionThe type of the file, indicating its format (e.g., .exe, .dll, .js).
File Creation DateThe date and time when the binary file was created
SHA256The SHA-256 checksum generated during the build process, used for validation.

Validation Process for Customer IT Teams:

Once the package is deployed, the customer IT team can validate the binaries using a script provided by Infotechtion. This script generates a SHA-256 inventory of each binary deployed via the package.

To validate the binaries from the Azure resource side, follow the following steps:

Download the Deployment package

  • Navigate to customer managed Azure portal.
  • Go to i-ARM resource Group “rg-iarm-svc-regionabbr-prd”
  • Navigate to each i-ARM resources listed below and download it to the local system. (Note: In the Landing Zone, please note that additional steps may be required for downloading. Ensure you have the necessary permissions to the resources)

Extract the Package

  • The package would be compressed (e.g., in a .zip format), extracting the contents to a designated folder on the local system.

Run the SHA-256 Validation Script

  • Open a terminal or command prompt on the local machine.
  • Navigate to the directory where the extracted binaries are located.
  • Execute the SHA-256 validation script provided by Infotechtion. This script will generate SHA-256 checksums for all binary files in the directory and compare them against the checksums listed in the release notes.

Validation

  • Ensure that all checksums match the release notes shared.

  • To be confirmed during configuration based on alignment with the consumer cloud support.