108
Access Control Models: Controlling Resource Authorization

Access Control Models: Controlling Resource Authorization

Embed Size (px)

Citation preview

Page 1: Access Control Models: Controlling Resource Authorization

Access Control

Models: Controlling

Resource

Authorization

Page 2: Access Control Models: Controlling Resource Authorization

Access Control Models:

Controlling Resource

Authorization

Mark Niebergall

@mbniebergall

Page 3: Access Control Models: Controlling Resource Authorization

About Mark Niebergall

▪ PHP since 2005

▪ MS degree in MIS

▪ Senior Software Engineer

▪ UPHPU President

▪ SSCP, CSSLP Certified and SME

▪ Drones, fishing, skiing, father,

husband

Page 4: Access Control Models: Controlling Resource Authorization

Overview

Page 5: Access Control Models: Controlling Resource Authorization

Overview

Access request flow

Define applicable terminology

Cover primary Access Control Models

Discuss pros and cons of each model

Page 6: Access Control Models: Controlling Resource Authorization

Access Request

Flow

Page 7: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Page 8: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Page 9: Access Control Models: Controlling Resource Authorization

Authentication

Page 10: Access Control Models: Controlling Resource Authorization

Authentication

Know Own Are

Page 11: Access Control Models: Controlling Resource Authorization

Authentication

You are who you say you are

Verify identity

Page 12: Access Control Models: Controlling Resource Authorization

Subject

Page 13: Access Control Models: Controlling Resource Authorization

Subject

Also known as requestor

Human or non-person entity (NPE)

Page 14: Access Control Models: Controlling Resource Authorization

Subject

Making request to access resource

Page 15: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Page 16: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Page 17: Access Control Models: Controlling Resource Authorization

Resource

Page 18: Access Control Models: Controlling Resource Authorization

Resource

Also known as object

Protected from unauthorized use

Page 19: Access Control Models: Controlling Resource Authorization

Resource

Something the system has or does

▪ Data

▪ Functionality

▪ Hardware

Page 20: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Page 21: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Page 22: Access Control Models: Controlling Resource Authorization

Authorization

Page 23: Access Control Models: Controlling Resource Authorization

Authorization

Allow an authenticated subject

access to a resource

Page 24: Access Control Models: Controlling Resource Authorization

Authorization

Allow or deny

Subject action on object (CRUD)

Page 25: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Page 26: Access Control Models: Controlling Resource Authorization

Request Resource

Access

Authorize Request

Authenticate

Subject

Access Control Model

Page 27: Access Control Models: Controlling Resource Authorization

Definitions

Questions?

Authentication

Authorization

Subject

Resource

Page 28: Access Control Models: Controlling Resource Authorization

Access Control

Model

Page 29: Access Control Models: Controlling Resource Authorization

Access Control Model

Dictates who gets to do what

Page 30: Access Control Models: Controlling Resource Authorization

Access Control Model

Framework for making authorization

decisions

Page 31: Access Control Models: Controlling Resource Authorization

Access Control Model

Deciding subject access to

resources

Page 32: Access Control Models: Controlling Resource Authorization

Access Control Model

#4 on 2017 OWASP Top 10: Broken

Access Control

Page 33: Access Control Models: Controlling Resource Authorization

Access Control Model

Primary Access Control Models

▪ DAC: Discretionary

▪ MAC: Mandatory

▪ RBAC: Role Based

▪ ABAC: Attribute Based

Page 34: Access Control Models: Controlling Resource Authorization

1Discretionary (DAC)

Page 35: Access Control Models: Controlling Resource Authorization

DAC

House keys

Page 36: Access Control Models: Controlling Resource Authorization

Email

DAC

Page 37: Access Control Models: Controlling Resource Authorization

DAC

Files on system

Page 38: Access Control Models: Controlling Resource Authorization

DAC

Clans in gaming

Page 39: Access Control Models: Controlling Resource Authorization

