Configure Windows Azure storage provider
Windows Azure Storage is one of the features of the Microsoft Windows Azure cloud platform. A single Windows Azure subscription may be used to manage multiple storage accounts, the cost for each of which is accumulated to the subscription billing. For more information, see Windows Azure Storage.
Windows Azure Storage is an external BLOB (Binary Large Object) storage provider. Sitefinity’s built-in database and file system storage providers are referred to as internal blob storage providers, because, when you use them, the data is kept within the website deployment environment. External storage providers are the ones that keep the blob data in an external data storage infrastructure, for instance cloud storage providers, like Windows Azure Storage.
To browse and inspect the storage you can download and use Azure Storage Explorer.
To create an external storage provider for your Sitefinity CMS libraries, perform the following:
-
In the main menu, click Administration » Settings.
The Basic Settings page appears. -
Click Storage providers for Libraries.
-
To create a new storage provider, click Add storage provider button.
The Add a provider window appears. -
Enter a name for the provider.
-
In Provider type dropdown, select Windows Azure.
-
In Account name, enter you Windows Azure storage account name.
For more information, see http://www.windowsazure.com/en-us/manage/services/storage/. -
Enter your Account key or shared access signature (SAS).
We recommend managing security at container level. A container may be public or private. The content of public containers is publicly visible. The content of private containers is accessible only by either authenticating with an account key or by shared access signature (SAS).
SAS is a string token (having the format of URL query parameters), which is valid only for a limited period of time and gives access to a single container. -
Enter a name for the container that will contain the blobs.
The blob storage is structured as a flat list of containers, each of which is a flat list of blobs. To mimic nested structures, the name of the blob may contain back slashes. An example of a publicly visible URL of a blob can be http://accountname.blob.core.windows.net/containername/blob/name.jpg.
Sitefinity CMS will use the name that you enter, to create a container with general properties that will be used to store the blobs. If you want to use a specific, existing container, you must enter its name. -
Enter a Public host.
You can use the Public host setting to override the host and port part of the public library item URLs.
Use this setting in the following cases:
-
You want to specify a different, custom DNS name for the same site that will be used for the frontend only and will replace the default Azure host.
-
You want to change the protocol.
The Use SSL for storage management setting affects only the way Sitefinity CMS is connecting to the cloud storage. The frontend URLs always use the HTTP scheme. To change this, you can specify a Public host that matches the account name but uses the HTTPS scheme, for example, https://example.blob.core.windows.net/. -
You want to use Windows Azure CDN. Because Windows Azure CDN reflects the URL structure of the storage account, by specifying the host name of a CDN endpoint (like az12345.vo.msecnd.net) as Public host, you will make Sitefinity CMS generate frontend URLs that direct the media content downloads to go through the Microsoft CDN.
-
Select Use SSL for storage management checkbox, if you want to specify that Sitefinity CMS will communicate with the storage service using the HTTPS protocol (HTTP over SSL/TLS).
This setting affects only the management communication - upload, delete, property setting, and other operations done by Sitefinity’s library provider to manage the blob storage. The public URLs that Sitefinity CMS will generate in frontend pages and controls defaults to HTTP, regardless of this setting. -
To use the local development storage provided by the Windows Azure Storage Emulator part of the Windows Azure SDK for .NET select the Use local development storage checkbox.
In this mode, the only required setting is the container name. -
The Sample blob URL field shows how the URL of a blob, stored with the current settings, would look like.
-
When finished with all the settings, click Test settings button.
It tests the settings by a real attempt to connect, create the container, upload, and delete a small blob. -
Click Done.
The storage provider is created and appears in the list of providers.
External blob storage considerations
When you use external blob storage, have in mind the following:
-
Time consumption
Moving library items between libraries that use external blob storage providers may be a long operation. For instance, moving from a library using a file system provider to a library using Windows Azure storage provider, requires uploading the data to the cloud. Similarly, moving from one Windows Azure library to another may require transferring the data from one cloud storage server to another. Renaming a blob on Windows Azure actually causes the creation of a new one and the deletion of the old one. -
Costs
Have in mind that many of the operations with the cloud storage cost money. Storage, traffic, and transactions are charged, so plan carefully and try to reduce the operations to the minimum. -
Failure of infrastructure
One of the main benefits of the cloud services is their scalability, but in the cloud, hardware, network, and software do fail or are too busy at times. To recover its operations, a cloud infrastructure uses a retry policy.
RESTRICTIONS: When creating a Windows Azure storage provider have in mind the following restrictions:
- Security
Secured access is not supported by Sitefinity’s Windows Azure blob storage provider. All containers and blobs that it creates are public. Sitefinity’s view permissions are only applied to determine the visibility of links and thumbnails in the frontend widgets, but any of the blobs can be downloaded from Windows Azure servers using its public URL. The generation and usage of a shared access signature (SAS) for the frontend pages of Sitefinity CMS is not implemented.
NOTE: SAS can be used instead of an account key in the basic settings, but this is to protect the account key itself and not the blob data. The SAS key is used when uploading, deleting and relocating blob and not for the public access.
-
Different Draft and Live items
When a library item is already published and a different media file is uploaded as a draft, Sitefinity CMS will manage two distinct blobs for the same item. You must take note of this when planning storage costs.