Senior Solutions Architect, MongoDB James Kerr Security Features Preview Field Level Access Control.

Slides:



Advertisements
Similar presentations
Inside an XSLT Processor Michael Kay, ICL 19 May 2000.
Advertisements

Dr. Alexandra I. Cristea CS 252: Fundamentals of Relational Databases: SQL5.
Introduction to SQL, OleDB interface to Access from VB.NET.
Mongo An alternative database system. Installing Mongo We must install both the Mongo database and at least one GUI for managing Mongo See
XML Data Management 8. XQuery Werner Nutt. Requirements for an XML Query Language David Maier, W3C XML Query Requirements: Closedness: output must be.
DIGIDOC A web based tool to Manage Documents. System Overview DigiDoc is a web-based customizable, integrated solution for Business Process Management.
Creating Tables. 2 home back first prev next last What Will I Learn? List and provide an example of each of the number, character, and date data types.
“The Honeywell Web-based Corrective Action Solution”
Data Management Expert Panel - WP2. WP2 Overview.
OWASP Secure Coding Practices Quick Reference Guide
METALOGIC s o f t w a r e © Metalogic Software Corporation DACS Developer Overview DACS – the Distributed Access Control System.
TIMBER A Native XML Database Xiali He The Overview of the TIMBER System in University of Michigan.
OAISYS Public Safety Solutions Safeguarding Mission-Critical Communications.
Advantage Data Dictionary. agenda Creating and Managing Data Dictionaries –Tables, Indexes, Fields, and Triggers –Defining Referential Integrity –Defining.
DESIGNING A PUBLIC KEY INFRASTRUCTURE
Xyleme A Dynamic Warehouse for XML Data of the Web.
Fundamentals, Design, and Implementation, 9/e Chapter 12 ODBC, OLE DB, ADO, and ASP.
Edward Tsai – CS 239 – Spring 2003 Strong Security for Active Networks CS 239 – Network Security Edward Tsai Tuesday, May 13, 2003.
Querying Ontology Based Database Using OntoQL Stephane Jean et al. Presented by: Meher Talat Shaikh.
Copying, Managing, and Transforming Data With DTS.
MongoDB Sharding and its Threats
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wananga o te Upoko o te Ika a Maui SWEN 432 Advanced Database Design and Implementation MongoDB Read Lecturer.
XML files (with LINQ). Introduction to LINQ ( Language Integrated Query ) C#’s new LINQ capabilities allow you to write query expressions that retrieve.
Edwin Sarmiento Microsoft MVP – Windows Server System Senior Systems Engineer/Database Administrator Fujitsu Asia Pte Ltd
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
Database testing Prepared by Saurabh sinha. Database testing mainly focus on: Data integrity test Data integrity test Stored procedures test Stored procedures.
Introduction to Databases A line manager asks, “If data unorganized is like matter unorganized and God created the heavens and earth in six days, how come.
Lecture slides prepared for “Computer Security: Principles and Practice”, 3/e, by William Stallings and Lawrie Brown, Chapter 5 “Database and Cloud Security”.
XML as a Boxwood Data Structure Feng Zhou, John MacCormick, Lidong Zhou, Nick Murphy, Chandu Thekkath 8/20/04.
Ashwani Roy Understanding Graphical Execution Plans Level 200.
8.1 Lawson Security Overview Del Dehn Product Manager.
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wananga o te Upoko o te Ika a Maui SWEN 432 Advanced Database Design and Implementation MongoDB Aggregation.
Creating Dynamic Web Pages Using PHP and MySQL CS 320.
1 Emergency Alerts as RSS Feeds with Interdomain Authorization Filippo Gioachin 1, Ravinder Shankesi 1, Michael J. May 1,2, Carl A. Gunter 1, Wook Shin.
DEV-09: User Authentication in an OpenEdge™ 10.1 Distributed Computing Environment Michael Jacobs Development Architect.
The New MR Repository & Security Authorization Model Ben Naphtali WebFOCUS Product Manager Architecture and Security May 2010 Copyright 2009, Information.
EXist Indexing Using the right index for you data Date: 9/29/2008 Dan McCreary President Dan McCreary & Associates (952) M.
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wananga o te Upoko o te Ika a Maui SWEN 432 Advanced Database Design and Implementation MongoDB Architecture.
“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”
Secure Systems Research Group - FAU SW Development methodology using patterns and model checking 8/13/2009 Maha B Abbey PhD Candidate.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
Securing Sensitive Information Data Security Dashboards often contain the most important data in the company Securing that information makes business.
Database Environment Chapter 2. Data Independence Sometimes the way data are physically organized depends on the requirements of the application. Result:
XML and Database.
— Customer Success Team August / 2015 Remedyforce Enablement Kit Migration from CMDB 1.0 to 2.0.
XML Access Control Koukis Dimitris Padeleris Pashalis.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
Grouping Robin Burke ECT 360. Outline Extra credit Numbering, revisited Grouping: Sibling difference method Uniquifying in XPath Grouping: Muenchian method.
Grouping Robin Burke ECT 360. Outline Grouping: Sibling difference method Uniquifying in XPath Grouping: Muenchian method Generated ids Keys Moded Templates.
SQL. Originally developed by IBM Standardized in 80’s by ANSI and ISO Language to access relational database and English-like non-procedural Predominant.
Introduction to MongoDB. Database compared.
Securing Web Applications Lesson 4B / Slide 1 of 34 J2EE Web Components Pre-assessment Questions 1. Identify the correct return type returned by the doStartTag()
Session 11: Cookies, Sessions ans Security iNET Academy Open Source Web Development.
Building Preservation Environments with Data Grid Technology Reagan W. Moore Presenter: Praveen Namburi.
Chapter 29: Program Security Dr. Wayne Summers Department of Computer Science Columbus State University
SQL Server 2016 Security Features Marek Chmel Microsoft MVP: Data Platform Microsoft MCT: Regional Lead MCSE: Data Platform Certified Ethical Hacker.
What is Database Administration ?
Database and Cloud Security
MongoDB Er. Shiva K. Shrestha ME Computer, NCIT
Lecturer : Dr. Pavle Mogin
Senior Solutions Architect, MongoDB Inc.
Aggregation Aggregations operations process data records and return computed results. Aggregation operations group values from multiple documents together,
OrientX: an Integrated, Schema-Based Native XML Database System
What’s changed in the Shibboleth 1.2 Origin
Data Model.
Chapter 29: Program Security
Lecuter-1.
Presentation transcript:

