SlideShare una empresa de Scribd logo
1 de 60
Securely explore your data
Accumulo Visibility Labels
and
Pluggable Authorization Systems:
A Love Story
John Vines
Engineer
Sqrrl Data, Inc.
john@sqrrl.com
WHAT MAKES
ACCUMULO SPECIAL
WHEN IT COMES TO
SECURITY?
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
CELL-LEVEL SECURITY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
CELL-LEVEL SECURITY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
tldr;
visibilities are like ACLs
CELL-LEVEL SECURITY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
tldr;
visibilities are like ACLs
...sort of
CELL-LEVEL SECURITY
THAT’S GREAT!
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What does it get me?
THAT’S GREAT!
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What does it get me?
Amalgamating data sources that are
segregated
THE SCENARIO:
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
I am a first time Accumulo user
I want to use it’s nifty features
I have no idea what I’m doing
FIRST TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Scan without JohnsLabel
FIRST TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Scan without JohnsLabel
*sad trombone*
Scan with JohnsLabel
FIRST TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Scan without JohnsLabel
*sad trombone*
Scan with JohnsLabel
row1 colf1:colq1 JohnsLabel
row1 colf2:colq1 JohnsLabel
row2 colf1:colq3 JohnsLabel
row3 colf1:colq1 JohnsLabel
row4 colf4:colq2 JohnsLabel
SECOND TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row1 colf1:colq1 JohnsApplication
row1 colf2:colq1 JohnsApplication
row2 colf1:colq3 JohnsApplication
row3 colf1:colq1 JohnsApplication
row4 colf4:colq2 JohnsApplication
SECOND TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What does my label even mean?
row1 colf1:colq1 JohnsApplication
row1 colf2:colq1 JohnsApplication
row2 colf1:colq3 JohnsApplication
row3 colf1:colq1 JohnsApplication
row4 colf4:colq2 JohnsApplication
THIRD TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row1 colf1:colq1 application1|application2
row1 colf2:colq1 application1
row2 colf1:colq3 application2
row3 colf1:colq1 application2
row4 colf4:colq2 application3
THIRD TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What about analytic4?
analytic5? 6?
row1 colf1:colq1 application1|application2
row1 colf2:colq1 application1
row2 colf1:colq3 application2
row3 colf1:colq1 application2
row4 colf4:colq2 application3
BACK TO THE DRAWING BOARD
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What am I trying to accomplish?
Why am I segregating my data?
FOURTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row1 colf1:colq1 org1|org2
row1 colf2:colq1 org1
row2 colf1:colq3 org2
row3 colf1:colq1 org2
row4 colf4:colq2 org1&org2
FOURTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Organizations are big!
row1 colf1:colq1 org1|org2
row1 colf2:colq1 org1
row2 colf1:colq3 org2
row3 colf1:colq1 org2
row4 colf4:colq2 org1&org2
FIFTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row1 colf1:colq1 subOrg1|subOrg2
row1 colf2:colq1 subOrg1
row2 colf1:colq3 subOrg2
row3 colf1:colq1 subOrg2
row4 colf4:colq2 subOrg1&subOrg2
What about if subOrgs change?
FIFTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What about if subOrgs change?
Why do these orgs have permission?
row1 colf1:colq1 subOrg1|subOrg2
row1 colf2:colq1 subOrg1
row2 colf1:colq3 subOrg2
row3 colf1:colq1 subOrg2
row4 colf4:colq2 subOrg1&subOrg2
SIXTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row1 colf1:colq1 accountsReceivable|payroll
row1 colf2:colq1 accountsReceivable
row2 colf1:colq3 payroll
row3 colf1:colq1 payroll
row4 colf4:colq2 accountsReceivable&payroll
Looks good!
SIXTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Looks good!
But now I need to manage users!
row1 colf1:colq1 accountsReceivable|payroll
row1 colf2:colq1 accountsReceivable
row2 colf1:colq3 payroll
row3 colf1:colq1 payroll
row4 colf4:colq2 accountsReceivable&payroll
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
okay… what is this?
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
tserver
scan
Pluggable
Authorizor
getAuths()
scan
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
tserver
scan
Pluggable
Authorizor
getAuths()
scan
Now we can use our existing system!
SEVENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
LDAP’s role-based access says:
User1->HR
User2->InternalConflicts
User3->Payroll
User4->Taxes
SEVENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
One less system to maintain!
LDAP’s role-based access says:
User1->HR
User2->InternalConflicts
User3->Payroll
User4->Taxes
SEVENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
One less system to maintain!
But our orgs are hierarchical!
LDAP’s role-based access says:
User1->HR
User2->InternalConflicts
User3->Payroll
User4->Taxes
EIGHTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Authorizor Says:
InternalConflicts->InternalConflicts,HR
Payroll->Payroll,Finance
Taxes->Finance,AccountsReceivable
EIGHTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
But what if I don’t want a certain org to
get a piece of data?
Authorizor Says:
InternalConflicts->InternalConflicts,HR
Payroll->Payroll,Finance
Taxes->Finance,AccountsReceivable
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What if I don’t want a certain org to get
a piece of data?
NINTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row5 colf1:colq3 designer&!manager
NINTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Accumulo does not support NOTs
row5 colf1:colq3 designer&!manager
NINTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Accumulo does not support NOTs
What are we trying to accomplish?
row5 colf1:colq3 designer&!manager
TENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row5 colf1:colq3 designer&(worker&contractor)
TENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
But I want others to know some part of
row5 colf1:colq!
row5 colf1:colq3 designer&(worker&contractor)
REMEMBER
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
ELEVENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row5 colf1:colq3 designer&(worker&contractor)
row5 colf1:colq3 engineer&(worker&contractor)
ELEVENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row5 colf1:colq3 designer&(worker&contractor)
row5 colf1:colq3 engineer&(worker&contractor)
But I still want the managers to know
that row5 colf1:colq3 exists!
TWELTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row5 colf1:colq3
row5 colf1:colq3 designer&(worker&contractor)
row5 colf1:colq3 engineer&(worker&contractor)
TWELTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
How can root look at everything?
row5 colf1:colq3
row5 colf1:colq3 designer&(worker&contractor)
row5 colf1:colq3 engineer&(worker&contractor)
THIRTEENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
row5 colf1:colq3
row5 colf1:colq3
root|(designer&(worker&contractor))
row5 colf1:colq3
root|(engineer&(worker&contractor))
THIRTEENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
I don’t like that...
row5 colf1:colq3
row5 colf1:colq3
root|(designer&(worker&contractor))
row5 colf1:colq3
root|(engineer&(worker&contractor))
THIRTEENTH TRY 2
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Remember the pluggable Authorizor!
LDAP knows all roles
root->all roles
THIRTEENTH TRY 2
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
All of my bases are covered!
Except...
Remember the pluggable Authorizor!
LDAP knows all roles
root->all roles
GETTING CRAFTY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
What if I want to:
● Allow authorizations based on time
● Allow authorizations based on location
● Make data more available
● Make data less available
BEING CRAFTY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Remember the pluggable Authorizor!
If you have the data available, you can use
it!
BEING CRAFTY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Remember the pluggable Authorizor!
If you have the data available, you can use
it!
Just remember- visibility labels are
filters. They’re not made for restricting
entire tables.
FOURTEENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Accumulo Tables have Read permissions
for coarse access!
FOURTEENTH TRY
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Accumulo Tables have Read permissions
for coarse access!
Can we do it to people who are missing
certain labels?
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Looks familiar…
what is this?
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
tserver
scan
Pluggable PermissionHandler
hasTablePermission()
scan
PLUGGABLE SECURITY TO THE RESCUE
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
tserver
scan
Pluggable PermissionHandler
hasTablePermission()
scan
Now we can use our existing system
for coarse access!
RECAP
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
● Label for the data, not the users
● Label with the highest granularity
possible
● Let the pluggable security 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
RECAP
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
Cell level security boils down to two
separate components
● Data labels
● User granted labels
They are the two halves that establish cell
level security.
RECAP
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
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.
© 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
QUESTIONS?
@ohshazbot
john@sqrrl.com
ACCUMULO VISIBILITY LABELS AND PLUGGABLE
AUTHORIZATION:
A LOVE STORY

