Sqrrl June Webinar: An Accumulo Love Story

64
Securely explore your data Sqrrl Visibility Labels and Pluggable Authorization Systems: A Love Story John Vines Engineer Sqrrl Data, Inc. [email protected]

description

Labels in Sqrrl Enterprise provide great power and flexibility. In this webinar, founding Sqrrl engineer John Vines goes over the benefits and pitfalls of using visibility labels with pluggable authorizations systems, and we will go through scenarios of different systems on top of Sqrrl Enterprise.

Transcript of Sqrrl June Webinar: An Accumulo Love Story

Page 1: Sqrrl June Webinar: An Accumulo Love Story

Securely explore your data

Sqrrl Visibility Labels and

Pluggable Authorization Systems: A Love Story

John Vines Engineer Sqrrl Data, Inc. [email protected]

Page 2: Sqrrl June Webinar: An Accumulo Love Story

WHAT MAKES ACCUMULO SPECIAL WHEN IT COMES TO SECURITY?

© 2014 Sqrrl | All Rights Reserved

Page 3: Sqrrl June Webinar: An Accumulo Love Story

CELL-LEVEL SECURITY

© 2014 Sqrrl | All Rights Reserved

Page 4: Sqrrl June Webinar: An Accumulo Love Story

CELL-LEVEL SECURITY

© 2014 Sqrrl | All Rights Reserved

Page 5: Sqrrl June Webinar: An Accumulo Love Story

© 2014 Sqrrl | All Rights Reserved

tldr;

visibilities are like ACLs

CELL-LEVEL SECURITY

Page 6: Sqrrl June Webinar: An Accumulo Love Story

© 2014 Sqrrl | All Rights Reserved

tldr;

visibilities are like ACLs

...sort of

CELL-LEVEL SECURITY

Page 7: Sqrrl June Webinar: An Accumulo Love Story

SQRRL

© 2014 Sqrrl | All Rights Reserved

What does this mean with sqrrl?

Page 8: Sqrrl June Webinar: An Accumulo Love Story

SQRRL

© 2014 Sqrrl | All Rights Reserved

What does this mean with sqrrl?

Sqrrl uses these labels within hierarchical documents for the same

effect

Page 9: Sqrrl June Webinar: An Accumulo Love Story

SQRRL JSON

© 2014 Sqrrl | All Rights Reserved

{"children@[FAM|IRS]": {"current": [{ "name": "Johnny" }], "expecting@[FAM]": [{ "name": "Baby Girl"}] } } Only the family and IRS care about

children. Only the family cares about expecting

Page 10: Sqrrl June Webinar: An Accumulo Love Story

THAT’S GREAT!

© 2014 Sqrrl | All Rights Reserved

What does it get me?

Page 11: Sqrrl June Webinar: An Accumulo Love Story

THAT’S GREAT!

© 2014 Sqrrl | All Rights Reserved

What does it get me?

Amalgamating data sources that are segregated

Page 12: Sqrrl June Webinar: An Accumulo Love Story

THE SCENARIO:

© 2014 Sqrrl | All Rights Reserved

I am a first time Sqrrl/Accumulo user I want to use its nifty features I have no idea what I’m doing

Page 13: Sqrrl June Webinar: An Accumulo Love Story

FIRST TRY

© 2014 Sqrrl | All Rights Reserved

Scan without JohnsLabel

Page 14: Sqrrl June Webinar: An Accumulo Love Story

FIRST TRY

© 2014 Sqrrl | All Rights Reserved

Scan without JohnsLabel *sad trombone*

Scan with JohnsLabel

Page 15: Sqrrl June Webinar: An Accumulo Love Story

FIRST TRY

© 2014 Sqrrl | All Rights Reserved

Scan without JohnsLabel *sad trombone*

Scan with JohnsLabel