Senior Solutions Architect, MongoDB James Kerr Security Features Preview Field Level Access Control

Key Security Considerations

Reference Architecture Clients Storage Administrators Authentication Authorization Auditing Encryption

Authentication Clients Storage Administrators Authentication Authorization Auditing Encryption Which users/apps are accessing the DB Which nodes are joining the cluster Which users are accessing the DB

Authorization Clients Storage Administrators Authentication Authorization Auditing Encryption What permissions does an App have? What permissions does an Admin have? What data can a user see? What data can an admin see?

Auditing Clients Storage Administrators Authentication Authorization Auditing Encryption Who made which changes and when?

Encryption Clients Storage Administrators Authentication Authorization Auditing Encryption SSL Encryption File system Encryption

Today - Authorization Clients Authorization What permissions does an App have? What data can a user see?

Authorization

Authorization Features Database Level Access Control (2.4) – Admin roles – DB, user, cluster – Application roles – reader, reader/writer Collection Level Access Control (coming soon) – User defined roles – Privileges granted to roles for actions on resources – Database, collection and system resource types Field Level Access Control (2.5 nightly) – Redact documents and/or fields based on security labels

Field Level Access Control Goals Restrict access to certain documents within a collection Restrict access to certain fields within documents Provide a generic capability to handle different marking schemes Describe policies in terms of existing MongoDB query languages, or extensions thereof

FLAC Features and Functionality New $redact aggregation framework phase – Performs a pre-order traversal of the document tree – For each node, the expression conditionally returns one of "$$KEEP”, "$$PRUNE” or "$$DESCEND” New query language operators – Sets ( ⊆, =, ∖, ∩, ∪ ) – Arrays (any true, all true) – Variables (let, map)

FLAC Features and Functionality (cont.) Aggregation can return a cursor – Have to use "aggregate" command until 2.5 is feature- complete – Can use the the temporary mongo shell helper db.collection.aggregateCursor() Aggregation can write directly to another collection – $out phase

Redaction Logic Expression is evaluated as the nodes in the document are traversed $$KEEP – inserts the node and the node's children into the output $$PRUNE – puts no node in the output document, and continues the traversal of the sibling nodes $$DESCEND – inserts a corresponding node in the output document and continues the traversals of the node's children

Set Operators $setIsSubset $setEquals $setDifference $setIntersection $setUnion

Array Operators $allElementsTrue $anyElementTrue

Variable Operators $let – Binds variables for use in sub-expressions $map – Applies a sub-expression to each item in an array and returns an array with the result of the sub-expression Available the in $project, $group, and $redact pipeline stages

