~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to doc/source/devref/auth.rst

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-08-16 14:04:11 UTC
  • mto: This revision was merged to the branch mainline in revision 84.
  • Revision ID: package-import@ubuntu.com-20120816140411-0mr4n241wmk30t9l
Tags: upstream-2012.2~f3
Import upstream version 2012.2~f3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
..
2
 
      Copyright 2010-2011 United States Government as represented by the
3
 
      Administrator of the National Aeronautics and Space Administration.
4
 
      All Rights Reserved.
5
 
 
6
 
      Licensed under the Apache License, Version 2.0 (the "License"); you may
7
 
      not use this file except in compliance with the License. You may obtain
8
 
      a copy of the License at
9
 
 
10
 
          http://www.apache.org/licenses/LICENSE-2.0
11
 
 
12
 
      Unless required by applicable law or agreed to in writing, software
13
 
      distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
 
      WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
 
      License for the specific language governing permissions and limitations
16
 
      under the License.
17
 
 
18
 
.. _auth:
19
 
 
20
 
Authentication and Authorization
21
 
================================
22
 
 
23
 
The :mod:`nova.quota` Module
24
 
----------------------------
25
 
 
26
 
.. automodule:: nova.quota
27
 
    :noindex:
28
 
    :members:
29
 
    :undoc-members:
30
 
    :show-inheritance:
31
 
 
32
 
 
33
 
The :mod:`nova.auth.signer` Module
34
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35
 
 
36
 
.. automodule:: nova.auth.signer
37
 
    :noindex:
38
 
    :members:
39
 
    :undoc-members:
40
 
    :show-inheritance:
41
 
 
42
 
 
43
 
Auth Manager
44
 
------------
45
 
 
46
 
The :mod:`nova.auth.manager` Module
47
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48
 
 
49
 
.. automodule:: nova.auth.manager
50
 
    :noindex:
51
 
    :members:
52
 
    :undoc-members:
53
 
    :show-inheritance:
54
 
 
55
 
 
56
 
The :mod:`nova.auth.ldapdriver` Driver
57
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58
 
 
59
 
.. automodule:: nova.auth.ldapdriver
60
 
    :noindex:
61
 
    :members:
62
 
    :undoc-members:
63
 
    :show-inheritance:
64
 
 
65
 
The :mod:`nova.auth.dbdriver` Driver
66
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67
 
 
68
 
.. automodule:: nova.auth.dbdriver
69
 
    :noindex:
70
 
    :members:
71
 
    :undoc-members:
72
 
    :show-inheritance:
73
 
 
74
 
 
75
 
Tests
76
 
-----
77
 
 
78
 
 
79
 
The :mod:`auth_unittest` Module
80
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81
 
 
82
 
.. automodule:: nova.tests.auth_unittest
83
 
    :noindex:
84
 
    :members:
85
 
    :undoc-members:
86
 
    :show-inheritance:
87
 
 
88
 
 
89
 
The :mod:`access_unittest` Module
90
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91
 
 
92
 
.. automodule:: nova.tests.access_unittest
93
 
    :noindex:
94
 
    :members:
95
 
    :undoc-members:
96
 
    :show-inheritance:
97
 
 
98
 
 
99
 
The :mod:`quota_unittest` Module
100
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101
 
 
102
 
.. automodule:: nova.tests.quota_unittest
103
 
    :noindex:
104
 
    :members:
105
 
    :undoc-members:
106
 
    :show-inheritance:
107
 
 
108
 
 
109
 
Legacy Docs
110
 
-----------
111
 
 
112
 
Nova provides RBAC (Role-based access control) of the AWS-type APIs. We define the following roles:
113
 
 
114
 
Roles-Based Access Control of AWS-style APIs using SAML Assertions
115
 
“Achieving FIPS 199 Moderate certification of a hybrid cloud environment using CloudAudit and declarative C.I.A. classifications”
116
 
 
117
 
 
118
 
Introduction
119
 
------------
120
 
 
121
 
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.
122
 
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.
123
 
 
124
 
 
125
 
Relationship of US eAuth to RBAC
126
 
--------------------------------
127
 
 
128
 
Typical implementations of US eAuth authentication systems are structured as follows::
129
 
 
130
 
  [ MS Active Directory or other federated LDAP user store ]
131
 
        --> backends to…
132
 
  [ SUN Identity Manager or other SAML Policy Controller ]
133
 
        --> maps URLs to groups…
134
 
  [ Apache Policy Agent in front of eAuth-secured Web Application ]
135
 
 
136
 
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.
137
 
 
138
 
