Skip to content

Commit 6ef99e7

Browse files
authored
Expand security guidance to regenerating access keys
1 parent 215c46d commit 6ef99e7

File tree

1 file changed

+43
-22
lines changed

1 file changed

+43
-22
lines changed

articles/logic-apps/logic-apps-securing-a-logic-app.md

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services: logic-apps
55
ms.suite: integration
66
ms.reviewer: estfan, rarayudu, azla
77
ms.topic: how-to
8-
ms.date: 08/15/2024
8+
ms.date: 10/15/2024
99
---
1010

1111
# Secure access and data for workflows in Azure Logic Apps
@@ -910,7 +910,7 @@ When a workflow starts with a request-based trigger, and you save that workflow
910910

911911
For example, to view this URL in a **Request** trigger, find the trigger's **HTTP URL** property:
912912

913-
:::image type="content" source="media/logic-apps-securing-a-logic-app/request-trigger-url.png" alt-text="Screenshot shows Azure portal, Consumption workflow designer, and Request trigger endpoint URL." lightbox="media/logic-apps-securing-a-logic-app/request-trigger-url.png":::
913+
:::image type="content" source="media/logic-apps-securing-a-logic-app/request-trigger-url.png" alt-text="Screenshot shows Azure portal, Consumption workflow designer, and Request trigger endpoint URL.":::
914914

915915
The complete URL looks like the following example:
916916

@@ -924,31 +924,32 @@ The SAS in the URL has query parameters, which the following table describes:
924924
| **`sv`** | Specifies the SAS version to use for generating the signature. |
925925
| **`sig`** | Specifies the signature to use for authenticating access to the trigger. This signature is generated by using the SHA256 algorithm with a secret access key on all the URL paths and properties. This key is kept secret and encrypted, stored with the logic app, and is never exposed or published. Your logic app authorizes only those triggers that contain a valid signature created with the secret key. |
926926

