That's not too far off from what we do. Each DuraCloud account is associated with its own S3 account (and Rackspace, SDSC, or Glacier account as needed). DuraCloud then sits on top of that set of accounts. Users self register using the Mangement Console, then are assigned to an account via an administrator (also in the Management Console). Admins are then able to assign permissions to give users and/or groups read or write access to spaces (we use "space" as a generic term for OpenStack "containers", S3 "buckets", etc).
We don't currently provide a way for users to request permission for specific spaces (containers). We only allow users to see the spaces in the list which the have permission to view, so you would need to provide a way to give users that full listing if you want them to be able to choose from the full list of spaces. Again, this wouldn't be hard to do via the REST API, as you could use an administrator account to request the spaces listing. I should note that there is also a Java client (called storeclient in the codebase) which provides full access to the API through Java. We do have a notion of "space properties" which can be set on any space and displayed via the UI. This is a bit restricted (not available through the REST API, but could easily be set via a StorageProvider implementation) because these properties are very limited in S3, but that is not an issue with OpenStack. That could allow you to present the different service level characteristics to users for selection.
Bill