Proteggere l'accesso alle app per la logicaSecure access to your logic apps

Sono disponibili molti strumenti per proteggere un'app per la logica.There are many tools available to help you secure your logic app.

  • Protezione dell'accesso per attivare un'app per la logica (trigger di una richiesta HTTP)Securing access to trigger a logic app (HTTP Request Trigger)
  • Protezione dell'accesso per gestire, modificare o leggere un'app per la logicaSecuring access to manage, edit, or read a logic app
  • Protezione dell'accesso ai contenuti di input e output per un'esecuzioneSecuring access to contents of inputs and outputs for a run
  • Protezione di parametri o input all'interno di azioni in un flusso di lavoroSecuring parameters or inputs within actions in a workflow
  • Protezione dell'accesso ai servizi che ricevono richieste da un flusso di lavoroSecuring access to services that receive requests from a workflow

Proteggere l'accesso al triggerSecure access to trigger

Quando si lavora con un'app per la logica che viene attivata con una richiesta HTTP (richiesta o webhook), è possibile limitare l'accesso in modo che possa essere attivata solo dai client autorizzati.When you work with a logic app that fires on an HTTP Request (Request or Webhook), you can restrict access so that only authorized clients can fire the logic app. Tutte le richieste in un'app per la logica vengono crittografate e protette tramite SSL.All requests into a logic app are encrypted and secured via SSL.

Firma di accesso condivisoShared Access Signature

Ogni endpoint di richiesta per un'app per la logica include una firma di accesso condiviso come parte dell'URL.Every request endpoint for a logic app includes a Shared Access Signature (SAS) as part of the URL. Ogni URL contiene parametri di query sp, sv e sig.Each URL contains a sp, sv, and sig query parameter. Le autorizzazioni vengono specificate da sp e corrispondono ai metodi HTTP consentiti, sv è la versione usata per generare e sig è il parametro usato per autenticare l'accesso al trigger.Permissions are specified by sp, and correspond to HTTP methods allowed, sv is the version used to generate, and sig is used to authenticate access to trigger. La firma viene generata attraverso l'algoritmo SHA256 con una chiave privata in tutti i percorsi e le proprietà dell'URL.The signature is generated using the SHA256 algorithm with a secret key on all the URL paths and properties. La chiave privata non viene mai esposta né pubblicata, inoltre continua a essere crittografata e archiviata nell'ambito dell'app per la logica.The secret key is never exposed and published, and is kept encrypted and stored as part of the logic app. L'app per la logica autorizza solo i trigger che contengono una firma valida creata con la chiave privata.Your logic app only authorizes triggers that contain a valid signature created with the secret key.

Per rigenerare le chiavi di accessoRegenerate access keys

È possibile rigenerare in qualsiasi momento una nuova chiave protetta tramite il portale di Azure o API REST.You can regenerate a new secure key at anytime through the REST API or Azure portal. Tutti gli URL correnti che sono stati generati in passato usando la chiave precedente verranno invalidati e non saranno più autorizzati ad attivare l'app per la logica.All current URLs that were generated previously using the old key are invalidated and no longer authorized to fire the logic app.

  1. Nel Portale di Azure aprire l'app per la logica per cui si desidera rigenerare una chiave.In the Azure portal, open the logic app you want to regenerate a key
  2. Fare clic sulla voce di menu Chiavi di accesso in Impostazioni.Click the Access Keys menu item under Settings
  3. Scegliere la chiave da rigenerare e completare il processo.Choose the key to regenerate and complete the process

Per accedere agli URL recuperati dopo la rigenerazione, è necessaria la nuova chiave di accesso.URLs you retrieve after regeneration are signed with the new access key.

Creazione di URL di callback con una data di scadenzaCreating callback URLs with an expiration date

Se si condivide l'URL con altre parti, è possibile generare gli URL con chiavi e date di scadenza specifiche in base alle esigenze.If you are sharing the URL with other parties, you can generate URLs with specific keys and expiration dates as needed. Questo consente di eseguire perfettamente il roll delle chiavi o di verificare che l'accesso per attivare un'app sia limitato a un determinato intervallo di tempo.You can then seamlessly roll keys, or ensure access to fire an app is restricted to a certain timespan. È possibile specificare una data di scadenza per un URL tramite l'API REST delle app per la logica:You can specify an expiration date for a URL through the logic apps REST API:

