You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/logic-apps/logic-apps-securing-a-logic-app.md
+93-49Lines changed: 93 additions & 49 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ To control access and protect data in Azure Logic Apps, you can set up security
16
16
*[Access to logic app operations](#secure-operations)
17
17
*[Access to run history inputs and outputs](#secure-run-history)
18
18
*[Access to parameter inputs](#secure-action-parameters)
19
-
*[Access to services and systems called from logic apps](#secure-requests)
19
+
*[Access to services and systems called from logic apps](#secure-outbound-requests)
20
20
21
21
<aname="secure-triggers"></a>
22
22
@@ -27,6 +27,7 @@ If your logic app uses a request-based trigger, which receives incoming calls or
27
27
Here are options that can help you secure access to this trigger type:
28
28
29
29
*[Generate shared access signatures](#sas)
30
+
*[Enable Azure Active Directory Open Authentication (Azure AD OAuth)](#enable-oauth)
30
31
*[Restrict inbound IP addresses](#restrict-inbound-ip-addresses)
31
32
*[Add Azure Active Directory Open Authentication (Azure AD OAuth) or other security](#add-authentication)
32
33
@@ -89,6 +90,93 @@ POST /subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group
89
90
90
91
In the body, include the `KeyType` property as either `Primary` or `Secondary`. This property returns a URL that's signed by the specified security key.
91
92
93
+
<aname="enable-oauth"></a>
94
+
95
+
### Enable Azure Active Directory OAuth
96
+
97
+
If your logic app starts with a Request trigger, you can enable [Azure Active Directory Open Authentication](../active-directory/develop/about-microsoft-identity-platform.md) (Azure AD OAuth) for authorizing inbound calls to the Request trigger. Before you enable this authentication, review these considerations:
98
+
99
+
* Your logic app can have up to five authorization policies. Each authorization policy can have up to 10 [claims](../active-directory/develop/developer-glossary.md#claim).
100
+
101
+
* An authorization policy must include at least the **Issuer** claim, which has a value that starts with `https://sts.windows.net/` as the Azure AD issuer ID.
102
+
103
+
* Your logic app can't use both Azure AD OAuth and [Shared Access Signatures (SAS)](#sas) authorization schemes.
104
+
105
+
* OAuth tokens are supported only for workflow trigger requests.
106
+
107
+
* Only Bearer-type authorization schemes are supported for OAuth tokens.
108
+
109
+
To enable Azure AD OAuth, follow these steps to add one or more authorization policies to your logic app.
110
+
111
+
1. In the [Azure portal](https://portal.microsoft.com), find and open your logic app in the Logic App Designer.
112
+
113
+
1. On the logic app menu, under **Settings**, select **Authorization**. After the Authorization pane opens, select **Add policy**.
1. Provide information about the authorization policy by specifying the [claim types](../active-directory/develop/developer-glossary.md#claim) and values that your logic app expects in the authentication tokens presented by inbound calls to the Request trigger:
118
+
119
+

120
+
121
+
| Property | Required | Description |
122
+
|----------|----------|-------------|
123
+
|**Policy name**| Yes | The name that you want to use for the authorization policy |
124
+
|**Claims**| Yes | The claim types and values that your logic app accepts from inbound calls. Here are the available standard claim types: <p><p>- **Issuer** <br>- **Audience** <br>- **Subject** <br>- **JWT ID** (JSON Web Token ID) <p><p>At the minimum, the **Claims** list must include the **Issuer** claim, which has a value that starts with the `https://sts.windows.net/` Azure AD issuer ID. For more information about these claim types, see [Claims in Azure AD security tokens](../active-directory/azuread-dev/v1-authentication-scenarios.md#claims-in-azure-ad-security-tokens). You can also specify your own claim type and value. |
125
+
|||
126
+
127
+
1. To add another claim, select from these options:
128
+
129
+
* To add another standard claim type, select **Add standard claim**, select the claim type, and specify the claim value.
130
+
131
+
* To add your own claim, select **Add custom claim**, and specify the custom claim value.
132
+
133
+
1. To add another authorization policy, select **Add policy**. Repeat the previous steps to set up the policy.
134
+
135
+
1. When you're done, select **Save**.
136
+
137
+
You've now set up your logic app to use Azure AD OAuth for authorizing inbound requests. This example shows a sample decoded [access token](../active-directory/develop/access-tokens.md) that's used for calling a logic app that specifies an authorization policy with an **Issuer**-type claim:
@@ -563,15 +651,15 @@ This example template that has multiple secured parameter definitions that use t
563
651
}
564
652
```
565
653
566
-
<aname="secure-requests"></a>
654
+
<aname="secure-outbound-requests"></a>
567
655
568
656
## Access to services and systems called from logic apps
569
657
570
658
Here are some ways that you can help secure endpoints that receive calls or requests from your logic app:
571
659
572
660
* Add authentication to outbound requests.
573
661
574
-
When you work with an HTTP-based trigger or action that makes outbound calls, such as HTTP, HTTP + Swagger, or Webhook, you can add authentication to the request that's sent by your logic app. For example, you can use these authentication types:
662
+
When you work with an HTTP-based trigger or action that makes outbound calls, such as HTTP, HTTP + Swagger, or Webhook, you can add authentication to the request that's sent by your logic app. For example, you can select these authentication types:
575
663
576
664
*[Basic authentication](#basic-authentication)
577
665
@@ -615,7 +703,7 @@ HTTP and HTTPS endpoints support various kinds of authentication. Based on the t
@@ -730,50 +818,6 @@ When you use [secured parameters](#secure-action-parameters) to handle and prote
730
818
}
731
819
```
732
820
733
-
<aname="enable-oauth"></a>
734
-
735
-
### Enable Azure AD OAuth on Request triggers
736
-
737
-
When your logic app starts with the Request trigger, you can use [Azure AD OAuth](../active-directory/develop/about-microsoft-identity-platform.md) for authorizing inbound calls to your logic app. Before you enable this authentication, review these considerations:
738
-
739
-
* Your logic app can have up to five authorization policies. Each authorization policy can have up to 10 [claims](../active-directory/develop/developer-glossary.md#claim).
740
-
741
-
* An authorization policy must include at least the **Issuer** claim, which has a value that starts with `https://sts.windows.net/` as the Azure AD issuer ID.
742
-
743
-
* Your logic app can't use both Azure AD OAuth and [Shared Access Signatures (SAS)](#sas) schemes for authorization.
744
-
745
-
* Currently, OAuth tokens are supported only for workflow trigger requests.
746
-
747
-
* Only Bearer-type authorization schemes are supported for OAuth tokens.
748
-
749
-
To set up this authentication, follow these steps to add one or more authorization policies to your logic app.
750
-
751
-
1. In the [Azure portal](https://portal.microsoft.com), find and open your logic app in the Logic App Designer.
752
-
753
-
1. On the logic app menu, under **Settings**, select **Authorization**. After the Authorization pane opens, select **Add policy**.
1. Provide information about the authorization policy by specifying the [claim types](../active-directory/develop/developer-glossary.md#claim) and values that your logic app expects in the authentication tokens presented by inbound calls to the Request trigger:
758
-
759
-

760
-
761
-
| Property | Required | Description |
762
-
|----------|----------|-------------|
763
-
|**Policy name**| Yes | The name that you want to use for the authorization policy |
764
-
|**Claims**| Yes | The claim types and values that your logic app accepts from inbound calls. Here are the available standard claim types: <p><p>- **Issuer** <br>- **Audience** <br>- **Subject** <br>- **JWT ID** (JSON Web Token ID) <p><p>At the minimum, the **Claims** list must include the **Issuer** claim, which has a value that starts with the `https://sts.windows.net/` Azure AD issuer ID. For more information about these claim types, see [Claims in Azure AD security tokens](../active-directory/azuread-dev/v1-authentication-scenarios.md#claims-in-azure-ad-security-tokens). You can also specify your own claim type and value. |
765
-
|||
766
-
767
-
1. To add another claim, select from these options:
768
-
769
-
* To add another standard claim type, select **Add standard claim**, select the claim type, and specify the claim value.
770
-
771
-
* To add your own claim, select **Add custom claim**, and specify the custom claim value.
772
-
773
-
1. To add another authorization policy, select **Add policy**. Repeat the previous steps to set up the policy.
774
-
775
-
1. When you're done, select **Save**.
776
-
777
821
<aname="raw-authentication"></a>
778
822
779
823
### Raw authentication
@@ -833,7 +877,7 @@ If the [Managed Identity](../active-directory/managed-identities-azure-resources
|**Authentication**|`type`| Yes |**Managed Identity** <br>or <br>`ManagedServiceIdentity`| The authentication type to use |
835
879
|**Managed Identity**|`identity`| Yes | * **System Assigned Managed Identity** <br>or <br>`SystemAssigned` <p><p>* <*user-assigned-identity-name*> | The managed identity to use |
836
-
| **Audience** | `audience` | Yes | <*target-resource-ID*> | The resource ID for the target resource that you want to access. <p>For example, `https://storage.azure.com/` makes the access tokens for authentication valid for all storage accounts. However, you can also specify a root service URL, such as `https://fabrikamstorageaccount.blob.core.windows.net` for a specific storage account. <p>**Note**: The **Audience** property might be hidden in some triggers or actions. To make this property visible, in the trigger or action, open the **Add new parameter** list, and select **Audience**. <p><p>**Important**: Make sure that this target resource ID *exactly matches* the value that Azure AD expects, including any required trailing slashes. So, the `https://storage.azure.com/` resource ID for all Azure Blob Storage accounts requires a trailing slash. However, the resource ID for a specific storage account doesn't require a trailing slash. To find these resource IDs, see [Azure services that support Azure AD](../active-directory/managed-identities-azure-resources/services-support-managed-identities.md#azure-services-that-support-azure-ad-authentication). |
880
+
| **Audience** | `audience` | Yes | <*target-resource-ID*> | The resource ID for the target resource that you want to access. <p>For example, `https://storage.azure.com/` makes the [access tokens](../active-directory/develop/access-tokens.md) for authentication valid for all storage accounts. However, you can also specify a root service URL, such as `https://fabrikamstorageaccount.blob.core.windows.net` for a specific storage account. <p>**Note**: The **Audience** property might be hidden in some triggers or actions. To make this property visible, in the trigger or action, open the **Add new parameter** list, and select **Audience**. <p><p>**Important**: Make sure that this target resource ID *exactly matches* the value that Azure AD expects, including any required trailing slashes. So, the `https://storage.azure.com/` resource ID for all Azure Blob Storage accounts requires a trailing slash. However, the resource ID for a specific storage account doesn't require a trailing slash. To find these resource IDs, see [Azure services that support Azure AD](../active-directory/managed-identities-azure-resources/services-support-managed-identities.md#azure-services-that-support-azure-ad-authentication). |
837
881
|||||
838
882
839
883
When you use [secured parameters](#secure-action-parameters) to handle and protect sensitive information, for example, in an [Azure Resource Manager template for automating deployment](../logic-apps/logic-apps-azure-resource-manager-templates-overview.md), you can use expressions to access these parameter values at runtime. This example HTTP action definition specifies the authentication `type` as `ManagedServiceIdentity` and uses the [parameters() function](../logic-apps/workflow-definition-language-functions-reference.md#parameters) to get the parameter values:
0 commit comments