Más contenido relacionado

Similar a Accumulo Summit 2014: Accumulo Visibility Labels and Pluggable Authorization Systems: A Love Story

Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
VMware Tanzu
 
Using Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a ServiceUsing Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a Service
Jean-Philippe PINTE
 

Similar a Accumulo Summit 2014: Accumulo Visibility Labels and Pluggable Authorization Systems: A Love Story (20)

Accumulo Summit 2014: Past and Future Threats: Encryption and Security in Acc...
Accumulo Summit 2014: Past and Future Threats: Encryption and Security in Acc...Accumulo Summit 2014: Past and Future Threats: Encryption and Security in Acc...
Accumulo Summit 2014: Past and Future Threats: Encryption and Security in Acc...
 
Sqrrl November Webinar: Encryption and Security in Accumulo
Sqrrl November Webinar: Encryption and Security in AccumuloSqrrl November Webinar: Encryption and Security in Accumulo
Sqrrl November Webinar: Encryption and Security in Accumulo
 
Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
 
MoDev East 2012 Presentation on Product Modernization
MoDev East 2012 Presentation on Product ModernizationMoDev East 2012 Presentation on Product Modernization
MoDev East 2012 Presentation on Product Modernization
 
Pivotal CenturyLink Cloud Platform Seminar Presentation: The Developer Experi...
Pivotal CenturyLink Cloud Platform Seminar Presentation: The Developer Experi...Pivotal CenturyLink Cloud Platform Seminar Presentation: The Developer Experi...
Pivotal CenturyLink Cloud Platform Seminar Presentation: The Developer Experi...
 
