Add GoogleDrive User Stories
Copied user stories from GoogleDocs format into user-story-template.rst format and submitting to repo for tracking. Change-Id: If4f6406594cba63bca8a3431b9d34ffff44a5f3c
This commit is contained in:
		
							
								
								
									
										98
									
								
								user-stories/draft/encryptedstorage.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								user-stories/draft/encryptedstorage.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
Encrypted Storage
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
*Problem description*
 | 
			
		||||
---------------------
 | 
			
		||||
Each enterprise has its own data classification strategy. The types of data
 | 
			
		||||
include: financial data, personal data, health data, confidential business
 | 
			
		||||
data, etc. Some enterprise (especially in banking, finance and insurance
 | 
			
		||||
industry) has stringent data requirements in order to be compliant with laws
 | 
			
		||||
and regulations. For example, PCI DSS Requirement 3.4 states that credit card
 | 
			
		||||
personal account number must be rendered unreadable anywhere it is stored
 | 
			
		||||
(including portable digital media, backup media and logs). Applications
 | 
			
		||||
(including database) that interact with these classes of information need to be
 | 
			
		||||
able to specify encrypted storage requirements when the application is launched
 | 
			
		||||
and interacts with some of these classes. The data must be encrypted in motion
 | 
			
		||||
as well as at rest. The application should not require admin privileges to
 | 
			
		||||
access encrypted storage.
 | 
			
		||||
 
 | 
			
		||||
In addition, proper key management process need to be in place. The keys used
 | 
			
		||||
to encrypt/decrypt the data must be changed on a regular basis and the access
 | 
			
		||||
of keys are restricted to authorized personnel only.
 | 
			
		||||
 | 
			
		||||
User Stories
 | 
			
		||||
------------
 | 
			
		||||
* As the Enterprise IT Manager, I must ensure the appropriate security for the HR
 | 
			
		||||
department database with employee records that services several department
 | 
			
		||||
applications. I would like to move the database into our companies private cloud
 | 
			
		||||
so I don’t need to maintain the system it currently lives on. However, because of
 | 
			
		||||
the critical nature of the information in the database our company policy does
 | 
			
		||||
not allow this information to reside on any shared system in an unencrypted
 | 
			
		||||
state. To be able to move the database into the private cloud I need to ensure
 | 
			
		||||
that the stored data and all data in transit from/to the VM will be encrypted.
 | 
			
		||||
While the HR Department would love to have improved uptime for their database,
 | 
			
		||||
they are used to having to manually restart/reboot as needed and can live with
 | 
			
		||||
this in the cloud as well.
 | 
			
		||||
 | 
			
		||||
* I am the Enterprise IT manager for an insurance company. My company maintains a
 | 
			
		||||
database with insurer’s credit card records for annual renewal purpose. Our
 | 
			
		||||
company would like to move the database into our OpenStack private cloud. In
 | 
			
		||||
order to comply with company security policy, government laws and financial
 | 
			
		||||
regulations, I need to ensure that information stored in the private cloud
 | 
			
		||||
(including backup) is encrypted, and the keys used to encrypt the data are
 | 
			
		||||
rotated/changed annually.
 | 
			
		||||
 | 
			
		||||
Usage Scenarios Examples
 | 
			
		||||
------------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
Opportunity/Justification
 | 
			
		||||
-------------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
Related User Stories
 | 
			
		||||
--------------------
 | 
			
		||||
* An application needs to be able to specify networking requirements
 | 
			
		||||
* An application needs to be able to specify workload isolation requirements
 | 
			
		||||
 | 
			
		||||
*Requirements*
 | 
			
		||||
--------------
 | 
			
		||||
* A block & object storage option that includes encryption / decryption at the VM
 | 
			
		||||
source.
 | 
			
		||||
*  A method for the application to specify that it requires a block storage
 | 
			
		||||
system that includes encryption / decryption at the VM source.
 | 
			
		||||
* OpenStack services to enforce the storage requirements for the application
 | 
			
		||||
* A method for changing the key used to encrypt/decrypt the data after a specific
 | 
			
		||||
period of time.
 | 
			
		||||
*The database application needs to be able to specify that it needs an encrypted
 | 
			
		||||
storage system that supports encryption / decryption at the VM source, in
 | 
			
		||||
addition to at rest.
 | 
			
		||||
*The storage system must be able to handle both Reads/Writes of persistent
 | 
			
		||||
encrypted block storage in excess of 1TB device to be backed up nightly.
 | 
			
		||||
 | 
			
		||||
*Gaps*
 | 
			
		||||
------
 | 
			
		||||
**Cinder issues:**
 | 
			
		||||
* The basic storage encryption functionality looks like it may exist, but
 | 
			
		||||
requires admin status. Creating encrypted volumes should not require admin
 | 
			
		||||
status.
 | 
			
		||||
 | 
			
		||||