POST 
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/listCallbackUrl?api-version=2016-06-01

Nel corpo includere la proprietà NotAfter come una stringa di data JSON, che restituisce un URL di callback valido solo fino a data e ora NotAfter.In the body, include the property NotAfter as a JSON date string, which returns a callback URL that is only valid until the NotAfter date and time.

Creazione di URL con una chiave privata primaria o secondariaCreating URLs with primary or secondary secret key

Quando si generano URL di callback per i trigger basati su richieste o si crea un elenco che li contiene, è anche possibile specificare la chiave da usare per firmare l'URL.When you generate or list callback URLs for request-based triggers, you can also specify which key to use to sign the URL. È possibile generare un URL firmato da una chiave specifica tramite l'API REST delle app per la logica come indicato di seguito:You can generate a URL signed by a specific key through the logic apps REST API as follows:

POST 
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/listCallbackUrl?api-version=2016-06-01

Nel corpo includere la proprietà KeyType come Primary o Secondary.In the body, include the property KeyType as either Primary or Secondary. Viene restituito un URL firmato dalla chiave sicura specificata.This returns a URL signed by the secure key specified.

Limitare gli indirizzi IP in ingressoRestrict incoming IP addresses

Oltre alla firma di accesso condiviso, si potrebbe voler limitare la chiamata a un'app per la logica solo da client specifici.In addition to the Shared Access Signature, you may wish to restrict calling a logic app only from specific clients. Ad esempio, se si gestisce l'endpoint tramite Gestione API di Azure, è possibile limitare l'app per la logica in modo che accetti solo le richieste provenienti dall'indirizzo IP dell'istanza di Gestione API.For example, if you manage your endpoint through Azure API Management, you can restrict the logic app to only accept the request when the request comes from the API Management instance IP address.

Questa impostazione può essere configurata dalle impostazioni dell'app per la logica:This setting can be configured within the logic app settings:

  1. Nel Portale di Azure aprire l'app per la logica per cui si desidera aggiungere limitazioni per l'indirizzo IP.In the Azure portal, open the logic app you want to add IP address restrictions
  2. Fare clic sulla voce di menu Access control configuration (Configurazione controllo di accesso) in Impostazioni.Click the Access control configuration menu item under Settings
  3. Specificare l'elenco di intervalli di indirizzi IP che devono essere accettati dal trigger.Specify the list of IP address ranges to be accepted by the trigger

Un intervallo IP valido assume il formato 192.168.1.1/255.A valid IP range takes the format 192.168.1.1/255. Se si desidera che l'app per la logica venga attivata solo come app per la logica nidificata, selezionare l'opzione Only other logic apps (Solo altre app per la logica).If you want the logic app to only fire as a nested logic app, select the Only other logic apps option. L'opzione scrive una matrice vuota nella risorsa; ciò significa che vengono attivate correttamente solo le chiamate dal servizio stesso (app per la logica padre).This option writes an empty array to the resource, meaning only calls from the service itself (parent logic apps) fire successfully.

Nota

Un'app per la logica con un trigger di richiesta potrebbe comunque essere eseguita tramite l'API REST/Gestione API /triggers/{triggerName}/run indipendentemente dall'IP.You can still run a logic app with a request trigger through the REST API / Management /triggers/{triggerName}/run regardless of IP. In questo caso potrebbe essere richiesta l'autenticazione all'API REST di Azure e tutti gli eventi potrebbero essere visualizzati nel log di controllo di Azure.This scenario requires authentication against the Azure REST API, and all events would appear in the Azure Audit Log. Impostare i criteri di controllo di accesso di conseguenza.Set access control policies accordingly.

Impostazione degli intervalli IP nella definizione della risorsaSetting IP ranges on the resource definition

Se si usa un modello di distribuzione per automatizzare le distribuzioni, le impostazioni dell'intervallo IP possono essere configurate nel modello risorsa.If you are using a deployment template to automate your deployments, the IP range settings can be configured on the resource template.

{
    "properties": {
        "definition": {
        },
        "parameters": {},
        "accessControl": {
            "triggers": {
                "allowedCallerIpAddresses": [
                    {
                        "addressRange": "192.168.12.0/23"
                    },
                    {
                        "addressRange": "2001:0db8::/64"
                    }
                ]
            }
        }
    },
    "type": "Microsoft.Logic/workflows"
}