DAC

Subject Resource

Page 40: Access Control Models: Controlling Resource Authorization

DAC

Object owner grants permission

based on subject identity

Access Control List (ACL)

Deny by default

Page 41: Access Control Models: Controlling Resource Authorization

DAC

Subject Resource Authorization

Alice Report Allow

Alice Finance Deny

Alice Customer Allow

Bob Report Allow

Bob Finance Deny

Bob Customer Deny

Page 42: Access Control Models: Controlling Resource Authorization

DAC

SELECT is_allow

FROM acl

WHERE subject = ‘Alice’

AND resource = ‘Customer’

LIMIT 1;

Page 43: Access Control Models: Controlling Resource Authorization

DAC

$acl = new Acl;

$alice = new User(‘Alice’);

$bob = new User(‘Bob’);

$customer = new Resource(‘Customer’);

$acl->allow($alice, $customer);

$acl->deny($bob, $customer);

$acl->isAllowed($alice, $customer);

$acl->isAllowed($bob, $customer);

Page 44: Access Control Models: Controlling Resource Authorization

DAC

Simple implementation

High operational overhead

Access at discretion of resource

owner

Page 45: Access Control Models: Controlling Resource Authorization

DAC

Questions?

Page 46: Access Control Models: Controlling Resource Authorization

2Mandatory (MAC)

Page 47: Access Control Models: Controlling Resource Authorization

MAC

Classified documents

Page 48: Access Control Models: Controlling Resource Authorization

MAC

Military intelligence

Page 49: Access Control Models: Controlling Resource Authorization

MAC

Blog

Page 50: Access Control Models: Controlling Resource Authorization

MAC

Leveled-up character in game

Page 51: Access Control Models: Controlling Resource Authorization

MAC

Search engine rules

Page 52: Access Control Models: Controlling Resource Authorization

MAC

Top Secret

Secret

Confidential

Subject Classification Resource

Page 53: Access Control Models: Controlling Resource Authorization

MAC

Object sensitivity

Subject security level or clearance

Write up, read down

Page 54: Access Control Models: Controlling Resource Authorization

MAC

Owner sets object label

System sets subject security level

Page 55: Access Control Models: Controlling Resource Authorization

MAC

Subject Security

LevelObject Label

Top Secret Secret Confidential

Top Secret Allow Allow Allow

Secret Deny Allow Allow

Confidential Deny Deny Allow

Page 56: Access Control Models: Controlling Resource Authorization

Subject Security Level

Alice Top Secret

Bob Secret

Clara Confidential

Object Label

Report Top Secret

Finance Secret

Customer Confidential

MAC

Level Name

1 Top Secret

2 Secret

Page 57: Access Control Models: Controlling Resource Authorization

MAC

Subject: Security

LevelObject: Label

Report: Top

SecretFinance: Secret

Customer:

Confidential

Alice: Top Secret Allow Allow Allow

Bob: Secret Deny Allow Allow

Clara: Confidential Deny Deny Allow

Page 58: Access Control Models: Controlling Resource Authorization

MAC

SELECT s.security_level

FROM subject s

JOIN security_level sl_s

ON sl_s.name = s.name

JOIN resource r

ON r.resource = ‘Report’

JOIN security_level sl_r

ON sl_r.name = r.name

AND sl_r.level <= sl_s.level

WHERE s.subject = ‘Alice’

LIMIT 1;

Page 59: Access Control Models: Controlling Resource Authorization

MAC

$accessControl = new Mac;

$topSecret = new Level(‘Top Secret’);

$secret = new Level(‘Secret’);

$alice = new User(‘Alice’);

$bob = new User(‘Bob’);

$finances = new Resource(‘Finances’);

$accessControl->addLevel($topSecret, 1)

->addLevel($secret, 2);

$accessControl->addUser($alice, $topSecret)

->addUser($bob, $secret);