Pitching 101 for inside sales
Pitching 101 for inside salesPitching 101 for inside sales
Pitching 101 for inside sales
 
2014 Product Line
2014 Product Line2014 Product Line
2014 Product Line
 
MySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and ScalabilityMySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and Scalability
 
Custumer Experience 2016
Custumer Experience 2016Custumer Experience 2016
Custumer Experience 2016
 
Bitnami & Oracle Cloud Platform
Bitnami & Oracle Cloud PlatformBitnami & Oracle Cloud Platform
Bitnami & Oracle Cloud Platform
 
とあるエンジニアが旅に出てみた
とあるエンジニアが旅に出てみたとあるエンジニアが旅に出てみた
とあるエンジニアが旅に出てみた
 
Virtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin Knauf
Virtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin KnaufVirtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin Knauf
Virtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin Knauf
 
ABCD of Human Resources
ABCD of Human ResourcesABCD of Human Resources
ABCD of Human Resources
 
Using Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a ServiceUsing Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a Service
 
2014 x tend-a-step
2014 x tend-a-step2014 x tend-a-step
2014 x tend-a-step
 
2 Guide MySQL Cloud Service Provisioning.
2 Guide MySQL Cloud Service Provisioning.2 Guide MySQL Cloud Service Provisioning.
2 Guide MySQL Cloud Service Provisioning.
 
Real life-maf-2015-k scope-final
Real life-maf-2015-k scope-finalReal life-maf-2015-k scope-final
Real life-maf-2015-k scope-final
 
Securing your Rails application
Securing your Rails applicationSecuring your Rails application
Securing your Rails application
 
SYN308: How XenMobile integrates with NetScaler, XenDesktop and XenApp for co...
SYN308: How XenMobile integrates with NetScaler, XenDesktop and XenApp for co...SYN308: How XenMobile integrates with NetScaler, XenDesktop and XenApp for co...
SYN308: How XenMobile integrates with NetScaler, XenDesktop and XenApp for co...
 
Real life-maf-2015
Real life-maf-2015Real life-maf-2015
Real life-maf-2015
 

Último