927-
> [!CAUTION]
927+
> [!IMPORTANT]
928928
>
929-
> Make sure to protect an SAS just as you would protect an account key from unauthorized use.
930-
> Set up or have a plan in place for revoking a compromised SAS key. Employ discretion in
931-
> distributing an SAS URI, and only distribute SAS URIs over a secure connection such as HTTPS.
932-
> Make sure to only perform operations that use an SAS over an HTTPS connection.
929+
> Make sure to protect your SAS key just as you protect an account key from unauthorized use. Set up or have a plan
930+
> for revoking a compromised access key. Use discretion when you distribute URIs that use access keys, and only
931+
> distribute such URIs over a secure connection such as HTTPS. Make sure to only perform operations that use an access
932+
> key over an HTTPS connection. Anyone that has a URI with valid key can access the associated resource. To maintain
933+
> security and protect access to your logic app workflow, [regenerate access keys](#regenerate-access-key) on a regular
934+
> schedule as they might need to comply with security policies or become compromised. This way, you can make sure that
935+
> only authorized requests can trigger your workflow, which protects your data and processes from unauthorized access.
933936
>
934-
> If you use an SAS to access storage services, Microsoft recommends that you
937+
> If you use an SAS key to access storage services, Microsoft recommends that you
935938
> [create a user delegation SAS](/rest/api/storageservices/create-user-delegation-sas),
936939
> which is secured with [Microsoft Entra ID](/entra/identity/authentication/overview-authentication),
937940
> rather than an account key.
938-
939-
Inbound calls to the endpoint on a request-based trigger can use only one authorization scheme, either SAS or [OAuth 2.0 with Microsoft Entra ID](#enable-oauth). Although using one scheme doesn't disable the other, if you use both schemes at the same time, Azure Logic Apps generates an error because the service doesn't know which scheme to choose.
940-
941-
If your Consumption workflow starts with the **Request** trigger, you can [disable SAS authentication](#disable-sas). This option works even if you also [restrict authorization to use only OAuth 2.0 with Microsoft Entra ID](#enable-oauth-only-option). For Standard workflows, you can use other authentication types without disabling SAS.
942-
943-
> [!IMPORTANT]
944941
>
945942
> For optimal security, Microsoft recommends using [Microsoft Entra ID](/entra/identity/authentication/overview-authentication)
946-
> with [managed identities](/entra/identity/managed-identities-azure-resources/overview) for authentication when possible.
943+
> with [managed identities](/entra/identity/managed-identities-azure-resources/overview) for authentication whenever possible.
947944
> This option provides superior security without having to provide credentials. Azure manages this identity and helps keep
948945
> authentication information secure so that you don't have to manage this sensitive information. To set up a managed identity
949946
> for Azure Logic Apps, see [Authenticate access and connections to Azure resources with managed identities in Azure Logic Apps](authenticate-with-managed-identity.md).
950947
951-
For more information about using SAS, see the following sections in this guide:
948+
Inbound calls to the endpoint on a request-based trigger can use only one authorization scheme, either SAS or [OAuth 2.0 with Microsoft Entra ID](#enable-oauth). Although using one scheme doesn't disable the other, if you use both schemes at the same time, Azure Logic Apps generates an error because the service doesn't know which scheme to choose.
949+
950+
If you have a Consumption workflow that starts with the **Request** trigger, you can [disable SAS authentication](#disable-sas). This option works even if you also [restrict authorization to use only OAuth 2.0 with Microsoft Entra ID](#enable-oauth-only-option). For Standard workflows, you can use other authentication types without disabling SAS.
951+
952+
For more information about security when you use an SAS key, see the following sections in this guide:
952953

953954
* [Regenerate access keys](#regenerate-access-keys)
954955
* [Create expiring callback URLs](#expiring-callback-urls)
@@ -968,9 +969,9 @@ This option works even if you also [enable OAuth 2.0 with Microsoft Entra ID as
968969

969970
> [!NOTE]
970971
>
971-
> This action disables SAS authentication for incoming requests and blocks existing SAS tokens or
972-
> signatures from working. However, your SAS tokens or signatures remain valid and still work
973-
> if you enable SAS authentication again. To disable SAS tokens and signatures, see
972+
> This action disables SAS authentication for incoming requests and blocks existing SAS keys or
973+
> signatures from working. However, your SAS keys or signatures remain valid and still work if you
974+
> enable SAS authentication again. To disable SAS keys and signatures by creating new versions, see
974975
> [Regenerate access keys](#regenerate-access-keys).
975976
976977
After you disable SAS authentication, the endpoint URL for the **Request** trigger no longer includes the SAS key, for example:
@@ -1051,14 +1052,34 @@ For Consumption workflows where you want to disable SAS authentication, follow t
10511052

10521053
### Regenerate access keys
10531054

1054-
To generate a new security access key at any time, use the Azure REST API or Azure portal. All previously generated URLs that use the old key are invalidated and no longer have authorization to trigger the logic app. The URLs that you retrieve after regeneration are signed with the new access key.
1055+
To maintain security and protect access to your logic app workflow, regenerate access keys on a regular schedule as they might need to comply with security policies or become compromised. This way, you can make sure that only authorized requests can trigger your workflow, which protects your data and processes from unauthorized access.
1056+
1057+
To generate a new access key at any time, use the Azure REST API or Azure portal. All previously generated URIs or URLs that use the old key are invalidated and no longer have authorization to trigger your logic app workflow. The URIs that you retrieve after regeneration are signed with the new access key.
10551058

1056-
1. In the [Azure portal](https://portal.azure.com), open the logic app that has the key you want to regenerate.
1059+
1. In the [Azure portal](https://portal.azure.com), open the logic app resource that uses the key you want to regenerate.
10571060

10581061
1. On the logic app resource menu, under **Settings**, select **Access Keys**.
10591062

10601063
1. Select the key that you want to regenerate and finish the process.
10611064

1065+
> [!IMPORTANT]
1066+
>
1067+
> Make sure to protect your access key just as you protect an account key from unauthorized use. Set up or have a plan
1068+
> for revoking a compromised access key. Use discretion when you distribute URIs that use access keys, and only
1069+
> distribute such URIs over a secure connection such as HTTPS. Make sure to only perform operations that use an access
1070+
> key over an HTTPS connection. Anyone that has a URI with valid key can access the associated resource.
1071+
>
1072+
> If you use an SAS key to access storage services, Microsoft recommends that you
1073+
> [create a user delegation SAS](/rest/api/storageservices/create-user-delegation-sas),
1074+
> which is secured with [Microsoft Entra ID](/entra/identity/authentication/overview-authentication),
1075+
> rather than an account key.
1076+
>
1077+
> For optimal security, Microsoft recommends using [Microsoft Entra ID](/entra/identity/authentication/overview-authentication)
1078+
> with [managed identities](/entra/identity/managed-identities-azure-resources/overview) for authentication when possible.
1079+
> This option provides superior security without having to provide credentials. Azure manages this identity and helps keep
1080+
> authentication information secure so that you don't have to manage this sensitive information. To set up a managed identity
1081+
> for Azure Logic Apps, see [Authenticate access and connections to Azure resources with managed identities in Azure Logic Apps](authenticate-with-managed-identity.md).
1082+
10621083
<a name="expiring-callback-urls"></a>
10631084

10641085
### Create expiring callback URLs
@@ -1593,7 +1614,7 @@ On all other triggers and actions that support the **Active Directory OAuth** (O
15931614
| Property (designer) | Property (JSON) | Required | Value | Description |
15941615
|---------------------|-----------------|----------|-------|-------------|
15951616
| **Authentication** | `type` | Yes | **Active Directory OAuth** (OAuth 2.0 with Microsoft Entra ID) <br>or <br>`ActiveDirectoryOAuth` | The authentication type to use. Azure Logic Apps currently follows the [OAuth 2.0 protocol](/entra/architecture/auth-oauth2). |
1596-
| **Authority** | `authority` | No | <*URL-for-authority-token-issuer*> | The URL for the authority that provides the access token, such as `https://login.microsoftonline.com/` for Azure global service regions. For other national clouds, review [Microsoft Entra authentication endpoints - Choosing your identity authority](/entra/identity-platform/authentication-national-cloud#application-endpoints). |
1617+
| **Authority** | `authority` | No | <*URL-for-authority-token-issuer*> | The URL for the authority that provides the access key, such as `https://login.microsoftonline.com/` for Azure global service regions. For other national clouds, review [Microsoft Entra authentication endpoints - Choosing your identity authority](/entra/identity-platform/authentication-national-cloud#application-endpoints). |
15971618
| **Tenant** | `tenant` | Yes | <*tenant-ID*> | The tenant ID for the Microsoft Entra tenant |
15981619
| **Audience** | `audience` | Yes | <*resource-to-authorize*> | The resource that you want to use for authorization, for example, `https://management.core.windows.net/` |
15991620
| **Client ID** | `clientId` | Yes | <*client-ID*> | The client ID for the app requesting authorization |

0 commit comments

Comments
 (0)