Aggiunta di Azure Active Directory, OAuth o altri standard di sicurezzaAdding Azure Active Directory, OAuth, or other security

Per aggiungere altri protocolli di autorizzazione a un'app per la logica, Gestione API di Azure offre monitoraggio avanzato, sicurezza, criteri e documentazione per ogni endpoint in grado di esporre un'app per la logica come un'API.To add more authorization protocols on top of a logic app, Azure API Management offers rich monitoring, security, policy, and documentation for any endpoint with the capability to expose a logic app as an API. Gestione API di Azure può esporre un endpoint privato o pubblico per l'app per la logica, che potrebbe sfruttare Azure Active Directory, certificati, OAuth o altri standard di sicurezza.Azure API Management can expose a public or private endpoint for the logic app, which could use Azure Active Directory, certificate, OAuth, or other security standards. Quando viene ricevuta una richiesta, Gestione API di Azure la inoltra all'app per la logica (eseguendo eventuali trasformazioni e restrizioni necessarie in transito).When a request is received, Azure API Management forwards the request to the logic app (performing any needed transformations or restrictions in-flight). È possibile usare le impostazioni dell'intervallo IP in ingresso nell'app per la logica per consentire il trigger solo da Gestione API.You can use the incoming IP range settings on the logic app to only allow the logic app to be triggered from API Management.

Proteggere l'accesso per gestire o modificare un'app per la logicaSecure access to manage or edit logic apps

È possibile limitare l'accesso alle operazioni di gestione in un'app per la logica in modo che le operazioni sulla risorsa possano essere eseguite solo da utenti o gruppi specifici.You can restrict access to management operations on a logic app so that only specific users or groups are able to perform operations on the resource. Le app per la logica usano la funzionalità di controllo degli accessi in base al ruolo e possono essere personalizzate con gli stessi strumenti.Logic apps use the Azure Role-Based Access Control (RBAC) feature, and can be customized with the same tools. Esistono anche alcuni ruoli predefiniti a cui è possibile assegnare i membri della sottoscrizione:There are a few built-in roles you can assign members of your subscription to as well:

  • Collaboratore per app per la logica: offre l'accesso per visualizzare, modificare e aggiornare un'app per la logica.Logic App Contributor - Provides access to view, edit, and update a logic app. Non è possibile rimuovere la risorsa o eseguire operazioni di amministrazione.Cannot remove the resource or perform admin operations.
  • Operatore per app per la logica: può visualizzare l'app per la logica e la cronologia delle esecuzioni e abilitare o disabilitare.Logic App Operator - Can view the logic app and run history, and enable/disable. Non è possibile modificare o aggiornare la definizione.Cannot edit or update the definition.

È inoltre possibile usare i blocchi per le risorse di Azure per impedire la modifica o l'eliminazione delle app per la logica.You can also use Azure Resource Lock to prevent changing or deleting logic apps. Questo risulta utile per evitare la modifica o l'eliminazione delle risorse di produzione.This capability is valuable to prevent production resources from changes or deletions.

Proteggere l'accesso ai contenuti della cronologia delle esecuzioniSecure access to contents of the run history

È possibile limitare l'accesso ai contenuti di input o output dalle esecuzioni precedenti a intervalli di indirizzi IP specifici.You can restrict access to contents of inputs or outputs from previous runs to specific IP address ranges.

Tutti i dati all'interno di un'esecuzione del flusso di lavoro è crittografata in transito e a riposo.All data within a workflow run is encrypted in transit and at rest. Quando viene effettuata una chiamata alla cronologia delle esecuzioni, il servizio autentica la richiesta e offre collegamenti alla richiesta, oltre a input e output di risposta.When a call to run history is made, the service authenticates the request and provides links to the request and response inputs and outputs. Questo collegamento può essere protetto in modo che i contenuti vengano restituiti solo dalle richieste di visualizzare contenuto da un intervallo di indirizzi IP designato.This link can be protected so only requests to view content from a designated IP address range return the contents. È possibile usare questa funzionalità per il controllo di accesso.You can use this capability for additional access control. È anche possibile specificare un indirizzo IP come 0.0.0.0 in modo che nessuno possa accedere a input e output.You could even specify an IP address like 0.0.0.0 so no one could access inputs/outputs. Questa restrizione può essere rimossa solo da qualcuno con autorizzazioni di amministratore per offrire l'accesso "just-in-time" ai contenuti del flusso di lavoro.Only someone with admin permissions could remove this restriction, providing the possibility for 'just-in-time' access to workflow contents.

Questa impostazione può essere configurata nelle impostazioni della risorsa del Portale di Azure:This setting can be configured within the resource settings of the Azure portal:

  1. Nel Portale di Azure aprire l'app per la logica per cui si desidera aggiungere limitazioni per l'indirizzo IP.In the Azure portal, open the logic app you want to add IP address restrictions
  2. Fare clic sulla voce di menu Access control configuration (Configurazione controllo di accesso) in Impostazioni.Click the Access control configuration menu item under Settings
  3. Specificare l'elenco di intervalli di indirizzi IP per l'accesso al contenutoSpecify the list of IP address ranges for access to content

Impostazione degli intervalli IP nella definizione della risorsaSetting IP ranges on the resource definition

Se si usa un modello di distribuzione per automatizzare le distribuzioni, le impostazioni dell'intervallo IP possono essere configurate nel modello risorsa.If you are using a deployment template to automate your deployments, the IP range settings can be configured on the resource template.

{
    "properties": {
        "definition": {
        },
        "parameters": {},
        "accessControl": {
            "contents": {
                "allowedCallerIpAddresses": [
                    {
                        "addressRange": "192.168.12.0/23"
                    },
                    {
                        "addressRange": "2001:0db8::/64"
                    }
                ]
            }
        }
    },
    "type": "Microsoft.Logic/workflows"
}

Proteggere i parametri e gli input all'interno di un flusso di lavoroSecure parameters and inputs within a workflow

Esistono alcuni aspetti della definizione di un flusso di lavoro per cui potrebbe essere opportuno creare parametri per la distribuzione nei diversi ambienti.You might want to parameterize some aspects of a workflow definition for deployment across environments. Inoltre, alcuni di questi parametri potrebbero essere parametri protetti da non visualizzare durante la modifica di un flusso di lavoro, ad esempio un ID client e un segreto client per l'autenticazione di Azure Active Directory di un'azione HTTP.Also, some parameters might be secure parameters you don't want to appear when editing a workflow, such as a client ID and client secret for Azure Active Directory authentication of an HTTP action.

Uso di parametri e parametri protettiUsing parameters and secure parameters

Il linguaggio di definizione del flusso di lavoro assicura un'operazione @parameters() per accedere al valore di un parametro di risorsa in fase di runtime.To access the value of a resource parameter at runtime, the workflow definition language provides a @parameters() operation. È inoltre possibile specificare parametri nel modello di distribuzione risorse.Also, you can specify parameters in the resource deployment template. Se si specifica un tipo di parametro come securestring, questo non verrà restituito con il resto della definizione della risorsa, ovvero non sarà accessibile visualizzando la risorsa dopo la distribuzione.But if you specify the parameter type as securestring, the parameter won't be returned with the rest of the resource definition, and won't be accessible by viewing the resource after deployment.

Nota

Se il parametro viene usato nelle intestazioni o nel corpo della richiesta, potrebbe essere visibile accedendo alla cronologia delle esecuzioni e alla richiesta HTTP in uscita.If your parameter is used in the headers or body of a request, the parameter might be visible by accessing the run history and outgoing HTTP request. Assicurarsi di configurare di conseguenza i criteri di accesso ai contenuti.Make sure to set your content access policies accordingly. Le intestazioni di autorizzazione non sono mai visibili tramite input o output.Authorization headers are never visible through inputs or outputs. Pertanto, se usato in tale contesto, il segreto non è recuperabile.So if the secret is being used there, the secret is not retrievable.

Modello di distribuzione risorse con segretiResource deployment template with secrets