.. _auth_roles:
139
 
 
140
 
 
141
 
Roles
142
 
-----
143
 
 
144
 
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:
145
 
 
146
 
*       Base User
147
 
*       System Administrator/Developer (currently have the same permissions)
148
 
*       Network Administrator
149
 
*       Project Manager
150
 
*       Cloud Administrator/IT-Security (currently have the same permissions)
151
 
 
152
 
There is an additional, conceptual end-user that may or may not have API access:
153
 
 
154
 
*       (EXTERNAL) End-user / Third-party User
155
 
 
156
 
Basic operations are available to any :
157
 
 
158
 
*       Describe Instances
159
 
*       Describe Images
160
 
*       Describe Volumes
161
 
*       Describe Keypairs
162
 
*       Create Keypair
163
 
*       Delete Keypair
164
 
*       Create, Upload, Delete: Buckets and Keys (Object Store)
165
 
 
166
 
System Administrators/Developers/Project Manager:
167
 
 
168
 
*       Create, Attach, Delete Volume (Block Store)
169
 
*       Launch, Reboot, Terminate Instance
170
 
*       Register/Unregister Machine Image (project-wide)
171
 
*       Request / Review CloudAudit Scans
172
 
 
173
 
Project Manager:
174
 
 
175
 
*       Add and remove other users (currently no api)
176
 
*       Set roles (currently no api)
177
 
 
178
 
Network Administrator:
179
 
 
180
 
*       Change Machine Image properties (public / private)
181
 
*       Change Firewall Rules, define Security Groups
182
 
*       Allocate, Associate, Deassociate Public IP addresses
183
 
 
184
 
Cloud Administrator/IT-Security:
185
 
 
186
 
*       All permissions
187
 
 
188
 
 
189
 
Enhancements
190
 
------------
191
 
 
192
 
*       SAML Token passing
193
 
*       REST interfaces
194
 
*       SOAP interfaces
195
 
 
196
 
Wrapping the SAML token into the API calls.
197
 
Then store the UID (fetched via backchannel) into the instance metadata, providing end-to-end auditability of ownership and responsibility, without PII.
198
 
 
199
 
 
200
 
CloudAudit APIs
201
 
---------------
202
 
 
203
 
*       Request formats
204
 
*       Response formats
205
 
*       Stateless asynchronous queries
206
 
 
207
 
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.
208
 
RBAC of CloudAudit API calls is critical, since detailed system information is a system vulnerability.
209
 
 
210
 
 
211
 
Type declarations
212
 
-----------------
213
 
*       Data declarations – Volumes and Objects
214
 
*       System declarations – Instances
215
 
 
216
 
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::
217
 
 
218
 
  RunInstances type=m1.large number=1 secgroup=default key=mykey confidentiality=low integrity=low availability=low
219
 
 
220
 
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.)
221
 
 
222
 
 
223
 
Request Brokering
224
 
-----------------
225
 
 
226
 
*       Cloud Interop
227
 
*       IMF Registration / PubSub
228
 
*       Digital C&A
229
 
 
230
 
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.
231
 
 
232
 
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.
233
 
 
234
 
 
235
 
Dirty Cloud – Hybrid Data Centers
236
 
---------------------------------
237
 
 
238
 
*       CloudAudit bridge interfaces
239
 
*       Anything in the ARP table
240
 
 
241
 
A hybrid cloud environment provides dedicated, potentially co-located physical hardware with a network interconnect to the project or users’ cloud virtual network.
242
 
 
243
 
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.
244
 
 
245
 
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.
246
 
 
247
 
 
248
 
The Details
249
 
-----------
250
 
 
251
 
*       Preliminary Roles Definitions
252
 
*       Categorization of available API calls
253
 
*       SAML assertion vocabulary
254
 
 
255
 
 
256
 
System limits
257
 
-------------
258
 
 
259
 
The following limits need to be defined and enforced:
260
 
 
261
 
*       Total number of instances allowed (user / project)
262
 
*       Total number of instances, per instance type (user / project)
263
 
*       Total number of volumes (user / project)
264
 
*       Maximum size of volume
265
 
*       Cumulative size of all volumes
266
 
*       Total use of object storage (GB)
267
 
*       Total number of Public IPs
268
 
 
269
 
 
270
 
Further Challenges
271
 
------------------
272
 
 
273
 
*       Prioritization of users / jobs in shared computing environments
274
 
*       Incident response planning
275
 
*       Limit launch of instances to specific security groups based on AMI
276
 
*       Store AMIs in LDAP for added property control