From bd07f84ed80b7345a18f2ef1d816047347b3e948 Mon Sep 17 00:00:00 2001 From: gordon chung Date: Wed, 22 Oct 2014 16:05:48 -0400 Subject: [PATCH] documentation for audit middleware this moves (and edits) audit middleware documentation from pycadf library to keystonemiddleware pycadf doc: https://github.com/openstack/pycadf/blob/master/doc/source/middleware.rst Implements: blueprint audit-middleware Change-Id: I068f312d8927010fd209eab5c22910c4d1d343a1 --- doc/source/audit.rst | 81 ++++++++++++++++++++++++++++++++++++ doc/source/images/audit.png | Bin 0 -> 48742 bytes doc/source/index.rst | 6 ++- keystonemiddleware/audit.py | 8 +++- 4 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 doc/source/audit.rst create mode 100644 doc/source/images/audit.png diff --git a/doc/source/audit.rst b/doc/source/audit.rst new file mode 100644 index 00000000..4d87905f --- /dev/null +++ b/doc/source/audit.rst @@ -0,0 +1,81 @@ +.. + Copyright 2014 IBM Corp + + Licensed under the Apache License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may obtain + a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations + under the License. + +.. _middleware: + +================= + Audit middleware +================= + +The Keystone middleware library provides an optional WSGI middleware filter +which allows the ability to audit API requests for each component of OpenStack. + +The audit middleware filter utilises environment variables to build the CADF +event. + +.. figure:: ./images/audit.png + :width: 100% + :align: center + :alt: Figure 1: Audit middleware in Nova pipeline + +The figure above shows the middleware in Nova's pipeline. + +Enabling audit middleware +========================= +To enable auditing, oslo.messaging_ should be installed. If not, the middleware +will log the audit event instead. Auditing can be enabled for a specific +project by editing the project's api-paste.ini file to include the following +filter definition: + +:: + + [filter:audit] + paste.filter_factory = keystonemiddleware.audit:AuditMiddleware.factory + audit_map_file = /etc/nova/api_audit_map.conf + +The filter should be included after Keystone middleware's auth_token middleware +so it can utilise environment variables set by auth_token. Below is an example +using Nova's WSGI pipeline:: + + [composite:openstack_compute_api_v2] + use = call:nova.api.auth:pipeline_factory + noauth = faultwrap sizelimit noauth ratelimit osapi_compute_app_v2 + keystone = faultwrap sizelimit authtoken keystonecontext ratelimit audit osapi_compute_app_v2 + keystone_nolimit = faultwrap sizelimit authtoken keystonecontext audit osapi_compute_app_v2 + +.. _oslo.messaging: http://www.github.com/openstack/oslo.messaging + +Configure audit middleware +========================== +To properly audit api requests, the audit middleware requires an +api_audit_map.conf to be defined. The project's corresponding +api_audit_map.conf file is included in the `pyCADF library`_. + +The location of the mapping file should be specified explicitly by adding the +path to the 'audit_map_file' option of the filter definition:: + + [filter:audit] + paste.filter_factory = keystonemiddleware.audit:AuditMiddleware.factory + audit_map_file = /etc/nova/api_audit_map.conf + +Additional options can be set:: + + [filter:audit] + paste.filter_factory = pycadf.middleware.audit:AuditMiddleware.factory + audit_map_file = /etc/nova/api_audit_map.conf + service_name = test # opt to set HTTP_X_SERVICE_NAME environ variable + ignore_req_list = GET,POST # opt to ignore specific requests + +.. _pyCADF library: https://github.com/openstack/pycadf/tree/master/etc/pycadf diff --git a/doc/source/images/audit.png b/doc/source/images/audit.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2b1305a75122e410d04e958fb3eadafeaf9ea6 GIT binary patch literal 48742 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Ž>Cgy|FN#zy@Vr+d=>;SNx=vv9Y9rq=5>M^#Viyqeu)F|kDqz%4!?wB~R8l1!;`>yyqQ;*3VI+ORt z?t}Haa8&<$jG0j7(VL{T2_Y*jaJ@n0O1m)+bqQlPCUUJ_hXJN#Q@Sd zq*)QV5XI@tJ*X}@YoyVd7YVMBVmuRV%Zoe@T~0OWxrh&Mw0HU&a8grM{xrgY2&;sL z7!GYQu8ZoY9@hDvnX}+&*GsO9;^y7$gR4o@?6GC|g>rZ(t!!>MZw zRHn*9JdRDU3^bNCqR_LEUA7NX_HQDNsPv8I^V5cdjC0hC*-Jz6THx${;k6;H`UJZf zpm-k2dC;S?{FdSiIzozLusX^k5Ig}cyNk&m-W~866FEj{us76mJfy$fPC!R?^pq_o zxwPw7g*j4LCws+vVW#fi?q+&#cc->qhC*oCWEp6gFe(*kHc<7+>inST>qbL?3e6{}~C zY-^XS36`-&86?Ti`(xJ~8)0|5mj z*|ljDRev%lB8C1q;>e^yQmm|vUIoexKmjYWuAwuqZUK9&<%)Wp@^tW6auL`0xf^yS z)m{%$>}ajbz!Ac&i7`s3#Q@l?`^&8%0~u%nwelBf6>qeN-d@)~tKb-D#Y((##u2PxMF>N%XMZ+!cKj0o*L(SUX0JlmGXEW*0O(8H|wO<`*D8#VTk375$}2eGee zuH&ERIE)82pn<^$jT5CXbUXG^0RaEDC;JV-6xyd$_gaWs>?gF|#hgC<*V|L)3A8b? zxqBAX)@ZoZ9?HGC9lW7I(e*7(OJd>;~)&w@0g+CfNn?Y)?#99_W1kRGW{!rPKzt9uuF>#sgHL zgw=Z~C}lHH*!GYDWdO0~>2@06&Gn-H)dms9{`S8Q_8%Dh6UZTCvHzI)yy(>B=2F+x z$R?U)h5twdkwK?f*8Hv4zzGuqkA@(20`O?WfXM$wFcV7UVE@ewzm&hmX8Z5n{J)93 z|ER8iML!6k5z}#Jnb`G!`DTeP(qMzVv4!y-=_Fe2?#IqdG{zxgMr?AlZ&przMDF&R zi$ed zJvcx=D*hVmi+;kC{nTBm2`QE~lI$=uiZTUvaM4bJ*PRWbola&dxzDec`V+dj>qakO zzIh$y@@&^l;>(qTn1+J|QuHu91;SO7hf_@0dw(bqK