$accessControl->addResource($finances, $secret);

$accessControl->isAllowed($alice, $finances);

Page 60: Access Control Models: Controlling Resource Authorization

MAC

Multilevel security

System and owner determine access

No flexibility

Moderate overhead

Page 61: Access Control Models: Controlling Resource Authorization

MAC

Questions?

Page 62: Access Control Models: Controlling Resource Authorization

3Role Based (RBAC)

Page 63: Access Control Models: Controlling Resource Authorization

RBAC

Amazon Prime

Page 64: Access Control Models: Controlling Resource Authorization

RBAC

User roles on a computer

Page 65: Access Control Models: Controlling Resource Authorization

RBAC

Medical care staff

Page 66: Access Control Models: Controlling Resource Authorization

RBAC

LARPing

Page 67: Access Control Models: Controlling Resource Authorization

RBAC

Multiplayer Games

Page 68: Access Control Models: Controlling Resource Authorization

RBAC

Role A

Role B

Role C

Role D

Subject Role Resource

Page 69: Access Control Models: Controlling Resource Authorization

RBAC

Subject assigned to role

Role granted access to resource

Page 70: Access Control Models: Controlling Resource Authorization

RBAC

Subject Role

Alice Accounting

Alice Orders

Bob Payroll

Clara Orders

Clara Reporting

Role Resource

Accounting Finance

Accounting Reports

Orders Inventory

Orders Shipments

Payroll Finance

Page 71: Access Control Models: Controlling Resource Authorization

RBAC

SELECT sr.subject, rr.resource

FROM subject_role sr

JOIN role_resource rr

ON rr.subject = sr.subject

AND rr.role = sr.role

WHERE sr.subject = ‘Alice’

AND rr.resource = ‘Report’

LIMIT 1;

Page 72: Access Control Models: Controlling Resource Authorization

RBAC

$accessControl = new Rbac;

$accounting = new Role(‘Accounting’);

$ordering = new Role(‘Ordering’);

$alice = new User(‘Alice’);

$bob = new User(‘Bob’);

$inventory = new Resource(‘Inventory’);

$accessControl->addRole($accounting)

->addRole($ordering);

$accessControl->addUser($alice)

->addUser($bob);

$accessControl->addResource($inventory);

$accessControl->addUserToRole($alice, $accounting);

$accessControl->addResourceToRole($inventory, $ordering);

$accessControl->isAllowed($alice, $ordering);

$accessControl->isAllowed($bob, $inventory);

Page 73: Access Control Models: Controlling Resource Authorization

RBAC

Role explosion

Toxic combinations

Page 74: Access Control Models: Controlling Resource Authorization

RBAC

Very common

Lower overhead

More scalable

Page 75: Access Control Models: Controlling Resource Authorization

RBAC

Questions?

Page 76: Access Control Models: Controlling Resource Authorization

4Attribute Based (ABAC)

Page 77: Access Control Models: Controlling Resource Authorization

ABAC

Electronic key card system

Page 78: Access Control Models: Controlling Resource Authorization

ABAC

Credit card with monitoring

Page 79: Access Control Models: Controlling Resource Authorization

ABAC

Airport security check

Page 80: Access Control Models: Controlling Resource Authorization

ABAC

Gaming activities

Page 81: Access Control Models: Controlling Resource Authorization

ABAC

Conditional authorization based on

attributes

Page 82: Access Control Models: Controlling Resource Authorization

ABAC

Policy driven

Page 83: Access Control Models: Controlling Resource Authorization

ABAC

Subject Action Resource Environment

Policy

Page 84: Access Control Models: Controlling Resource Authorization

ABAC

Subject Action Environment Resource Access

Manager Create Region A Customer Allow

Manager Update Region B Customer Deny

Data Entry CreateRegion A

Any HourCustomer Allow

Data Entry CreateRegion B

Day ShiftCustomer Allow

Data Entry Create

Region B