Di seguito è riportato un esempio di distribuzione che fa riferimento a un parametro protetto di secret in fase di runtime.The following example shows a deployment that references a secure parameter of secret at runtime. In un file di parametri separato è possibile specificare il valore dell'ambiente per secret oppure sfruttare l'insieme di credenziali delle chiavi di Azure Resource Manager per recuperare i segreti in fase di distribuzione.In a separate parameters file, you could specify the environment value for the secret, or use Azure Resource Manager KeyVault to retrieve secrets at deploy time.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "secretDeploymentParam": {
      "type": "securestring"
    }
  },
  "variables": {},
  "resources": [
    {
      "name": "secret-deploy",
      "type": "Microsoft.Logic/workflows",
      "location": "westus",
      "tags": {
        "displayName": "LogicApp"
      },
      "apiVersion": "2016-06-01",
      "properties": {
        "definition": {
          "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
          "actions": {
            "Call_External_API": {
              "type": "http",
              "inputs": {
                "headers": {
                  "Authorization": "@parameters('secret')"
                },
                "body": "This is the request"
              },
              "runAfter": {}
            }
          },
          "parameters": {
            "secret": {
              "type": "SecureString"
            }
          },
          "triggers": {
            "manual": {
              "type": "Request",
              "kind": "Http",
              "inputs": {
                "schema": {}
              }
            }
          },
          "contentVersion": "1.0.0.0",
          "outputs": {}
        },
        "parameters": {
          "secret": {
            "value": "[parameters('secretDeploymentParam')]"
          }
        }
      }
    }
  ],
  "outputs": {}
}

Proteggere l'accesso ai servizi che ricevono richieste da un flusso di lavoroSecure access to services receiving requests from a workflow

Esistono diversi modi per proteggere qualsiasi endpoint a cui l'app per la logica deve accedere.There are many ways to help secure any endpoint the logic app needs to access.

Uso dell'autenticazione nelle richieste in uscitaUsing authentication on outbound requests

Quando si lavora con un'azione HTTP, HTTP + Swagger (Open API) o Webhook, è possibile aggiungere l'autenticazione alla richiesta inviata.When working with an HTTP, HTTP + Swagger (Open API), or Webhook action, you can add authentication to the request being sent. Potrebbe trattarsi di autenticazione di base, autenticazione del certificato o l'autenticazione di Azure Active Directory.You could include basic authentication, certificate authentication, or Azure Active Directory authentication. Informazioni dettagliate su come configurare l'autenticazione sono disponibili in questo articolo.Details on how to configure this authentication can be found in this article.

Limitazione dell'accesso agli indirizzi IP delle app per la logicaRestricting access to logic app IP addresses

Tutte le chiamate dalle app per la logica provengono da un set specifico di indirizzi IP in base all'area.All calls from logic apps come from a specific set of IP addresses per region. È possibile aggiungere altri filtri in modo da accettare solo richieste da tali indirizzi IP designati.You can add additional filtering to only accept requests from those designated IP addresses. Per un elenco di indirizzi IP, vedere Limiti e configurazione delle app per la logica.For a list of those IP addresses, see logic app limits and configuration.

Connettività localeOn-premises connectivity

Le app per la logica offrono integrazione con numerosi servizi per garantire una comunicazione locale sicura e affidabile.Logic apps provide integration with several services to provide secure and reliable on-premises communication.

Gateway dati localeOn-premises data gateway

Molti dei connettori gestiti delle app per la logica offrono una connettività sicura a sistemi locali, tra cui File System, SQL, SharePoint, DB2 e altro ancora.Many managed connectors for logic apps provide secure connectivity to on-premises systems, including File System, SQL, SharePoint, DB2, and more. Il gateway inoltra i dati da origini locali sui canali crittografati tramite il bus di servizio di Azure.The gateway relays data from on-premises sources on encrypted channels through the Azure Service Bus. Tutto il traffico ha origine come traffico sicuro in uscita dall'agente di gateway.All traffic originates as secure outbound traffic from the gateway agent. Altre informazioni sul funzionamento del gateway dati.Learn more about how the data gateway works.

Gestione API di AzureAzure API Management

Gestione API di Azure dispone di numerose opzioni di connettività locale, tra cui l'integrazione ExpressRoute e VPN da sito a sito per la protezione del proxy e la comunicazione con i sistemi locali.Azure API Management has on-premises connectivity options, including site-to-site VPN and ExpressRoute integration for secured proxy and communication to on-premises systems. Nella finestra di progettazione delle app per la logica è possibile selezionare rapidamente un'API esposta da Gestione API di Azure all'interno di un flusso di lavoro, in modo da offrire accesso rapido ai sistemi locali.In the Logic App Designer, you can quickly select an API exposed from Azure API Management within a workflow, providing quick access to on-premises systems.

Passaggi successiviNext steps

Creare un modello di distribuzioneCreate a deployment template
Gestione delle eccezioniException handling
Monitorare le app per la logicaMonitor your logic apps
Diagnosi degli errori delle app per la logicaDiagnosing logic app failures and issues