*Affected By*
 | 
			
		||||
-------------
 | 
			
		||||
At the Hong kong summit there was a talk on barbican/cinder/nova for this type of
 | 
			
		||||
functionality. Don’t know if it was successfully integrated into OpenStack yet.
 | 
			
		||||
https://www.openstack.org/summit/openstack-summit-hong-kong-2013/session-videos/p
 | 
			
		||||
resentation/encrypted-block-storage-technical-walkthrough
 | 
			
		||||
 | 
			
		||||
* There is a spec located at: https://wiki.openstack.org/wiki/VolumeEncryption
 | 
			
		||||
for some early work and the current documentation is located at:
 | 
			
		||||
http://docs.openstack.org/juno/config-reference/content/section_create-encrypted-
 | 
			
		||||
volume-type.html where it implies that admin privilege is required.
 | 
			
		||||
 | 
			
		||||
*External References*
 | 
			
		||||
---------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
Glossary
 | 
			
		||||
========
 | 
			
		||||
None.
 | 
			
		||||
							
								
								
									
										85
									
								
								user-stories/draft/rolebasedaccess.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								user-stories/draft/rolebasedaccess.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
Role Based Access
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
*Problem description*
 | 
			
		||||
---------------------
 | 
			
		||||
OpenStack doesn’t have a hierarchical permission structure that allows an
 | 
			
		||||
Operator to assign different permissions for different activities or access to
 | 
			
		||||
resources to different users.
 | 
			
		||||
 | 
			
		||||
User Stories
 | 
			
		||||
------------
 | 
			
		||||
*As a cloud operator I want to enable my team to be able to see all Admin level
 | 
			
		||||
alerts, but not to be able to change their status. That requires review and
 | 
			
		||||
approval by the IT manager.
 | 
			
		||||
 | 
			
		||||
Usage Scenarios Examples
 | 
			
		||||
------------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
Opportunity/Justification
 | 
			
		||||
-------------------------
 | 
			
		||||
Role Based Access is a basic Enterprise requirement. This capability enables
 | 
			
		||||
Enterprise IT Managers to set read and write permissions to different elements of
 | 
			
		||||
the IT infrastructure for different people/positions in the organization.
 | 
			
		||||
Enterprise security requires separate access UI/ API for Network, Security,
 | 
			
		||||
Storage management, User Management, and Instance management.
 | 
			
		||||
 | 
			
		||||
Related User Stories
 | 
			
		||||
--------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
*Requirements*
 | 
			
		||||
--------------
 | 
			
		||||
* Enterprise security requires separate access UI/ API for Network, Security,
 | 
			
		||||
Storage management, User Management, and Instance management.
 | 
			
		||||
* Includes grouping actions into roles, assign roles to users, create hierarchy
 | 
			
		||||
of roles, etc.
 | 
			
		||||
* OpenStack includes an enforcement piece of access control, but no management
 | 
			
		||||
piece.
 | 
			
		||||
* Very important that admin type roles need to be tested thoroughly because of
 | 
			
		||||
the code bleed-in where actions are exposed if  "is-admin".
 | 
			
		||||
* As we expand the roles need some tool that can report out on what access the
 | 
			
		||||
newly defined role has - want to make sure you don’t inadvertently create a
 | 
			
		||||
superuser problem (newly created role inherit these rights)
 | 
			
		||||
 | 
			
		||||
*Gaps*
 | 
			
		||||
------
 | 
			
		||||
**Keystone**
 | 
			
		||||
* Need to add a new role.
 | 
			
		||||
* Modify code that makes checks such as context admin, is-admin.
 | 
			
		||||
**All Projects**
 | 
			
		||||
* Need to review code in other projects to find hardcoded reference to Admin and
 | 
			
		||||
replace them with Keystone references.
 | 
			
		||||
* Modify the policy.json file to use this new role. Add test cases to confirm
 | 
			
		||||
behavior is as expected. Code in all projects need to be searched for is-admin
 | 
			
		||||
type tests and code modified to ensure that admin-read-only is tested as
 | 
			
		||||
necessary.
 | 
			
		||||
* One approach: Expose the policy.json files of each of the projects via horizon
 | 
			
		||||
and allow it to be modified.
 | 
			
		||||
* May need a bug to fix such as: is-admin evaluations to use only roles in the
 | 
			
		||||
code,  towards making policy.json the true controller.
 | 
			
		||||
**Horizon**
 | 
			
		||||
*To expose policy.json via Horizon will need to be allowed to only cloud-admins,
 | 
			
		||||
and any change checked for syntactic correctness at the least.
 | 
			
		||||
* Further Horizon today is "pulling" the policy files to determine which
 | 
			
		||||
buttons/links exposed to users to guide them down the correct path.
 | 
			
		||||
 | 
			
		||||
*Affected By*
 | 
			
		||||
-------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
*External References*
 | 
			
		||||
