Hi - let me try to answer your questions here, though a little out of order.
1) Yes, absolutely, blob storage can handle this, in a couple different ways.
3) HTTPS: this is included automatically as part of your account. You access your account at
.blob.core.windows.net">https://<accountname>.blob.core.windows.net. If you use table storage, you just use "table.core.windows.net" instead of "blob.core.windows.net". Same for queue storage (queue.core.windows.net). No configuration
is necessary to use https!
2) Ok, here's where it gets more interesting. First: don't create a storage account for each of your employees. A storage account is built to scale massively, so there's no reason to break it down into one storage account per employee.
For grouping, let me suggest you do something like this:
- Highest level: account. You have one of these.
- Second level: containers. You have one of these for every employee. Sally has one, John has one, Sue has one, etc)
- Third level: blob directory. This is a virtual construct in blob storage, contained within a container - think of it as sub-folders. It supports listing, just like a container. You would use this to group within an employee's
account, so you might have one for HR, one for Meetings, one for Misc, etc.
- Fourth level: blobs. these are the actual files!
So that settles organization, but the next question is access control. You have a few options:
1) Web Application Proxy. As Arwind said, one option is to create a "proxy" web application. This application will be the way all user data is accessed, and it will be responsible for the following:
- Authenticating the user. You can use ACS (Windows Azure Identity service) or any other authentication mechanism you'd like. If you want to (this is common), you can store user information in Azure Table Storage as well, like Arwind suggests.
- Authorizing the user. Similar - once you know who the user is, you'll need to decide what they can access. Table storage is also a great place for this data.
- Serving the data. The web application will have to allow the user to download/upload their files. Because this application will have the Shared Key associated with the account, it can perform actions on all blobs/containers/tables. The
drawback to this approach is that it requires all of the data to go through the application, putting a lot more load on that application, meaning you may have to scale it more.
2) Same as the above, except in this one, the data access is not done through the application. Instead, the web application distributes Shared Access Signatures after Authentication/Authorization. For example, if the user wants to download
the file, the application would send a Shared Access Signature URL to the user, then the user's client application would issue a download request for that file. This works really well if you have a rich client application, but can also work if you have
a browser-based application, and these requests can be made over https as well. The big gain here is that the files no longer have to go through your web application - instead, only authentication, authorization, and Signature distribution is the job
of the application. We've just announced Shared Access Signatures for Tables and Queues as well, and there's some good samples for those (and general Shared Access Signatures) here:
http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-table-sas-shared-access-signature-queue-sas-and-update-to-blob-sas.aspx.
Hope that all helps - the organization part is pretty straight forward, and you have multiple options for securing and providing access for the data. Let me know if you have any clarification questions on this. Thanks!
-Jeff