{ $project: { remaining: { $let : { vars: { tally: 75, count: 50 }, in: { $subtract: [ "$$tally", "$$count" ] } } }  { remaining: 25 } $let Example Bind the "tally" and "count" variables Evaluate the subexpression defined by the "in" field with the bound variables

{ skews: [ 1, 2, 3 ] } { $project: { adjusted: { $map: { input: "$skews", as: "adj", in: { $add: [ "$$adj", 12 ] } } } } }  { adjusted : [ 13, 14, 15 ] } $map Example Use the "skews" field as the input to the $map operation Assign each element in the input array to the "adj" variable Execute expression for each element in the input array

{ $redact: { $cond: [{ $anyElementTrue: { $map: { input: "$sl", as: "setNeeded", in: { $setIsSubset: ["$$setNeeded", ["A", "B", "D"]] } } }, "$$DESCEND", "$$PRUNE"] } $redact Example Input labels. IE, these would come from the user's attributes Field security labels are in the "sl" field

FLAC Pipeline – Basic $redact Query $match Redaction Expression User Attributes

FLAC Pipeline – Optimized $match Query $redact $match Redaction Expression User Attributes To make the pipeline more selective, parts of the $match may be promoted by the execution engine or manually. * Don't promote negative query terms ($ne, $nin, $nor, etc)

FLAC Pipeline – Document Level Filters $match Query $redact $match Redaction Expression User Attributes Security Match Expression Document level access may be selective and benefit from index use in the first $match phase

Markings Reference Implementation Field visibility is controlled by the "sl" field Top level "sl" applies to the whole document Restrictive markings on a parent field removes it and any children

Markings Reference Implementation { _id: 1, sl: [ ["A", "B"], ["C"] ], field1 : { sl : [ ["A", "B"] ], data : “field1 value” }, field2 : { sl : [ ["C"] ], data : “field2 value” }, field3 : { sl : [ ["A", "C"], ["B", "D"] ], data : “field3 value” } } User needs A&B|C to see the document User needs A&B to see field1 User needs C to see field2 User needs A&C|B&D to see field3

Markings Reference Implementation { _id: 2, sl: [ ["A", "B", "C"], ["A", "B", "D"] ], field1 : { sl : [ ["A", "B"] ], field2 : { sl : [ ["C"] ], data : "field2 value" }, field3 : { sl : [ ["D"] ], data : "field3 value" } } User needs A&B&C|A&B&D to see the document User needs A&B to see field1 User needs A&B&C to see field1.field2 User needs A&B&D to see field1.field3

{ $redact: { $cond: [{ $anyElementTrue: { $map: { input: "$sl", as: "setNeeded", in: { $setIsSubset: ["$$setNeeded", ["A", "B", "D"]] } } }, "$$DESCEND", "$$PRUNE"] } $redact Reference Example User has labels "A", "B" and "D" Field security labels are in the "sl" field

{ _id: 1, sl: [ ["A", "B"], ["C"] ], field1 : { sl : [ ["A", "B"] ], data : “field1 value” }, field2 : { sl : [ ["C"] ], data : “field2 value” }, field3 : { sl : [ ["A", "C"], ["B", "D"] ], data : “field3 value” } } { _id: 1, sl: [ ["A", "B"], ["C"] ], field1 : { sl : [ ["A", "B"] ], data : “field1 value” }, field3 : { sl : [ ["A", "C"], ["B", "D"] ], data : “field3 value” } } $redact Output User labels = ["A", "B", "D"]

{ _id: 2, sl: [ ["A", "B", "C"], ["A", "B", "D"] ], field1 : { sl : [ ["A", "B"] ], field2 : { sl : [ ["C"] ], data : “field2 value” }, field3 : { sl : [ [“D"] ], data : “field3 value” } } } { _id: 2, sl: [ ["A", "B", "C"], ["A", "B", "D"] ], field1 : { sl : [ ["A", "B"] ], field3 : { sl : [ [“D"] ], data : “field3 value” } } } $redact Output User labels = ["A", "B", "D"]

FLAC Design – Trusted Middleware Trusted Middleware/ Application Trusted Middleware/ Application Identity Management Driver 1.Authenticate Untrusted User 2.Retrieve User Attributes 3.Create query and $redact Expression 1.Authenticate Trusted User 2.Run Query 3.Apply $redact Expression Query + $redact Trusted user Untrusted User/Application Untrusted User/Application Collection

Disclaimer Statements about future releases, availability dates, and feature content reflect plans only, and MongoDB is under no obligation to include, develop or make available, commercially or otherwise, specific features discussed in a future MongoDB build. Information is provided for general understanding only, and is subject to change at the sole discretion of MongoDB in response to changing market conditions, delivery schedules, customer requirements, and/or other factors.

Integrated FLAC (Conceptual)* Collection Views Read-only Views Parameterized Views – Configurable redaction expression – Document content based on the user attributes and field markings * See Disclaimer

FLAC Design – Views* Trusted Middleware/ Application Trusted Middleware/ Application Identity Management Driver 1.Authenticate Untrusted User 2.Retrieve User Attributes 1.Authenticate Trusted User 2.Run Query 3.Create/Apply $redact Expression Query + attributes Trusted user Untrusted User/Application Untrusted User/Application Collection View ($redact) View ($redact) * See Disclaimer

FLAC Design – Fully Integrated* Untrusted Middleware/ Application Untrusted Middleware/ Application Identity Management Driver 1.Authenticate Untrusted User 2.Retrieve User Attributes 3.Run Query 4.Create/Apply $redact Expression Query Untrusted user Untrusted User/Application Untrusted User/Application Collection View ($redact) View ($redact) * See Disclaimer

{ $redact: { $cond: [{ $anyElementTrue: { $map: { input: "$sl", as: "setNeeded", in: { $setIsSubset: ["$$setNeeded", "$$USER.security.tags"] } } }, "$$DESCEND", "$$PRUNE"] } Parameterized View Concept* * See Disclaimer User labels retrieved from security "context"

Other Features* LDAP Authentication x.509 Authentication Keyfile alternative Auditing (admin functions – DDL, DCL) User defined roles Collection level access control * See Disclaimer

Next Steps Looking for customers to evaluate Trusted middleware example code

References

James Kerr Thank You