uuid1 {"field1@[JohnsLabel]": "Value”} uuid2 {"field1@[JohnsLabel]": "Value”} uuid3 {"field2@[JohnsLabel]": "Value”} uuid4 {"field2@[JohnsLabel]": "Value”} uuid5 {"field1@[JohnsLabel]": "Value”}

Page 16: Sqrrl June Webinar: An Accumulo Love Story

SECOND TRY

© 2014 Sqrrl | All Rights Reserved

uuid1 {"field1@[JohnsApplication]": "Value”} uuid2 {"field1@[JohnsApplication]": "Value”} uuid3 {"field2@[JohnsApplication]": "Value”} uuid4 {"field2@[JohnsApplication]": "Value”} uuid5 {"field1@[JohnsApplication]": "Value”}

Page 17: Sqrrl June Webinar: An Accumulo Love Story

SECOND TRY

© 2014 Sqrrl | All Rights Reserved

What does my label even mean?

uuid1 {"field1@[JohnsApplication]": "Value”} uuid2 {"field1@[JohnsApplication]": "Value”} uuid3 {"field2@[JohnsApplication]": "Value”} uuid4 {"field2@[JohnsApplication]": "Value”} uuid5 {"field1@[JohnsApplication]": "Value”}

Page 18: Sqrrl June Webinar: An Accumulo Love Story

THIRD TRY

© 2014 Sqrrl | All Rights Reserved

uuid1 {"field1@[application1|application2]": "Value”} uuid2 {"field1@[application1]": "Value”} uuid3 {"field2@[application1]": "Value”} uuid4 {"field2@[application2]": "Value”} uuid5 {"field1@[application3]": "Value”}

Page 19: Sqrrl June Webinar: An Accumulo Love Story

THIRD TRY

© 2014 Sqrrl | All Rights Reserved

What about application4? application5? 6?

uuid1 {"field1@[application1|application2]": "Value”} uuid2 {"field1@[application1]": "Value”} uuid3 {"field2@[application1]": "Value”} uuid4 {"field2@[application2]": "Value”} uuid5 {"field1@[application3]": "Value”}

Page 20: Sqrrl June Webinar: An Accumulo Love Story

BACK TO THE DRAWING BOARD

© 2014 Sqrrl | All Rights Reserved

What am I trying to accomplish? Why am I segregating my data?

Page 21: Sqrrl June Webinar: An Accumulo Love Story

FOURTH TRY

© 2014 Sqrrl | All Rights Reserved

uuid1 {"field1@[org1|org2]": "Value”} uuid2 {"field1@[org1]": "Value”} uuid3 {"field2@[org1]": "Value”} uuid4 {"field2@[org2]": "Value”}

uuid5 {"field1@[org1&org2]": "Value”}

Page 22: Sqrrl June Webinar: An Accumulo Love Story

FOURTH TRY

© 2014 Sqrrl | All Rights Reserved

Organizations are big!

uuid1 {"field1@[org1|org2]": "Value”} uuid2 {"field1@[org1]": "Value”} uuid3 {"field2@[org1]": "Value”} uuid4 {"field2@[org2]": "Value”}

uuid5 {"field1@[org1&org2]": "Value”}

Page 23: Sqrrl June Webinar: An Accumulo Love Story

FIFTH TRY

© 2014 Sqrrl | All Rights Reserved

What about if subOrgs change?

uuid1 {"field1@[subOrg1|subOrg2]": "Value”} uuid2 {"field1@[subOrg1]": "Value”} uuid3 {"field2@[subOrg1]": "Value”} uuid4 {"field2@[subOrg2]": "Value”}

uuid5 {"field1@[subOrg1&subOrg2]": "Value”}

Page 24: Sqrrl June Webinar: An Accumulo Love Story

FIFTH TRY

© 2014 Sqrrl | All Rights Reserved

What about if subOrgs change? Why do these orgs have permission?

uuid1 {"field1@[subOrg1|subOrg2]": "Value”} uuid2 {"field1@[subOrg1]": "Value”} uuid3 {"field2@[subOrg1]": "Value”} uuid4 {"field2@[subOrg2]": "Value”}

uuid5 {"field1@[subOrg1&subOrg2]": "Value”}

Page 25: Sqrrl June Webinar: An Accumulo Love Story

SIXTH TRY

© 2014 Sqrrl | All Rights Reserved

Looks good!

uuid1 {"field1@[accountsReceivable|payroll]": "Value”}

uuid2 {"field1@[accountsReceivable]": "Value”} uuid3 {"field2@[accountsReceivable]": "Value”}

uuid4 {"field2@[payroll]": "Value”} uuid5 {"field1@[accountsReceivable&payroll]":

"Value”}

Page 26: Sqrrl June Webinar: An Accumulo Love Story

SIXTH TRY

© 2014 Sqrrl | All Rights Reserved

Looks good! But now I need to manage users!

uuid1 {"field1@[accountsReceivable|payroll]": "Value”}

uuid2 {"field1@[accountsReceivable]": "Value”} uuid3 {"field2@[accountsReceivable]": "Value”}

uuid4 {"field2@[payroll]": "Value”} uuid5 {"field1@[accountsReceivable&payroll]":

"Value”}

Page 27: Sqrrl June Webinar: An Accumulo Love Story

PLUGGABLE SECURITY TO THE RESCUE

© 2014 Sqrrl | All Rights Reserved

Page 28: Sqrrl June Webinar: An Accumulo Love Story

PLUGGABLE SECURITY TO THE RESCUE

© 2014 Sqrrl | All Rights Reserved

okay… what is this?

Page 29: Sqrrl June Webinar: An Accumulo Love Story

PLUGGABLE SECURITY TO THE RESCUE

© 2014 Sqrrl | All Rights Reserved

tserver scan

Pluggable Authorizor

getAuths() scan

Page 30: Sqrrl June Webinar: An Accumulo Love Story

PLUGGABLE SECURITY TO THE RESCUE

© 2014 Sqrrl | All Rights Reserved

tserver scan

Pluggable Authorizor

getAuths() scan

What does this mean to Sqrrl?

Page 31: Sqrrl June Webinar: An Accumulo Love Story

POLICY ENGINE

© 2014 Sqrrl | All Rights Reserved

Sqrrl uses Apache Shiro to expose configurable security

Page 32: Sqrrl June Webinar: An Accumulo Love Story

POLICY ENGINE

© 2014 Sqrrl | All Rights Reserved

Sqrrl uses Apache Shiro to expose configurable security

Less work needed to use existing security architecture

Page 33: Sqrrl June Webinar: An Accumulo Love Story

SEVENTH TRY

© 2014 Sqrrl | All Rights Reserved

LDAP’s role-based access says: User1->HR

User2->InternalConflicts User3->Payroll User4->Taxes

Page 34: Sqrrl June Webinar: An Accumulo Love Story

SEVENTH TRY

© 2014 Sqrrl | All Rights Reserved

One less system to maintain!

LDAP’s role-based access says: User1->HR

User2->InternalConflicts User3->Payroll User4->Taxes

Page 35: Sqrrl June Webinar: An Accumulo Love Story

SEVENTH TRY

© 2014 Sqrrl | All Rights Reserved

One less system to maintain! But our orgs are hierarchical!

LDAP’s role-based access says: User1->HR

User2->InternalConflicts User3->Payroll User4->Taxes

Page 36: Sqrrl June Webinar: An Accumulo Love Story

EIGHTH TRY

© 2014 Sqrrl | All Rights Reserved

Policy Engine Says: InternalConflicts->InternalConflicts,HR

Payroll->Payroll,Finance Taxes->Finance,AccountsReceivable

Page 37: Sqrrl June Webinar: An Accumulo Love Story

EIGHTH TRY

© 2014 Sqrrl | All Rights Reserved

But what if I don’t want a certain org to get a piece of data?

Policy Engine Says: InternalConflicts->InternalConflicts,HR

Payroll->Payroll,Finance Taxes->Finance,AccountsReceivable

Page 38: Sqrrl June Webinar: An Accumulo Love Story

NINTH TRY

© 2014 Sqrrl | All Rights Reserved

uuid5 {"field1@[designer&!manager]": "Value”}

Page 39: Sqrrl June Webinar: An Accumulo Love Story

NINTH TRY

© 2014 Sqrrl | All Rights Reserved

Accumulo and Sqrrl do not support NOTs

uuid5 {"field1@[designer&!manager]": "Value”}

Page 40: Sqrrl June Webinar: An Accumulo Love Story

© 2014 Sqrrl | All Rights Reserved

Visibility labels have been a core piece of Accumulo for almost 6 years.

Last thing we want is people to inadvertently leak

data because of change in our security story (adding NOTs)

Accumulo has always supported downgrading

authorizations and this behavior will break NOTs

WHY NO NOTS?

Page 41: Sqrrl June Webinar: An Accumulo Love Story

NINTH TRY

© 2014 Sqrrl | All Rights Reserved

Accumulo and Sqrrl do not support NOTs

What are we trying to accomplish?

uuid5 {"field1@[designer&!manager]": "Value”}

Page 42: Sqrrl June Webinar: An Accumulo Love Story

TENTH TRY

© 2014 Sqrrl | All Rights Reserved

uuid5 {"field1@[designer&(worker&contractor)]": "Value”}

Page 43: Sqrrl June Webinar: An Accumulo Love Story

TENTH TRY

© 2014 Sqrrl | All Rights Reserved

But I want others to know some part of uuid5 field1!

uuid5 {"field1@[designer&(worker&contractor)]": "Value”}

Page 44: Sqrrl June Webinar: An Accumulo Love Story

REMEMBER

© 2014 Sqrrl | All Rights Reserved

Page 45: Sqrrl June Webinar: An Accumulo Love Story

REMEMBER

© 2014 Sqrrl | All Rights Reserved

{"children@[FAM|IRS]": {"current": [{ "name": "Johnny" }], "expecting@[FAM]": [{ "name": "Baby Girl"}] } }

Page 46: Sqrrl June Webinar: An Accumulo Love Story

ELEVENTH TRY

© 2014 Sqrrl | All Rights Reserved

uuid5 {"field1@[designer&(worker&contractor)]": "Value”}

uuid5 {"field1@[engineer&(worker&contractor)]": "Value”}

Page 47: Sqrrl June Webinar: An Accumulo Love Story

ELEVENTH TRY

© 2014 Sqrrl | All Rights Reserved

But I still want the managers to know that uuid5 field1 exists!

uuid5 {"field1@[designer&(worker&contractor)]": "Value”}

uuid5 {"field1@[engineer&(worker&contractor)]": "Value”}

Page 48: Sqrrl June Webinar: An Accumulo Love Story

TWELTH TRY

© 2014 Sqrrl | All Rights Reserved

uuid5 {"field1": "Value”} uuid5 {"field1@[designer&(worker&contractor)]":

"Value”} uuid5 {"field1@[engineer&(worker&contractor)]":

"Value”}

Page 49: Sqrrl June Webinar: An Accumulo Love Story

TWELTH TRY

© 2014 Sqrrl | All Rights Reserved

How can root look at everything?

uuid5 {"field1": "Value”} uuid5 {"field1@[designer&(worker&contractor)]":

"Value”} uuid5 {"field1@[engineer&(worker&contractor)]":

"Value”}

Page 50: Sqrrl June Webinar: An Accumulo Love Story

THIRTEENTH TRY

© 2014 Sqrrl | All Rights Reserved

uuid5 {"field1": "Value”} uuid5 {"field1@[root|(designer&(worker&contractor))]":

"Value”} uuid5 {"field1@[root|(engineer&(worker&contractor))]":

"Value”}

Page 51: Sqrrl June Webinar: An Accumulo Love Story

THIRTEENTH TRY

© 2014 Sqrrl | All Rights Reserved

I don’t like that...

uuid5 {"field1": "Value”} uuid5 {"field1@[root|(designer&(worker&contractor))]":

"Value”} uuid5 {"field1@[root|(engineer&(worker&contractor))]":

"Value”}

Page 52: Sqrrl June Webinar: An Accumulo Love Story

THIRTEENTH TRY 2

© 2014 Sqrrl | All Rights Reserved

Remember the policy engine!

LDAP knows all roles root->all roles

Page 53: Sqrrl June Webinar: An Accumulo Love Story

THIRTEENTH TRY 2

© 2014 Sqrrl | All Rights Reserved

All of my bases are covered!

Except...

Remember the policy engine!

LDAP knows all roles root->all roles

Page 54: Sqrrl June Webinar: An Accumulo Love Story

GETTING CRAFTY

© 2014 Sqrrl | All Rights Reserved

What if I want to: ●  Allow authorizations based on time ●  Allow authorizations based on location ●  Make data more available ●  Make data less available

Page 55: Sqrrl June Webinar: An Accumulo Love Story

BEING CRAFTY

© 2014 Sqrrl | All Rights Reserved

Remember the policy engine!

If you have the data available, you can use it!

Page 56: Sqrrl June Webinar: An Accumulo Love Story

COARSE ACCESS CONTROLS

© 2014 Sqrrl | All Rights Reserved

Accumulo Tables have Read permissions for coarse access.

These can be used to restrict access to an

entire table for a user.

This is also exposed through a pluggable mechanism.

Page 57: Sqrrl June Webinar: An Accumulo Love Story

PLUGGABLE SECURITY TO THE RESCUE

© 2014 Sqrrl | All Rights Reserved

Page 58: Sqrrl June Webinar: An Accumulo Love Story

PLUGGABLE SECURITY TO THE RESCUE

© 2014 Sqrrl | All Rights Reserved

Looks familiar… what is this?

Page 59: Sqrrl June Webinar: An Accumulo Love Story

PLUGGABLE SECURITY TO THE RESCUE

© 2014 Sqrrl | All Rights Reserved

tserver scan

Pluggable PermissionHandler

hasTablePermission() scan

Page 60: Sqrrl June Webinar: An Accumulo Love Story

DATA-CENTRIC SECURITY

© 2014 Sqrrl | All Rights Reserved

Sqrrl promotes Data-Centric Security.

Sqrrl encourages amalgamation of data for improved analytics. Coarse access breaks

this.

Page 61: Sqrrl June Webinar: An Accumulo Love Story

RECAP

© 2014 Sqrrl | All Rights Reserved

●  Label for the data, not the users ●  Label with the highest granularity

possible ●  Let the policy engine do the rest of the

work ●  Need to rely on external services or

special processes for tracking labels ●  These can manage users authorizations

and general access

Page 62: Sqrrl June Webinar: An Accumulo Love Story

RECAP

© 2014 Sqrrl | All Rights Reserved

Cell level security boils down to two separate components ●  Data labels ●  User granted labels They are the two halves that establish cell level security.

Page 63: Sqrrl June Webinar: An Accumulo Love Story

RECAP

© 2014 Sqrrl | All Rights Reserved

Cell level security boils down to two separate components ●  Data labels ●  User granted labels They are the two halves that establish cell level security. Put the two together, and magic happens.

Page 64: Sqrrl June Webinar: An Accumulo Love Story

© 2014 Sqrrl | All Rights Reserved

QUESTIONS?

@ohshazbot

[email protected]

SQRRL VISIBILITY LABELS AND PLUGGABLE AUTHORIZATION:

A LOVE STORY