~citrix-openstack/nova/xenapi

« back to all changes in this revision

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

  • Committer: Tarmac
  • Author(s): Todd Willey, root, Vishvananda Ishaya, Joe Heck, root, Andy Smith, Anne Gentle, Dean Troyer, Devin Carlen
  • Date: 2010-11-16 02:34:47 UTC
  • mfrom: (386.2.71 trunkdoc)
  • Revision ID: hudson@openstack.org-20101116023447-pz7n6ps5rf0fnjea
Lots of documentation and docstring updates.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
..
2
2
      Copyright 2010 United States Government as represented by the
3
 
      Administrator of the National Aeronautics and Space Administration. 
 
3
      Administrator of the National Aeronautics and Space Administration.
4
4
      All Rights Reserved.
5
5
 
6
6
      Licensed under the Apache License, Version 2.0 (the "License"); you may
15
15
      License for the specific language governing permissions and limitations
16
16
      under the License.
17
17
 
18
 
Auth Documentation
19
 
==================    
 
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
-----------
20
111
 
21
112
Nova provides RBAC (Role-based access control) of the AWS-type APIs. We define the following roles:
22
113
 
23
114
Roles-Based Access Control of AWS-style APIs using SAML Assertions
24
115
“Achieving FIPS 199 Moderate certification of a hybrid cloud environment using CloudAudit and declarative C.I.A. classifications”
25
116
 
 
117
 
26
118
Introduction
27
 
--------------
 
119
------------
28
120
 
29
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.
30
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.
31
123
 
 
124
 
32
125
Relationship of US eAuth to RBAC
33
126
--------------------------------
34
127
 
39
132
  [ SUN Identity Manager or other SAML Policy Controller ]
40
133
        --> maps URLs to groups…
41
134
  [ Apache Policy Agent in front of eAuth-secured Web Application ]
42
 
       
 
135
 
43
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.
44
137
 
45
 
Basic AWS API call structure
46
 
----------------------------
47
 
 
48
 
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:  
49
 
 
50
 
*       System User
51
 
*       System Administrator
 
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)
52
148
*       Network Administrator
53
149
*       Project Manager
54
 
*       Cloud Administrator
55
 
*       (IT-Sec?)         
56
 
 
57
 
There is an additional, conceptual end-user that may or may not have API access:             
58
 
 
59
 
*       (EXTERNAL) End-user / Third-party User    
60
 
 
61
 
Basic operations are available to any System User:
62
 
 
63
 
*       Launch Instance
64
 
*       Terminate Instance (their own)
65
 
*       Create keypair
66
 
*       Delete keypair
67
 
*       Create, Upload, Delete: Buckets and Keys (Object Store) – their own
68
 
*       Create, Attach, Delete Volume (Block Store) – their own
69
 
 
70
 
System Administrators:
71
 
 
 
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
72
170
*       Register/Unregister Machine Image (project-wide)
73
 
*       Change Machine Image properties (public / private)
74
171
*       Request / Review CloudAudit Scans
75
172
 
 
173
Project Manager:
 
174
 
 
175
*       Add and remove other users (currently no api)
 
176
*       Set roles (currently no api)
 
177
 
76
178
Network Administrator:
77
179
 
 
180
*       Change Machine Image properties (public / private)
78
181
*       Change Firewall Rules, define Security Groups
79
182
*       Allocate, Associate, Deassociate Public IP addresses
80
183
 
81
 
Project Manager:
82
 
 
83
 
*       Launch and Terminate Instances (project-wide)
84
 
*       CRUD of Object and Block store (project-wide)
85
 
 
86
 
Cloud Administrator:
87
 
 
88
 
*       Register / Unregister Kernel and Ramdisk Images
89
 
*       Register / Unregister Machine Image (any)
 
184
Cloud Administrator/IT-Security:
 
185
 
 
186
*       All permissions
 
187
 
90
188
 
91
189
Enhancements
92
190
------------
93
191
 
94
 
*       SAML Token passing 
 
192
*       SAML Token passing
95
193
*       REST interfaces
96
194
*       SOAP interfaces
97
195
 
98
196
Wrapping the SAML token into the API calls.
99
197
Then store the UID (fetched via backchannel) into the instance metadata, providing end-to-end auditability of ownership and responsibility, without PII.
100
198
 
 
199
 
101
200
CloudAudit APIs
102
201
---------------
103
202
 
108
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.
109
208
RBAC of CloudAudit API calls is critical, since detailed system information is a system vulnerability.
110
209
 
 
210
 
111
211
Type declarations
112
 
---------------------
 
212
-----------------
113
213
*       Data declarations – Volumes and Objects
114
214
*       System declarations – Instances
115
215
 
119
219
 
120
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.)
121
221
 
 
222
 
122
223
Request Brokering
123
224
-----------------
124
225
 
125
 
 *      Cloud Interop
126
 
 *      IMF Registration / PubSub
127
 
 *      Digital C&A
 
226
*       Cloud Interop
 
227
*       IMF Registration / PubSub
 
228
*       Digital C&A
128
229
 
129
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.
130
231
 
131
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.
132
233
 
 
234
 
133
235
Dirty Cloud – Hybrid Data Centers
134
236
---------------------------------
135
237
 
136
238
*       CloudAudit bridge interfaces
137
239
*       Anything in the ARP table
138
240
 
139
 
A hybrid cloud environment provides dedicated, potentially co-located physical hardware with a network interconnect to the project or users’ cloud virtual network. 
 
241
A hybrid cloud environment provides dedicated, potentially co-located physical hardware with a network interconnect to the project or users’ cloud virtual network.
140
242
 
141
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.
142
244
 
143
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.
144
246
 
 
247
 
145
248
The Details
146
249
-----------
147
250
 
148
 
 *      Preliminary Roles Definitions
149
 
 *      Categorization of available API calls
150
 
 *      SAML assertion vocabulary
 
251
*       Preliminary Roles Definitions
 
252
*       Categorization of available API calls
 
253
*       SAML assertion vocabulary
 
254
 
151
255
 
152
256
System limits
153
257
-------------
154
258
 
155
 
The following limits need to be defined and enforced:  
 
259
The following limits need to be defined and enforced:
156
260
 
157
261
*       Total number of instances allowed (user / project)
158
262
*       Total number of instances, per instance type (user / project)
165
269
 
166
270
Further Challenges
167
271
------------------
168
 
 *      Prioritization of users / jobs in shared computing environments
169
 
 *      Incident response planning
170
 
 *      Limit launch of instances to specific security groups based on AMI
171
 
 *      Store AMIs in LDAP for added property control
172
 
 
173
 
 
174
 
 
175
 
The :mod:`signer` Module
176
 
------------------------
177
 
 
178
 
.. automodule:: nova.auth.signer
179
 
    :members:
180
 
    :undoc-members:
181
 
    :show-inheritance:
182
 
 
183
 
The :mod:`users` Module
184
 
-----------------------
185
 
 
186
 
.. automodule:: nova.auth.users
187
 
    :members:
188
 
    :undoc-members:
189
 
    :show-inheritance:
190
 
 
191
 
The :mod:`users_unittest` Module
192
 
--------------------------------
193
 
 
194
 
.. automodule:: nova.tests.users_unittest
195
 
    :members:
196
 
    :undoc-members:
197
 
    :show-inheritance:
198
 
 
199
 
The :mod:`access_unittest` Module
200
 
---------------------------------
201
 
 
202
 
.. automodule:: nova.tests.access_unittest
203
 
    :members:
204
 
    :undoc-members:
205
 
    :show-inheritance:
206
 
 
207
 
 
 
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