Skip to content

Commit d95b781

Browse files
authored
Merge pull request #100873 from MSEvanhi/patch-1
Azure Managed Applications - Bring your own storage support
2 parents 4ff4b1d + fda9206 commit d95b781

File tree

1 file changed

+103
-1
lines changed

1 file changed

+103
-1
lines changed

articles/azure-resource-manager/managed-applications/publish-service-catalog-app.md

Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ms.author: tomfitz
1313

1414
You can create and publish Azure [managed applications](overview.md) that are intended for members of your organization. For example, an IT department can publish managed applications that fulfill organizational standards. These managed applications are available through the service catalog, not the Azure marketplace.
1515

16-
To publish a managed application for the service catalog, you must:
16+
To publish a managed application to your Azure Service Catalog, you must:
1717

1818
* Create a template that defines the resources to deploy with the managed application.
1919
* Define the user interface elements for the portal when deploying the managed application.
@@ -203,6 +203,108 @@ New-AzManagedApplicationDefinition `
203203
-PackageFileUri $blob.ICloudBlob.StorageUri.PrimaryUri.AbsoluteUri
204204
```
205205

206+
## Bring your own storage for the managed application definition
207+
You can choose to store your managed application definition within a storage account provided by you during creation so that it's location and access can be fully managed by you for your regulatory needs.
208+
209+
> [!NOTE]
210+
> Bring your own storage is only supported with ARM Template or REST API deployments of the managed application definition.
211+
212+
### Select your storage account
213+
You must [create a storage account](../../storage/common/storage-account-create.md) to contain your managed application definition for use with Service Catalog.
214+
215+
Copy the storage account's resource ID. It will be used later when deploying the definition.
216+
217+
### Set the role assignment for "Appliance Resource Provider" in your storage account
218+
Before your managed application definition can be deployed to your storage account, you must give contributor permissions to the **Appliance Resource Provider** role so that it can write the definition files to your storage account's container.
219+
220+
1. In the [Azure portal](https://portal.azure.com), navigate to your storage account.
221+
1. Select **Access control (IAM)** to display the access control settings for the storage account. Select the **Role assignments** tab to see the list of role assignments.
222+
1. In the **Add role assignment** window, select the **Contributor** role.
223+
1. From the **Assign access to** field, select **Azure AD user, group, or service principal**.
224+
1. Under **Select** search for **Appliance Resource Provider** role and select it.
225+
1. Save the role assignment.
226+
227+
### Deploy the managed application definition with an ARM Template
228+
229+
Use the following ARM Template to deploy your packaged managed application as a new managed application definition in Service Catalog whose definition files are stored and maintained in your own storage account:
230+
231+
```json
232+
{
233+
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
234+
"contentVersion": "1.0.0.0",
235+
"parameters": {
236+
"location": {
237+
"type": "string",
238+
"defaultValue": "[resourceGroup().location]"
239+
},
240+
"applicationName": {
241+
"type": "string",
242+
"metadata": {
243+
"description": "Managed Application name"
244+
}
245+
},
246+
"storageAccountType": {
247+
"type": "string",
248+
"defaultValue": "Standard_LRS",
249+
"allowedValues": [
250+
"Standard_LRS",
251+
"Standard_GRS",
252+
"Standard_ZRS",
253+
"Premium_LRS"
254+
],
255+
"metadata": {
256+
"description": "Storage Account type"
257+
}
258+
},
259+
"definitionStorageResourceID": {
260+
"type": "string",
261+
"metadata": {
262+
"description": "Storage account resource ID for where you're storing your definition"
263+
}
264+
},
265+
"_artifactsLocation": {
266+
"type": "string",
267+
"metadata": {
268+
"description": "The base URI where artifacts required by this template are located."
269+
}
270+
}
271+
},
272+
"variables": {
273+
"lockLevel": "None",
274+
"description": "Sample Managed application definition",
275+
"displayName": "Sample Managed application definition",
276+
"managedApplicationDefinitionName": "[parameters('applicationName')]",
277+
"packageFileUri": "[parameters('_artifactsLocation')]",
278+
"defLocation": "[parameters('definitionStorageResourceID')]",
279+
"managedResourceGroupId": "[concat(subscription().id,'/resourceGroups/', concat(parameters('applicationName'),'_managed'))]",
280+
"applicationDefinitionResourceId": "[resourceId('Microsoft.Solutions/applicationDefinitions',variables('managedApplicationDefinitionName'))]"
281+
},
282+
"resources": [
283+
{
284+
"type": "Microsoft.Solutions/applicationDefinitions",
285+
"apiVersion": "2019-07-01",
286+
"name": "[variables('managedApplicationDefinitionName')]",
287+
"location": "[parameters('location')]",
288+
"properties": {
289+
"lockLevel": "[variables('lockLevel')]",
290+
"description": "[variables('description')]",
291+
"displayName": "[variables('displayName')]",
292+
"packageFileUri": "[variables('packageFileUri')]",
293+
"storageAccountId": "[variables('defLocation')]"
294+
}
295+
}
296+
],
297+
"outputs": {}
298+
}
299+
```
300+
301+
We have added a new property named **storageAccountId** to your applicationDefintion's properties and provide storage account id you wish to store your definition in as its value:
302+
303+
You can verify that the application definition files are saved in your provided storage account in a container titled **applicationdefinitions**.
304+
305+
> [!NOTE]
306+
> For added security, you can create a managed applications definition store it in an [Azure storage account blob where encryption is enabled](../../storage/common/storage-service-encryption.md). The definition contents are encrypted through the storage account's encryption options. Only users with permissions to the file can see the definition in Service Catalog.
307+
206308
### Make sure users can see your definition
207309

208310
You have access to the managed application definition, but you want to make sure other users in your organization can access it. Grant them at least the Reader role on the definition. They may have inherited this level of access from the subscription or resource group. To check who has access to the definition and add users or groups, see [Use Role-Based Access Control to manage access to your Azure subscription resources](../../role-based-access-control/role-assignments-portal.md).

0 commit comments

Comments
 (0)