Common Auth Middleware.
Bases: cinder.wsgi.common.Middleware
Make a request context from keystone headers.
Bases: cinder.wsgi.common.Middleware
Add a ‘cinder.context’ to WSGI environ.
Bases: cinder.wsgi.common.Middleware
Return a fake token if one isn’t specified.
A paste pipeline replica that keys off of auth_strategy.
Quotas for volumes.
Bases: cinder.quota.BaseResource
Describe a non-reservable resource.
Bases: object
Describe a single resource for quota checking.
Return the default value of the quota.
Given a driver and context, obtain the quota for this resource.
Parameters: |
|
---|
Bases: cinder.quota.QuotaEngine
Represent the consistencygroup quotas.
Fetches all possible quota resources.
Bases: cinder.quota.AbsoluteResource
Describe a resource where counts aren’t based only on the project ID.
Bases: object
Driver to perform check to enforcement of quotas.
Also allows to obtain quota information. The default driver utilizes the local database.
Commit reservations.
Parameters: |
|
---|
Destroy all limit quotas associated with a project.
Leave usage and reservation quotas intact.
Parameters: |
|
---|
Expire reservations.
Explores all currently existing reservations and rolls back any that have expired.
Parameters: | context – The request context, for access checks. |
---|
Get a specific quota by quota class.
Get a specific quota by project.
Given list of resources, retrieve the quotas for given quota class.
Parameters: |
|
---|
Get a specific default quota for a resource.
Given a list of resources, retrieve the default quotas.
Use the class quotas named _DEFAULT_QUOTA_NAME as default quotas, if it exists.
Parameters: |
|
---|
Retrieve quotas for a project.
Given a list of resources, retrieve the quotas for the given project.
Parameters: |
|
---|
Check simple quota limits.
For limits–those quotas for which there is no usage synchronization function–this method checks that a set of proposed values are permitted by the limit restriction.
This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it is not a simple limit resource.
If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns nothing.
Parameters: |
|
---|
Check quotas and reserve resources.
For counting quotas–those quotas for which there is a usage synchronization function–this method checks quotas against current usage and the desired deltas.
This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it does not have a usage synchronization function.
If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns a list of reservation UUIDs which were created.
Parameters: |
|
---|
Roll back reservations.
Parameters: |
|
---|
Bases: cinder.quota.QuotaEngine
Represent the group quotas.
Fetches all possible quota resources.
Bases: cinder.quota.DbQuotaDriver
Get a specific default quota for a resource.
Ensures project_tree has quotas that make sense as nested quotas.
Bases: object
Represent the set of recognized quotas.
Add volume type resource options.
Adds elements to the opts hash for volume type quotas. If a resource is being reserved (‘gigabytes’, etc) and the volume type is set up for its own quotas, these reservations are copied into keys for ‘gigabytes_<volume type name>’, etc.
Parameters: |
|
---|
Commit reservations.
Parameters: |
|
---|
Count a resource.
For countable resources, invokes the count() function and returns its result. Arguments following the context and resource are passed directly to the count function declared by the resource.
Parameters: |
|
---|
Destroy all quota limits associated with a project.
Parameters: |
|
---|
Expire reservations.
Explores all currently existing reservations and rolls back any that have expired.
Parameters: | context – The request context, for access checks. |
---|
Get a specific quota by quota class.
Get a specific quota by project.
Get specific quota by project or default quota if doesn’t exists.
Retrieve the quotas for the given quota class.
Parameters: |
|
---|
Get a specific default quota for a resource.
Parameters: | parent_project_id – The id of the current project’s parent, if any. |
---|
Retrieve the default quotas.
Parameters: |
|
---|
Retrieve the quotas for the given project.
Parameters: |
|
---|
Check simple quota limits.
For limits–those quotas for which there is no usage synchronization function–this method checks that a set of proposed values are permitted by the limit restriction. The values to check are given as keyword arguments, where the key identifies the specific quota limit to check, and the value is the proposed value.
This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it is not a simple limit resource.
If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns nothing.
Parameters: |
|
---|
Register a resource.
Register a list of resources.
Check quotas and reserve resources.
For counting quotas–those quotas for which there is a usage synchronization function–this method checks quotas against current usage and the desired deltas. The deltas are given as keyword arguments, and current usage and other reservations are factored into the quota check.
This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it does not have a usage synchronization function.
If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns a list of reservation UUIDs which were created.
Parameters: |
|
---|
Roll back reservations.
Parameters: |
|
---|
Returns true if nested quotas are being used
Bases: cinder.quota.BaseResource
Describe a reservable resource.
Bases: cinder.quota.QuotaEngine
Represent the set of all quotas.
Fetches all possible quota resources.
Update resource in quota.
This is to update resource in quotas, quota_classes, and quota_usages once the name of a volume type is changed.
Parameters: |
|
---|
Bases: cinder.quota.ReservableResource
ReservableResource for a specific volume type.
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: cinder.tests.unit.test_quota.DbQuotaDriverBaseTestCase
Bases: object
Bases: object
Bases: object
Bases: cinder.db.sqlalchemy.models.QuotaUsage
Bases: cinder.tests.unit.test_quota.DbQuotaDriverBaseTestCase
Bases: cinder.tests.unit.test_quota.NestedDbQuotaDriverBaseTestCase
Bases: cinder.tests.unit.test_quota.NestedDbQuotaDriverBaseTestCase
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: cinder.test.TestCase
Bases: object
Cinder provides RBAC (Role-based access control) of the AWS-type APIs. We define the following roles:
Roles-Based Access Control of AWS-style APIs using SAML Assertions “Achieving FIPS 199 Moderate certification of a hybrid cloud environment using CloudAudit and declarative C.I.A. classifications”
We will investigate one method for integrating an AWS-style API with US eAuthentication-compatible federated authentication systems, to achieve access controls and limits based on traditional operational roles. Additionally, we will look at how combining this approach, with an implementation of the CloudAudit APIs, will allow us to achieve a certification under FIPS 199 Moderate classification for a hybrid cloud environment.
Typical implementations of US eAuth authentication systems are structured as follows:
[ MS Active Directory or other federated LDAP user store ]
--> backends to…
[ SUN Identity Manager or other SAML Policy Controller ]
--> maps URLs to groups…
[ Apache Policy Agent in front of eAuth-secured Web Application ]
In more ideal implementations, the remainder of the application-specific account information is stored either in extended schema on the LDAP server itself, via the use of a translucent LDAP proxy, or in an independent datastore keyed off of the UID provided via SAML assertion.
AWS API calls are traditionally secured via Access and Secret Keys, which are used to sign API calls, along with traditional timestamps to prevent replay attacks. The APIs can be logically grouped into sets that align with five typical roles:
There is an additional, conceptual end-user that may or may not have API access:
Basic operations are available to any :
System Administrators/Developers/Project Manager:
Project Manager:
Network Administrator:
Cloud Administrator/IT-Security:
Wrapping the SAML token into the API calls. Then store the UID (fetched via backchannel) into the instance metadata, providing end-to-end auditability of ownership and responsibility, without PII.
CloudAudit queries may spawn long-running processes (similar to launching instances, etc.) They need to return a ReservationId in the same fashion, which can be returned in further queries for updates. RBAC of CloudAudit API calls is critical, since detailed system information is a system vulnerability.
Existing API calls to launch instances specific a single, combined “type” flag. We propose to extend this with three additional type declarations, mapping to the “Confidentiality, Integrity, Availability” classifications of FIPS 199. An example API call would look like:
RunInstances type=m1.large number=1 secgroup=default key=mykey confidentiality=low integrity=low availability=low
These additional parameters would also apply to creation of block storage volumes (along with the existing parameter of ‘size’), and creation of object storage ‘buckets’. (C.I.A. classifications on a bucket would be inherited by the keys within this bucket.)
Establishing declarative semantics for individual API calls will allow the cloud environment to seamlessly proxy these API calls to external, third-party vendors – when the requested CIA levels match.
See related work within the Infrastructure 2.0 working group for more information on how the IMF Metadata specification could be utilized to manage registration of these vendors and their C&A credentials.
A hybrid cloud environment provides dedicated, potentially co-located physical hardware with a network interconnect to the project or users’ cloud virtual network.
This interconnect is typically a bridged VPN connection. Any machines that can be bridged into a hybrid environment in this fashion (at Layer 2) must implement a minimum version of the CloudAudit spec, such that they can be queried to provide a complete picture of the IT-sec runtime environment.
Network discovery protocols (ARP, CDP) can be applied in this case, and existing protocols (SNMP location data, DNS LOC records) overloaded to provide CloudAudit information.
The following limits need to be defined and enforced: