diff --git a/Solutions/Snowflake/Data Connectors/Readme.md b/Solutions/Snowflake/Data Connectors/Readme.md index 0cd4df6dc8b..603c165eb8d 100644 --- a/Solutions/Snowflake/Data Connectors/Readme.md +++ b/Solutions/Snowflake/Data Connectors/Readme.md @@ -27,14 +27,28 @@ To enable permanent access via a Programmatic Access Token, configuring a **Netw -------------------------------------------------------------------------------------------------------------------- - Log in to your Snowflake account and navigate to a **SQL Worksheet**. -- Execute the following SQL statements to create and apply a permissive network policy: - ``` - CREATE OR REPLACE NETWORK POLICY allow_all_ips - ALLOWED_IP_LIST = ('0.0.0.0/0'); - ``` - ``` - ALTER ACCOUNT SET NETWORK_POLICY = allow_all_ips; - ``` +- Execute **only one** of the following configurations based on your specific scenario: + #### Scenario 1: No Existing IP Restrictions + - If there are no prior IP restrictions, create and apply a permissive network policy that allows access from all IP addresses: + ``` + CREATE OR REPLACE NETWORK POLICY allow_all_ips + ALLOWED_IP_LIST = ('0.0.0.0/0'); + ``` + ``` + ALTER ACCOUNT SET NETWORK_POLICY = allow_all_ips; + ``` + #### Scenario 2: Existing IP Restrictions + - If your account already has IP restrictions in place, you can create a more flexible policy that allows all IPs but explicitly blocks specific addresses: + ``` + CREATE OR REPLACE NETWORK POLICY allow_all_with_blocks + ALLOWED_IP_LIST = ('0.0.0.0/0') + BLOCKED_IP_LIST = ('', ''); + ``` + ``` + ALTER ACCOUNT SET NETWORK_POLICY = allow_all_with_blocks; + ``` + > **Note:** If you have multiple blocked IP addresses, provide all IP addresses separated by commas as shown in above query. + Once these commands are successfully executed, the network policy configuration is complete. ### Generate Programmatic Access Token -------------------------------------------------------------------------------------------- diff --git a/Solutions/Snowflake/Data Connectors/SnowflakeLogs_ccp/SnowflakeLogs_ConnectorDefinition.json b/Solutions/Snowflake/Data Connectors/SnowflakeLogs_ccp/SnowflakeLogs_ConnectorDefinition.json index 2c893d4acd1..3385871e3c3 100644 --- a/Solutions/Snowflake/Data Connectors/SnowflakeLogs_ccp/SnowflakeLogs_ConnectorDefinition.json +++ b/Solutions/Snowflake/Data Connectors/SnowflakeLogs_ccp/SnowflakeLogs_ConnectorDefinition.json @@ -202,7 +202,7 @@ { "type": "Markdown", "parameters": { - "content": "For detailed instructions on retrieving the Account Identifier and Programmatic Access Token, please refer to the [Connector Tutorial](https://github.com/v-pmalreddy/Snowflake/blob/main/README.md)." + "content": "For detailed instructions on retrieving the Account Identifier and Programmatic Access Token, please refer to the [Connector Tutorial](https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Snowflake/Data%20Connectors/Readme.md)." } }, { diff --git a/Solutions/Snowflake/Package/3.0.0.zip b/Solutions/Snowflake/Package/3.0.0.zip index 588bd65a827..4596443a0da 100644 Binary files a/Solutions/Snowflake/Package/3.0.0.zip and b/Solutions/Snowflake/Package/3.0.0.zip differ diff --git a/Solutions/Snowflake/Package/3.0.2.zip b/Solutions/Snowflake/Package/3.0.2.zip new file mode 100644 index 00000000000..58b81d3cdf9 Binary files /dev/null and b/Solutions/Snowflake/Package/3.0.2.zip differ diff --git a/Solutions/Snowflake/Package/createUiDefinition.json b/Solutions/Snowflake/Package/createUiDefinition.json index ccb5d616f72..ac9ecbfb871 100644 --- a/Solutions/Snowflake/Package/createUiDefinition.json +++ b/Solutions/Snowflake/Package/createUiDefinition.json @@ -63,6 +63,23 @@ "text": "This Solution installs the data connector for Snowflake. You can get Snowflake data in your Microsoft Sentinel workspace. After installing the solution, configure and enable this data connector by following guidance in Manage solution view." } }, + { + "name": "dataconnectors-link1", + "type": "Microsoft.Common.TextBlock", + "options": { + "link": { + "label": "Learn more about connecting data sources", + "uri": "https://docs.microsoft.com/azure/sentinel/connect-data-sources" + } + } + }, + { + "name": "dataconnectors2-text", + "type": "Microsoft.Common.TextBlock", + "options": { + "text": "This Solution installs the data connector for Snowflake. You can get Snowflake custom log data in your Microsoft Sentinel workspace. After installing the solution, configure and enable this data connector by following guidance in Manage solution view." + } + }, { "name": "dataconnectors-parser-text", "type": "Microsoft.Common.TextBlock", diff --git a/Solutions/Snowflake/Package/mainTemplate.json b/Solutions/Snowflake/Package/mainTemplate.json index 21bdfb9964e..18939d1de10 100644 --- a/Solutions/Snowflake/Package/mainTemplate.json +++ b/Solutions/Snowflake/Package/mainTemplate.json @@ -55,7 +55,7 @@ "email": "support@microsoft.com", "_email": "[variables('email')]", "_solutionName": "Snowflake", - "_solutionVersion": "3.0.1", + "_solutionVersion": "3.0.2", "solutionId": "azuresentinel.azure-sentinel-solution-snowflake", "_solutionId": "[variables('solutionId')]", "analyticRuleObject1": { @@ -220,7 +220,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeDiscoveryActivity_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeDiscoveryActivity_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject1').analyticRuleVersion1]", @@ -262,13 +262,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -324,7 +324,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeLongQueryProcessTime_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeLongQueryProcessTime_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject2').analyticRuleVersion2]", @@ -366,13 +366,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -428,7 +428,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeMultipleFailedQueries_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeMultipleFailedQueries_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject3').analyticRuleVersion3]", @@ -471,13 +471,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -533,7 +533,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeMultipleLoginFailure_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeMultipleLoginFailure_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject4').analyticRuleVersion4]", @@ -575,13 +575,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -637,7 +637,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeMultipleLoginFailureFromIP_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeMultipleLoginFailureFromIP_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject5').analyticRuleVersion5]", @@ -679,13 +679,13 @@ ], "entityMappings": [ { - "entityType": "IP", "fieldMappings": [ { - "columnName": "IPCustomEntity", - "identifier": "Address" + "identifier": "Address", + "columnName": "IPCustomEntity" } - ] + ], + "entityType": "IP" } ] } @@ -741,7 +741,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakePossibleDataDestruction_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakePossibleDataDestruction_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject6').analyticRuleVersion6]", @@ -783,13 +783,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -845,7 +845,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakePrivilegesDiscovery_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakePrivilegesDiscovery_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject7').analyticRuleVersion7]", @@ -887,13 +887,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -949,7 +949,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeQueryOnSensitiveTable_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeQueryOnSensitiveTable_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject8').analyticRuleVersion8]", @@ -991,13 +991,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -1053,7 +1053,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeUnusualQuery_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeUnusualQuery_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject9').analyticRuleVersion9]", @@ -1095,13 +1095,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -1157,7 +1157,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeUserAddAdminPrivileges_AnalyticalRules Analytics Rule with template version 3.0.1", + "description": "SnowflakeUserAddAdminPrivileges_AnalyticalRules Analytics Rule with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject10').analyticRuleVersion10]", @@ -1199,13 +1199,13 @@ ], "entityMappings": [ { - "entityType": "Account", "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } - ] + ], + "entityType": "Account" } ] } @@ -1474,7 +1474,7 @@ { "type": "Markdown", "parameters": { - "content": "For detailed instructions on retrieving the Account Identifier and Programmatic Access Token, please refer to the [Connector Tutorial](https://github.com/v-pmalreddy/Snowflake/blob/main/README.md)." + "content": "For detailed instructions on retrieving the Account Identifier and Programmatic Access Token, please refer to the [Connector Tutorial](https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Snowflake/Data%20Connectors/Readme.md)." } }, { @@ -2209,7 +2209,7 @@ { "type": "Markdown", "parameters": { - "content": "For detailed instructions on retrieving the Account Identifier and Programmatic Access Token, please refer to the [Connector Tutorial](https://github.com/v-pmalreddy/Snowflake/blob/main/README.md)." + "content": "For detailed instructions on retrieving the Account Identifier and Programmatic Access Token, please refer to the [Connector Tutorial](https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Snowflake/Data%20Connectors/Readme.md)." } }, { @@ -2918,7 +2918,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Snowflake data connector with template version 3.0.1", + "description": "Snowflake data connector with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('dataConnectorVersion2')]", @@ -3313,7 +3313,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeAdminSources_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeAdminSources_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject1').huntingQueryVersion1]", @@ -3398,7 +3398,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeDeletedDatabases_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeDeletedDatabases_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject2').huntingQueryVersion2]", @@ -3483,7 +3483,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeDeletedTables_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeDeletedTables_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject3').huntingQueryVersion3]", @@ -3568,7 +3568,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeDormantUser_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeDormantUser_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject4').huntingQueryVersion4]", @@ -3653,7 +3653,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeFailedLogins_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeFailedLogins_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject5').huntingQueryVersion5]", @@ -3738,7 +3738,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeHighCreditConsumingQueries_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeHighCreditConsumingQueries_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject6').huntingQueryVersion6]", @@ -3823,7 +3823,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeTimeConsumingQueries_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeTimeConsumingQueries_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject7').huntingQueryVersion7]", @@ -3908,7 +3908,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeUnknownQueryType_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeUnknownQueryType_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject8').huntingQueryVersion8]", @@ -3993,7 +3993,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeUnusedAdmins_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeUnusedAdmins_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject9').huntingQueryVersion9]", @@ -4078,7 +4078,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SnowflakeUserSources_HuntingQueries Hunting Query with template version 3.0.1", + "description": "SnowflakeUserSources_HuntingQueries Hunting Query with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('huntingQueryObject10').huntingQueryVersion10]", @@ -4163,7 +4163,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Snowflake Data Parser with template version 3.0.1", + "description": "Snowflake Data Parser with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('parserObject1').parserVersion1]", @@ -4295,7 +4295,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Snowflake Workbook with template version 3.0.1", + "description": "Snowflake Workbook with template version 3.0.2", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('workbookVersion1')]", @@ -4379,7 +4379,7 @@ "apiVersion": "2023-04-01-preview", "location": "[parameters('workspace-location')]", "properties": { - "version": "3.0.1", + "version": "3.0.2", "kind": "Solution", "contentSchemaVersion": "3.0.0", "displayName": "Snowflake",