---------------------
 | 
			
		||||
From looking at other solutions, generally there are 3 immutable system roles:
 | 
			
		||||
administrator, read-only, no-access. With support for specifying roles on objects
 | 
			
		||||
and their hierarchy. There is a notion of "folder", data center, host, VMs on a
 | 
			
		||||
host, disk etc. Some actions are sort of atomic -- create a disk. While others
 | 
			
		||||
encompass multiple steps, needing a variety of privileges. Thus the role that
 | 
			
		||||
permits the complex action must contain the full set of necessary privileges. For
 | 
			
		||||
example launching a VM needs access to the datastore, OS images files, disks,
 | 
			
		||||
ability to create them and/or read an existing one etc.
 | 
			
		||||
 | 
			
		||||
Glossary
 | 
			
		||||
========
 | 
			
		||||
None.
 | 
			
		||||
							
								
								
									
										71
									
								
								user-stories/draft/serviceseparation.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								user-stories/draft/serviceseparation.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
OpenStack Service Separation
 | 
			
		||||
============================
 | 
			
		||||
 | 
			
		||||
*Problem description*
 | 
			
		||||
---------------------
 | 
			
		||||
We need separation between services to mitigate for library conflicts. This way 
 | 
			
		||||
instead of doing "openstack upgrade" we can do "nova upgrade" today, "neutron 
 | 
			
		||||
upgrade" tomorrow and on, and that approach simplifies things tremendously, 
 | 
			
		||||
because potential fallback is both easy and fast, and impact is much lower.
 | 
			
		||||
 | 
			
		||||
Biggest problems in upgradeable deployments are dependencies and speed of 
 | 
			
		||||
upgrade. Dependencies means, in case of shared libraries, several services might 
 | 
			
		||||
require same library, but often at different versions between major openstack 
 | 
			
		||||
releases. This will cause conflicts, and require us to do “all or nothing” 
 | 
			
		||||
upgrade. Sometimes we would like to use several maintenance windows to upgrade 
 | 
			
		||||
our deployment one service at the time. Also, we want this maintenance windows to 
 | 
			
		||||
be as short as possible, hence speed of deployment changes.
 | 
			
		||||
 | 
			
		||||
User Stories
 | 
			
		||||
------------
 | 
			
		||||
* As an OpenStack Operator, I select services to upgrade based upon the new 
 | 
			
		||||
features that have been implemented and bugs fixed. This will lead to different 
 | 
			
		||||
versions of Services running together my deployment. Different Services will be 
 | 
			
		||||
using different versions of system and 3rd party libraries.
 | 
			
		||||
 | 
			
		||||
Usage Scenarios Examples
 | 
			
		||||
------------------------
 | 
			
		||||
* Containers are new way to deploy microservices. Ever heard of Docker? Who
 | 
			
		||||
didn’t? We want to utilize containers flexibility, speed of deployment, and most
 | 
			
		||||
importantly, separation of services. With each service having its own library
 | 
			
		||||
base, we don’t have conflicts, and we can upgrade just one service at the time
 | 
			
		||||
without disruption of others.
 | 
			
		||||
 
 | 
			
		||||
* Kolla is project which does exactly that – containerize your openstack
 | 
			
		||||
services. By using Kolla you can utilize flexible container to be configured in a
 | 
			
		||||
way you ran your services for years, or, for those who want to start openstack
 | 
			
		||||
adventure, quick and easy way to set up production ready upgradable openstack
 | 
			
		||||
using ansible.
 | 
			
		||||
 | 
			
		||||
Opportunity/Justification
 | 
			
		||||
-------------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
Related User Stories
 | 
			
		||||
--------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
*Requirements*
 | 
			
		||||
--------------
 | 
			
		||||
* Ability to upgrade 1 OpenStack service, without having to upgrade all OpenStack
 | 
			
		||||
services
 | 
			
		||||
* Maintain overall system reliability when only 1 Service is upgraded
 | 
			
		||||
* Minimal or no downtime during upgrade
 | 
			
		||||
 | 
			
		||||
*Gaps*
 | 
			
		||||
------
 | 
			
		||||
None currently known.
 | 
			
		||||
 | 
			
		||||
*Affected By*
 | 
			
		||||
-------------
 | 
			
		||||
Real value can be realized using TripleO to deploy Kolla-based OpenStack. With
 | 
			
		||||
TripleO’s  baremetal and config management, and Kolla containers, deploying large
 | 
			
		||||
scale, upgradable, production ready OpenStack becomes an achievable use case.
 | 
			
		||||
 | 
			
		||||
*External References*
 | 
			
		||||
---------------------
 | 
			
		||||
None.
 | 
			
		||||
 | 
			
		||||
Glossary
 | 
			
		||||
========
 | 
			
		||||
None.
 | 
			
		||||
		Reference in New Issue
	
	Block a user