Último (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Accumulo Summit 2014: Accumulo Visibility Labels and Pluggable Authorization Systems: A Love Story

  • 1. Securely explore your data Accumulo Visibility Labels and Pluggable Authorization Systems: A Love Story John Vines Engineer Sqrrl Data, Inc. john@sqrrl.com
  • 2. WHAT MAKES ACCUMULO SPECIAL WHEN IT COMES TO SECURITY? © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
  • 3. CELL-LEVEL SECURITY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
  • 4. CELL-LEVEL SECURITY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
  • 5. © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential tldr; visibilities are like ACLs CELL-LEVEL SECURITY
  • 6. © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential tldr; visibilities are like ACLs ...sort of CELL-LEVEL SECURITY
  • 7. THAT’S GREAT! © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What does it get me?
  • 8. THAT’S GREAT! © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What does it get me? Amalgamating data sources that are segregated
  • 9. THE SCENARIO: © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential I am a first time Accumulo user I want to use it’s nifty features I have no idea what I’m doing
  • 10. FIRST TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Scan without JohnsLabel
  • 11. FIRST TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Scan without JohnsLabel *sad trombone* Scan with JohnsLabel
  • 12. FIRST TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Scan without JohnsLabel *sad trombone* Scan with JohnsLabel row1 colf1:colq1 JohnsLabel row1 colf2:colq1 JohnsLabel row2 colf1:colq3 JohnsLabel row3 colf1:colq1 JohnsLabel row4 colf4:colq2 JohnsLabel
  • 13. SECOND TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row1 colf1:colq1 JohnsApplication row1 colf2:colq1 JohnsApplication row2 colf1:colq3 JohnsApplication row3 colf1:colq1 JohnsApplication row4 colf4:colq2 JohnsApplication
  • 14. SECOND TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What does my label even mean? row1 colf1:colq1 JohnsApplication row1 colf2:colq1 JohnsApplication row2 colf1:colq3 JohnsApplication row3 colf1:colq1 JohnsApplication row4 colf4:colq2 JohnsApplication
  • 15. THIRD TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row1 colf1:colq1 application1|application2 row1 colf2:colq1 application1 row2 colf1:colq3 application2 row3 colf1:colq1 application2 row4 colf4:colq2 application3
  • 16. THIRD TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What about analytic4? analytic5? 6? row1 colf1:colq1 application1|application2 row1 colf2:colq1 application1 row2 colf1:colq3 application2 row3 colf1:colq1 application2 row4 colf4:colq2 application3
  • 17. BACK TO THE DRAWING BOARD © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What am I trying to accomplish? Why am I segregating my data?
  • 18. FOURTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row1 colf1:colq1 org1|org2 row1 colf2:colq1 org1 row2 colf1:colq3 org2 row3 colf1:colq1 org2 row4 colf4:colq2 org1&org2
  • 19. FOURTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Organizations are big! row1 colf1:colq1 org1|org2 row1 colf2:colq1 org1 row2 colf1:colq3 org2 row3 colf1:colq1 org2 row4 colf4:colq2 org1&org2
  • 20. FIFTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row1 colf1:colq1 subOrg1|subOrg2 row1 colf2:colq1 subOrg1 row2 colf1:colq3 subOrg2 row3 colf1:colq1 subOrg2 row4 colf4:colq2 subOrg1&subOrg2 What about if subOrgs change?
  • 21. FIFTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What about if subOrgs change? Why do these orgs have permission? row1 colf1:colq1 subOrg1|subOrg2 row1 colf2:colq1 subOrg1 row2 colf1:colq3 subOrg2 row3 colf1:colq1 subOrg2 row4 colf4:colq2 subOrg1&subOrg2
  • 22. SIXTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row1 colf1:colq1 accountsReceivable|payroll row1 colf2:colq1 accountsReceivable row2 colf1:colq3 payroll row3 colf1:colq1 payroll row4 colf4:colq2 accountsReceivable&payroll Looks good!
  • 23. SIXTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Looks good! But now I need to manage users! row1 colf1:colq1 accountsReceivable|payroll row1 colf2:colq1 accountsReceivable row2 colf1:colq3 payroll row3 colf1:colq1 payroll row4 colf4:colq2 accountsReceivable&payroll
  • 24. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
  • 25. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential okay… what is this?
  • 26. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential tserver scan Pluggable Authorizor getAuths() scan
  • 27. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential tserver scan Pluggable Authorizor getAuths() scan Now we can use our existing system!
  • 28. SEVENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential LDAP’s role-based access says: User1->HR User2->InternalConflicts User3->Payroll User4->Taxes
  • 29. SEVENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential One less system to maintain! LDAP’s role-based access says: User1->HR User2->InternalConflicts User3->Payroll User4->Taxes
  • 30. SEVENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential One less system to maintain! But our orgs are hierarchical! LDAP’s role-based access says: User1->HR User2->InternalConflicts User3->Payroll User4->Taxes
  • 31. EIGHTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Authorizor Says: InternalConflicts->InternalConflicts,HR Payroll->Payroll,Finance Taxes->Finance,AccountsReceivable
  • 32. EIGHTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential But what if I don’t want a certain org to get a piece of data? Authorizor Says: InternalConflicts->InternalConflicts,HR Payroll->Payroll,Finance Taxes->Finance,AccountsReceivable
  • 33. © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What if I don’t want a certain org to get a piece of data?
  • 34. NINTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row5 colf1:colq3 designer&!manager
  • 35. NINTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Accumulo does not support NOTs row5 colf1:colq3 designer&!manager
  • 36. NINTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Accumulo does not support NOTs What are we trying to accomplish? row5 colf1:colq3 designer&!manager
  • 37. TENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row5 colf1:colq3 designer&(worker&contractor)
  • 38. TENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential But I want others to know some part of row5 colf1:colq! row5 colf1:colq3 designer&(worker&contractor)
  • 39. REMEMBER © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
  • 40. ELEVENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row5 colf1:colq3 designer&(worker&contractor) row5 colf1:colq3 engineer&(worker&contractor)
  • 41. ELEVENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row5 colf1:colq3 designer&(worker&contractor) row5 colf1:colq3 engineer&(worker&contractor) But I still want the managers to know that row5 colf1:colq3 exists!
  • 42. TWELTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row5 colf1:colq3 row5 colf1:colq3 designer&(worker&contractor) row5 colf1:colq3 engineer&(worker&contractor)
  • 43. TWELTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential How can root look at everything? row5 colf1:colq3 row5 colf1:colq3 designer&(worker&contractor) row5 colf1:colq3 engineer&(worker&contractor)
  • 44. THIRTEENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential row5 colf1:colq3 row5 colf1:colq3 root|(designer&(worker&contractor)) row5 colf1:colq3 root|(engineer&(worker&contractor))
  • 45. THIRTEENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential I don’t like that... row5 colf1:colq3 row5 colf1:colq3 root|(designer&(worker&contractor)) row5 colf1:colq3 root|(engineer&(worker&contractor))
  • 46. THIRTEENTH TRY 2 © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Remember the pluggable Authorizor! LDAP knows all roles root->all roles
  • 47. THIRTEENTH TRY 2 © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential All of my bases are covered! Except... Remember the pluggable Authorizor! LDAP knows all roles root->all roles
  • 48. GETTING CRAFTY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential What if I want to: ● Allow authorizations based on time ● Allow authorizations based on location ● Make data more available ● Make data less available
  • 49. BEING CRAFTY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Remember the pluggable Authorizor! If you have the data available, you can use it!
  • 50. BEING CRAFTY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Remember the pluggable Authorizor! If you have the data available, you can use it! Just remember- visibility labels are filters. They’re not made for restricting entire tables.
  • 51. FOURTEENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Accumulo Tables have Read permissions for coarse access!
  • 52. FOURTEENTH TRY © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Accumulo Tables have Read permissions for coarse access! Can we do it to people who are missing certain labels?
  • 53. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential
  • 54. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Looks familiar… what is this?
  • 55. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential tserver scan Pluggable PermissionHandler hasTablePermission() scan
  • 56. PLUGGABLE SECURITY TO THE RESCUE © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential tserver scan Pluggable PermissionHandler hasTablePermission() scan Now we can use our existing system for coarse access!
  • 57. RECAP © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential ● Label for the data, not the users ● Label with the highest granularity possible ● Let the pluggable security 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
  • 58. RECAP © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential Cell level security boils down to two separate components ● Data labels ● User granted labels They are the two halves that establish cell level security.
  • 59. RECAP © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential 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.
  • 60. © 2014 Sqrrl | All Rights Reserved | Proprietary and Confidential QUESTIONS? @ohshazbot john@sqrrl.com ACCUMULO VISIBILITY LABELS AND PLUGGABLE AUTHORIZATION: A LOVE STORY