From 052bc3c3f7c26f992a79e2a47896026421472e63 Mon Sep 17 00:00:00 2001 From: Gage Hugo Date: Fri, 17 Mar 2017 16:00:49 -0500 Subject: [PATCH] Security findings for keystonemiddleware This change adds keystonemiddleware architecture documentation as well as initial findings of possible security vulnerabilities. Change-Id: I2e7a96f46879586a372b71ebcaa8bfdd8faf7e39 Co-Authored-By: Kristi Nikolla --- .../pike/architecture-page.rst | 94 ++++++++++++++++++ ...eystonemiddleware_architecture-diagram.png | Bin 0 -> 44338 bytes .../pike/review-findings.rst | 46 +++++++++ 3 files changed, 140 insertions(+) create mode 100644 doc/source/artifacts/keystonemiddleware/pike/architecture-page.rst create mode 100644 doc/source/artifacts/keystonemiddleware/pike/figures/keystonemiddleware_architecture-diagram.png create mode 100644 doc/source/artifacts/keystonemiddleware/pike/review-findings.rst diff --git a/doc/source/artifacts/keystonemiddleware/pike/architecture-page.rst b/doc/source/artifacts/keystonemiddleware/pike/architecture-page.rst new file mode 100644 index 0000000..1b1337e --- /dev/null +++ b/doc/source/artifacts/keystonemiddleware/pike/architecture-page.rst @@ -0,0 +1,94 @@ +================= +Architecture page +================= + +keystonemiddleware architecture - 4.17.1/pike +--------------------------------------------- +**Status**: Draft/Ready for Review/Reviewed + +**Release**: Pike + +**Version**: 4.17.1 + +**Contacts**: + +- PTL: Lance Bragstad - lbragstad + +- Architect: Gage Hugo - gagehugo + +- Security Reviewer: Luke Hinds - lhinds +- Security Reviewer: Jeremy Stanley - fungi + +Project description and purpose +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +keystonemiddleware [0]_ is primarily used for integrating with the OpenStack +Identity API [2]_ and handling authorization enforcement based upon the data +within the OpenStack Identity tokens. Also included is middleware that +provides the ability to create audit events based on API requests. + + +Primary users and use-cases +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The primary users of keystonemiddleware are other services within an OpenStack +deployment that require identity information supplied from OpenStack +Identity (keystone). + + +External dependencies & associated security assumptions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +keystonemiddleware depends on having an OpenStack Identity (keystone) [2]_ +endpoint. Without an Identity endpoint, there is not much use for +keystonemiddleware. It also depends on having a service configuration +for the service that it is protecting. + + +Components +~~~~~~~~~~ + +- OpenStack Identity - keystone (Python) +- memcache (optional) + + +Service architecture diagram +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. image:: figures/keystonemiddleware_architecture-diagram.png + +Architecture Page [1]_ + +Data assets +~~~~~~~~~~~ + +- *Authorization Tokens* - persisted in memcache +- *memcache encryption keys* - persisted in keystonemiddleware.conf + + +Data asset impact analysis +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Data Assets: +- *Authorization Token*: + - Integrity Failure Impact: Attacker that can capture and hijack a valid + auth token can get access to anything scoped to the token. + +- *keystonemiddleware.conf*: + - Integrity Failure Impact: Attacker who can read the config file can gain + access to the memcache encryption key, which can allow them to access and + modify all cached tokens. + + +Interfaces +~~~~~~~~~~ + +1. User -> KeystoneMiddleware *[TLS]*: + - Assets in flight: keystone Token + - An attacker who can successfully intercept the token can modify anything + that the token is scoped to. This has potential availability impact. + + +Resources +~~~~~~~~~ + +.. [0] ``_ +.. [1] `` +.. [2] `` diff --git a/doc/source/artifacts/keystonemiddleware/pike/figures/keystonemiddleware_architecture-diagram.png b/doc/source/artifacts/keystonemiddleware/pike/figures/keystonemiddleware_architecture-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..6ea83ca9740461bed9e1b736d3be60a0e3c4636f GIT binary patch literal 44338 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