After

hours

Customer Deny

Page 85: Access Control Models: Controlling Resource Authorization

ABAC

Subject attributes

Action attributes

Resource attributes

Environment attributes

Page 86: Access Control Models: Controlling Resource Authorization

ABAC

Subject attributes

▪ Who

▪ Where

▪ Roles

▪ Affiliation

▪ Clearance

Page 87: Access Control Models: Controlling Resource Authorization

ABAC

Action attributes

▪ Create, POST

▪ Read, GET

▪ Update, PUT

▪ Delete, DELETE

▪ Execute

Page 88: Access Control Models: Controlling Resource Authorization

ABAC

Resource attributes

▪ Type

▪ Owner

▪ Classification

Page 89: Access Control Models: Controlling Resource Authorization

ABAC

Environment attributes

▪ Time

▪ Network

▪ Operating system

▪ Encryption method

Page 90: Access Control Models: Controlling Resource Authorization

ABAC

Policy Enforcement Point (PEP)

Policy Decision Point (PDP)

PEP sends authorization request to

PDP

Page 91: Access Control Models: Controlling Resource Authorization

ABAC

Gartner predicts 70% of all

businesses will use ABAC by 2020

Keeps eyes on ABAC

Page 92: Access Control Models: Controlling Resource Authorization

ABAC

Attempt to standardize ABAC

policies into XML format is mostly

dead, eXtensible Access Control

Markup Language (XACML)

Page 93: Access Control Models: Controlling Resource Authorization

ABAC

Refined access

Meets demand for more advanced

access control

API access control

Page 94: Access Control Models: Controlling Resource Authorization

ABAC

Typically start with RBAC

implementation and then build onto

it with policies

Custom implementation so no example

Page 95: Access Control Models: Controlling Resource Authorization

ABAC

Questions?

Page 96: Access Control Models: Controlling Resource Authorization

Implementation

Considerations

Page 97: Access Control Models: Controlling Resource Authorization

Considerations

Model Development Operational

DAC

MAC

RBAC

ABAC

Page 98: Access Control Models: Controlling Resource Authorization

Considerations

Model Scalability Granularity Sensitivity

DAC

MAC

RBAC

ABAC

Page 99: Access Control Models: Controlling Resource Authorization

Implementation Considerations

Use cases for application

Sensitivity of resources

Scalability of model

Granularity requirements

Page 100: Access Control Models: Controlling Resource Authorization

Implementation Considerations

Existing frameworks and projects

APIs, external interfaces

Page 101: Access Control Models: Controlling Resource Authorization

Implementation Considerations

Questions?

Page 102: Access Control Models: Controlling Resource Authorization

Review

Page 103: Access Control Models: Controlling Resource Authorization

Review

Page 104: Access Control Models: Controlling Resource Authorization

Review

DAC: simple, high overhead, ACL

MAC: user and resource

classification

RBAC: most common, role driven,

smaller overhead

ABAC: most advanced, policy driven

Page 105: Access Control Models: Controlling Resource Authorization

Review

Operational overhead vs

authorization needs

Consider current implementation

Consider future implementation

Page 106: Access Control Models: Controlling Resource Authorization

Credits

Page 107: Access Control Models: Controlling Resource Authorization

CREDITS

▪ NIST publication on ABAC

http://nvlpubs.nist.gov/nistpubs/specialpublications/NI

ST.sp.800-162.pdf

▪ ABAC for ZF2

https://github.com/Eye4web/Eye4webZf2Abac/blob/master/d

ocs/README.md

▪ Presentation template by SlidesCarnival

▪ Axiomatics webinar, May 2014

http://www.slideshare.net/Axiomatics/attribute-based-ac

cess-control-for-data-protection-webinar-may-8

▪ OWASP

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_

Project

Page 108: Access Control Models: Controlling Resource Authorization

Thanks!

Questions?

Mark Niebergall

@mbniebergall