-
Notifications
You must be signed in to change notification settings - Fork 227
Changes for full vnet integration of data collected through block blo… #5841
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 13 commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
170d692
Changes for full vnet integration of data collected through block blo…
sumoanema 6ffa2f0
Moving images and linking them in the doc
sumoanema 793c4b8
Some formatting issues. Moving and linking images to the doc
sumoanema 9c19f6d
Updates from review
jpipkin1 b4fe0cb
Update steps for multi storage account data collection and updating s…
sumoanema de22c4b
Static IP are not given in the UI anymore and are not required for vn…
sumoanema 472230f
Troubleshooting pointer addition - which occured recently with a cust…
sumoanema 0980fa0
Fix spelling error
jpipkin1 efe6806
Update full-vnet-integration.md
amee-sumo 3d8d63e
Merge branch 'main' into blockblobtroubleshoot
amee-sumo fc55222
minor edits
amee-sumo 5e0ca7a
change id name
amee-sumo 813e55a
Merge branch 'main' into blockblobtroubleshoot
amee-sumo 17a7cb5
Update docs/send-data/collect-from-other-data-sources/azure-blob-stor…
amee-sumo fe43c67
Update full-vnet-integration.md
amee-sumo 61215cf
Merge branch 'main' into blockblobtroubleshoot
amee-sumo 749b9d2
Adjust indenting
jpipkin1 9a523b1
Fix broken anchor link
jpipkin1 2b452f5
Merge branch 'main' into blockblobtroubleshoot
amee-sumo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
103 changes: 103 additions & 0 deletions
103
...-from-other-data-sources/azure-blob-storage/block-blob/full-vnet-integration.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| --- | ||
| id: full-vnet-integration | ||
| title: Collect logs from Azure Blob Storage with full Virtual Network (VNet) Integration | ||
| sidebar_label: Collect block blob with full Virtual Network integration | ||
| description: Configure a pipeline to ship logs from the Azure Blob Storage throughout the Virtual Network and then to an HTTP source on a hosted collector in Sumo Logic. | ||
| --- | ||
|
|
||
| import useBaseUrl from '@docusaurus/useBaseUrl'; | ||
|
|
||
| The current solution for ingesting block blob data from an Azure Storage Account into Sumo Logic sets up a pipeline that assumes public access is enabled on the storage account being monitored. | ||
| If you prefer to restrict access and keep your storage account behind a firewall, refer to the instructions [here](https://help.sumologic.com/docs/send-data/collect-from-other-data-sources/azure-blob-storage/block-blob/collect-logs/#step-3-enabling-vnet-integration-optional). However, if your security requirements demand that all Azure resources deployed via the ARM template, including the Storage Account, Event Hub, Azure Functions, and Service Bus, are fully integrated with a Virtual Network, follow the steps outlined below. | ||
|
|
||
| 1. Download the ARM template [https://github.com/SumoLogic/sumologic-azure-function/blob/azure\_premium\_template\_vnet\_integration/BlockBlobReader/src/blobreaderdeploywithPremiumPlan.json](https://github.com/SumoLogic/sumologic-azure-function/blob/azure_premium_template_vnet_integration/BlockBlobReader/src/blobreaderdeploywithPremiumPlan.json) that provisions the required resources, including a premium-tier Service Bus. | ||
| 2. Create the following networking resources: | ||
| - Virtual Network. For example, `brvnet`. | ||
| :::note | ||
| Only the Storage service endpoint associated with the functions and storage accounts is needed for the subnet. | ||
| ::: | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-vnet-creation.png')} alt="Virtual Network creation with storage service endpoint" style={{border: '1px solid gray'}} width="800" /> | ||
| - Subnet. For example, `brsubnet`. | ||
| - Network Security Group (NSG). For example, `brnsg`. | ||
| :::note | ||
| NSG rules remain as default; no changes required. | ||
| ::: | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-NSG-rules.png')} alt="NSG rules configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| 3. Enable the Virtual Network integration on each function app by navigating to **Function App** > **Networking** > **Outbound Traffic Configuration**. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-task-consumer-with-vnet-integration-outbound.png')} alt="TaskConsumer VNet integration outbound configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-vnet-in-task-consumer.png')} alt="VNet integration in TaskConsumer" style={{border: '1px solid gray'}} width="800" /> | ||
| 4. Follow the steps below to restrict access to the Storage Account storing NSG flow logs, so that only certain networks can access it: | ||
| 1. Navigate to **Storage Account** > **Networking** > **Firewalls and virtual networks**. | ||
| 2. Choose the selected networks. | ||
| 3. Select the same subnet that was configured for **SUMOBRTaskConsumer** and **SUMOBRDLQProcessor** during Virtual Networ integration. | ||
| :::note | ||
| No IP address whitelisting is needed. | ||
| ::: | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-sa-flow-logs-networking.png')} alt="Storage account flow logs networking configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| 5. Follow the steps below to restrict access to the ARM-created storage account, so that only certain networks can access it: | ||
| 1. Navigate to **Storage Account** > **Networking**. | ||
| 2. Choose the selected networks and allow access from your subnet. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-arm-template-sa-networking.png')} alt="ARM template storage account networking configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| 6. Configure the inbound restrictions on all three Azure Functions: | ||
| 1. Navigate to **Function App** > **Networking** > **Inbound Traffic Configuration** > **Access Restrictions**. | ||
| 2. Allow only the subnet you created in Step 2. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-task-consumer-with-vnet-integration-inbound.png')} alt="TaskConsumer VNet integration inbound configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| 7. For each function app, enable the function access to the Storage Account created by the ARM template by following the steps below: | ||
| 1. Navigate to **Function App** > **Networking** > **VNet Integration** > **Configuration Routing**. | ||
| 2. Select **Content storage**. | ||
| 3. Select **Outbound internet traffic** under **Application routing**. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-function-networking-config.png')} alt="Function networking configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| 4. Set `WEBSITE_CONTENTOVERVNET` to `1` in environment variables for each function. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-setting-env-variable-function.png')} alt="Setting environment variable in function" style={{border: '1px solid gray'}} width="800" /> | ||
| 8. Restrict access to **Service Bus** and **Event Hub** by following the steps below, so that only certain networks can access them: | ||
| 1. Navigate to **Service** > **Networking**. | ||
| 2. Set access to **Selected networks**, and select the previously created subnet in step 1. | ||
| 3. Set **Allow trusted Microsoft services to bypass this firewall** to **Yes**. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-event-hub-networking.png')} alt="Event Hub networking configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| 9. Secure the Event Grid with managed identity to allow Event Grid to publish to Event Hub: | ||
| 1. Enable **System assigned** identity on the Event Grid Topic. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-system-assigned-identity-topic.png')} alt="System-assigned identity for topic" style={{border: '1px solid gray'}} width="800" /> | ||
| 2. Assign the identity to the Azure Event Hubs Data Sender role on the Event Hub namespace under **Access Control (IAM)** > **Role Assignments**. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-event-hub-namespace-add-identity.png')} alt="Adding identity to Event Hub namespace" style={{border: '1px solid gray'}} width="800" /> | ||
| 3. Configure the Event Grid subscription that uses an **Event Hub** as an endpoint and choose **System Assigned** identity for authentication. | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-event-hub-subscription-identity.png')} alt="Event Hub subscription identity configuration" style={{border: '1px solid gray'}} width="800" /> | ||
| 10. Ensure your Virtual Network has service endpoints enabled for: | ||
| - Storage | ||
| - Service Bus | ||
| - Event Hub | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-service-endpoint-enabling-vnet.png')} alt="Enabling service endpoints in VNet" style={{border: '1px solid gray'}} width="800" /> | ||
| 11. To validate the function execution, navigate to **Function App** > **BlobTaskConsumer** > **Monitoring** > **Invocations**. | ||
| :::note | ||
| You should see the invocation logs if everything is correctly configured. | ||
| ::: | ||
| <img src={useBaseUrl('/img/send-data/blockblob/block-blob-validation.png')} alt="Block blob validation logs" style={{border: '1px solid gray'}} width="800" /> | ||
| 12. Replace the standard Service Bus with a premium tier. | ||
| :::note | ||
| The Service Bus provisioned via the current ARM template is configured with the standard tier, which does not support Virtual Network integration. To enable Virtual Network integration, it is recommended to create a new Service Bus with the premium tier. | ||
| ::: | ||
| Follow the steps below to create a new Service Bus on the premium tier: | ||
| 1. Create a new premium Service Bus namespace: | ||
| 1. Use the same resource group and location as the old Service Bus. | ||
| 2. Enable partitioning. | ||
| 3. Initially allow public access (can restrict later). | ||
| 2. Create a new queue named `blobrangetaskqueue` with the following parameters: | ||
| 1. Maximum queue size: 40 GB | ||
| 2. Maximum message size: 1024 KB | ||
| 3. Maximum delivery count: 3 | ||
| 4. Time to live: 14 days | ||
| 5. Message lock duration: 5 minutes | ||
| 6. Enable the dead letter queue. | ||
| 3. Update the connection strings in all three functions (Producer, Consumer, DLQ): | ||
| Under **Shared access policies**, select the [RootManageSharedAccessKey](https://portal.azure.com/#) and copy the primary key from the newly created Service Bus on the premium tier as the value of `shared_access_key_value`: | ||
| `Endpoint=sb://<servicebus_namespace_name>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<shared_access_key_value>` | ||
| 4. Restrict Public Access: | ||
| 1. Navigate to **Service Bus** > **Networking**. | ||
| 2. Set **Public** network access to **Selected** networks. | ||
| 3. Choose the subnet created earlier. | ||
|
|
||
| ### References | ||
|
|
||
| - [https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-service-endpoints](https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-service-endpoints) | ||
| - [https://learn.microsoft.com/en-us/azure/azure-functions/configure-networking-how-to?tabs=portal\#3-enable-application-and-configuration-routing](https://learn.microsoft.com/en-us/azure/azure-functions/configure-networking-how-to?tabs=portal#3-enable-application-and-configuration-routing) | ||
| - [https://learn.microsoft.com/en-us/azure/app-service/configure-vnet-integration-routing\#content-share](https://learn.microsoft.com/en-us/azure/app-service/configure-vnet-integration-routing#content-share) | ||
| - [https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings\#website\_contentovervnet](https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#website_contentovervnet) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+88.1 KB
(310%)
static/img/send-data/AzureBlob_SelectEventHub-EventGrid.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+1.33 MB
static/img/send-data/blockblob/block-blob-arm-template-sa-networking.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+769 KB
static/img/send-data/blockblob/block-blob-event-hub-namespace-add-identity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+790 KB
static/img/send-data/blockblob/block-blob-event-hub-subscription-identity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+599 KB
static/img/send-data/blockblob/block-blob-function-networking-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+425 KB
static/img/send-data/blockblob/block-blob-service-endpoint-enabling-vnet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+577 KB
static/img/send-data/blockblob/block-blob-system-assigned-identity-topic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+152 KB
.../send-data/blockblob/block-blob-task-consumer-with-vnet-integration-inbound.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+342 KB
...send-data/blockblob/block-blob-task-consumer-with-vnet-integration-outbound.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+626 KB
static/img/send-data/blockblob/block-setting-env-variable-function.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.