Policy Based Device Access Security Position Paper to Device Access Policy Working Group

Similar documents
Policy-based WRT Security Access to device APIs

The Object Model Overview. Contents. Section Title

Securing OPC UA Client Connections. OPC UA Certificate handling with the OPC Data Client Development Toolkit s EasyOPCUA Client Objects

Requirements from the Application Software Extended Package for Web Browsers

User Scripting April 14, 2018

Setting Up Pro/Web.Link

BEAAquaLogic. Service Bus. Upgrade Guide

Chris Ainsley. Clean configuration - The foundation of clean code

Security Philosophy. Humans have difficulty understanding risk

Identity Provider for SAP Single Sign-On and SAP Identity Management

Salesforce.com Winter 18 Release

WebVM Security policy for device API access

Technical Overview. Version March 2018 Author: Vittorio Bertola

DreamFactory Customer Privacy and Security Whitepaper Delivering Secure Applications on Salesforce.com

Implementing a Numerical Data Access Service

ApacheCon NA How to Avoid Common Mistakes in OFBiz Development Presented by Adrian Crum

ACCESS NetFront TM Browser

Survey Creation Workflow These are the high level steps that are followed to successfully create and deploy a new survey:

Protection Goals of Protection Principles of Protection principle of least privilege Domain Structure need to know principle

TeamViewer 12 Manual Management Console. Rev

C1: Define Security Requirements

Real Application Security Administration

OPC XML-DA Client Driver PTC Inc. All Rights Reserved.

Schneider Electric License Manager

Null Service and Loopback Service Drivers Implementation Guide NetIQ Identity Manager. February 2018

Java Security. A Brief Introduction. Fred Long. The University of Wales, Aberystwyth UK. U.W. Aberystwyth CS25610/CHM5610. Java Security p.

TRAINING GUIDE. ArcGIS Online and Lucity

Policy Settings for Windows Server 2003 (including SP1) and Windows XP (including SP2)

Snapshot Best Practices: Continuous Integration

Logi Ad Hoc Reporting System Administration Guide

Identity, Authentication and Authorization. John Slankas

Oracle Database. Installation and Configuration of Real Application Security Administration (RASADM) Prerequisites

Simile Tools Workshop Summary MacKenzie Smith, MIT Libraries

Logi Ad Hoc Reporting System Administration Guide

Teiid Designer User Guide 7.5.0

How To Embed EventTracker Widget to an External Site

The PRIMA Grid Authorization System

DEVELOPER GUIDE PIPELINE PILOT INTEGRATION COLLECTION 2016

Phase I. Initialization. Research. Code Review. Troubleshooting. Login.aspx. M3THOD, LLC Project Documentation

Test Plan for Liberty Alliance SAML Test Event Test Criteria SAML 2.0

Chapter 1: Distributed Information Systems

Oracle Learn Cloud. What s New in Release 15B

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 9 May, Copyright 2017 MarkLogic Corporation. All rights reserved.

Oracle Communications Services Gatekeeper

Oracle Cloud Using the Trello Adapter. Release 17.3

An ios Static Library for Service Discovery and Dynamic Procedure Calls

SAS Event Stream Processing 4.3: Security

DB2 Web Query (REST based) Application Extension. Usage Instructions

Notification Features For Digital Content In A Mobile-Optimized Format

2 Apache Wink Building Blocks

October 08: Introduction to Web Security

Next Paradigm for Decentralized Apps. Table of Contents 1. Introduction 1. Color Spectrum Overview 3. Two-tier Architecture of Color Spectrum 4

Configuring Request Authentication and Authorization

Load testing with WAPT: Quick Start Guide

[GSoC Proposal] Securing Airavata API

Ubiquity Server Manual

Error Code 502 Proxy Error. The Requested

A New Model for Image Distribution

Teiid Designer User Guide 7.7.0

Configuring Content Authentication and Authorization on Standalone Content Engines

API Gateway Version September Validation Authority Interoperability Guide

P2: Collaborations. CSE 335, Spring 2009

Advanced ASP.NET Identity. Brock Allen

Revision History Overview Feature Summary Knowledge Management Policy Automation Platform Agent Browser Workspaces Agent Browser Desktop Automation

Checkbox Quick Start Guide

Database Systems: Design, Implementation, and Management Tenth Edition. Chapter 14 Database Connectivity and Web Technologies

Instructions for Partner- Signing Key Generation and Certificate Creation and Renewal

55191: Advanced SharePoint Development

Tabular Presentation of the Application Software Extended Package for Web Browsers

TRAINING GUIDE. Lucity GIS. Web Administration

Chapter 3. Architecture and Design

Cisco TrustSec How-To Guide: Central Web Authentication

User Guide. Version R92. English

Connector for Microsoft SharePoint 2013, 2016 and Online Setup and Reference Guide

API Gateway. Version 7.5.1

Cloud Services. Spam Manager. Quarantine Admin Guide

API Knowledge Coding Guide Version 7.2

Nabto SDK Nabto Serial Link Protocol

Setting Up Resources in VMware Identity Manager (On Premises) Modified on 30 AUG 2017 VMware AirWatch 9.1.1

LECT 8 WEB SECURITY BROWSER SECURITY. Repetition Lect 7. WEB Security

Click Studios. Passwordstate. Remote Session Launcher. Installation Instructions

ComponentSpace SAML v2.0 Developer Guide

Introduction to Security in Laserfiche 8.3 and later. White Paper

Pace University. Fundamental Concepts of CS121 1

Part of this connection identifies how the response can / should be provided to the client code via the use of a callback routine.

DESIGN PATTERN - INTERVIEW QUESTIONS

A Simple On-line Shopping System using Java's RMI

Schneider Electric Floating License Manager

IBM Security Access Manager Version 9.0 October Product overview IBM

Developing Applications with Java EE 6 on WebLogic Server 12c

Certified Secure Web Application Secure Development Checklist

Active Endpoints. ActiveVOS Platform Architecture Active Endpoints

3A01:.Net Framework Security

Illustration 1: The Data Page builder inputs specifying the model variable, page and mode

Secomea Remote Device Management

Design Proposal for Hive Metastore Plugin

Vision of J2EE. Why J2EE? Need for. J2EE Suite. J2EE Based Distributed Application Architecture Overview. Umair Javed 1

20486-Developing ASP.NET MVC 4 Web Applications

CSCE 120: Learning To Code

Grid4All Security User's Manual, Release 0.6

Transcription:

1 (8) Policy Based Device Access Security Position Paper to Device Access Policy Working Group

2 (8) 1. INTRODUCTION Nokia has implemented a policy-based device access security model for its Web runtime components: Web widgets and the browser. This paper describes those elements of the model that may be suitable for incorporation into a device access policy standard. The Nokia model describes a policy-based mechanism for making access control decisions when device APIs are invoked from Web content. As such the model specifies how policies are described and how they are used to make access decisions. In other words, the model describes policy mechanisms but does specify policies themselves, although policy requirements and possible policy defaults are clearly within the scope of a device access policy specification. The model also leaves out several other important aspects of the whole system: for example, the model provides a mechanism that can be used to map from Web content attributes, such as digital signatures, to access rights, but does not specify digital signatures. Similarly, the model provides a mechanism that can be used to get user input to access control decisions, but does not say anything about the user interface model, although it is widely recognized that the proper implementation of user interaction is essential to good security. The behavior of the system is described in terms of a policy engine and the algorithms used by the policy engine to make decisions. The security engine is treated as an external component to the Web browser or other execution context that is rendering Web content and that accesses device services on behalf of that content. This means, for example, that the model does not cover JavaScript or HTML security for example, the sandboxing of JavaScript contexts although JavaScript and HTML security models are clearly important in determining correct device access policies. The model also describes how the security engine can interact with the components that render Web content for example, the browser but this interaction is provided as an example and is not intended to propose required behavior. 2. SECURITY MODEL Access control decisions are needed when Web content for example, a Web widget accesses local services and data. The security engine does not itself control access, rather it acts similarly to what in XACML and SAML terminology is known as a Policy Decision Point (PDP). The security engine takes data about a service access request and uses this to compute an access decision based on trust and access policies. When accessing a local service, it is assumed that trusted code executing in the content engine context calls the security engine to get a decision about whether to allow access, but it is the trusted code that actually enforces the access decision, acting, in XACML or SAML terms, as a Policy Enforcement Point (PEP).This model implies that the security engine has nothing to say about how or when (or even if) access control is applied. This is up to the implementation of the Web content engine and/or of the device API implementation. An example of the interaction between Web content, the content engine (for example, the browser), the device API implementation, and the policy engine when making an access control decision is as follows:

3 (8) 1. The content engine loads the content and gets any needed content trust attributes, such as the origin URL or the digital signature. 2. The content engine queries the trust manager to get the trust domain of the content, passing the relevant trust attributes, and the path to the appropriate trust policy to the trust manager. 3. The content engine makes an API request, passing the trust domain to the device API implementation. 4. The device API implementation creates a security session with the access manager, passing the path to the appropriate access policy and the content trust domain. 5. The device API implementation asks the security manager for an access decision (via the security session) passing the required capabilities. Based on the result of the access control decision, the service invokes the requested operation or throws a security exception. This sequence may vary depending on the application launching the content and how the service is implemented. For installed content such as widgets, steps 1 and 2 may also be carried out by the installer, which stores the trust domain in the application registry where it can be retrieved by the Widget engine. Similarly, session state may be persisted so that, for example, user granted blanket permissions can be kept for use when the installed content is instantiated again. Also note that steps 4-5 can be carried out by the Web content engine rather than the service API implementation.

4 (8) 3. POLICY The security engine is policy driven so that trust and access control policies can be customized to a specific device and content engine instance instance. For example, a mobile operator may want to customize trust and access policies for their phones. Also, Web and widget content may use different policies. Policies are described in XML format via policy files, which are stored in protected locations so that they can only be modified by the policy owner (for example, the mobile operator). Policies have two components: trust policies and access control policies. 3.1 Trust Policies A simple trust policy file is: <?xml version="1.0" encoding="iso-8859-1"?> <trustpolicy> <defaultdomain name = "Untrusted"/> <domain name="nokiaservice"> <origin url = "http://www.nokia.com/services"/> <origin url = "http://www.nokia.com/services/music"/> </domain> <domain name="nokiapublic"> <origin url = "http://www.nokia.com"/> </domain> </trustpolicy> The trust policy provides mappings between properties of content artifacts and trust domains. In this case, the policy file provides mappings for several origin urls: Each domain is named in a <domain> tag containing one or more <origin> property tags. The policy also names a default domain for properties that are not mapped in any domain section. Policies can also name other properties, such as certificate fingerprints. Note that the mappings specified in a trust policy file are raw mappings that may not correspond to the property values associated with a code artifact. For example, content from http://www.nokia.com/services/maps to the NokiaService domain while http://www.nokia.com/products would be mapped to NokiaPublic by same-origin best matching rules. Property-specific matching rules are applied by the trust manager to translate actual content artifact properties to the mappings specified by trust policies. 3.2 Access Policies A sample access control policy is: <?xml version="1.0" encoding="iso-8859-1"?> <policy> <!-- an alias groups a set of capabilities under one name --> <alias name="userdatagroup"> <capability name="readuserdata" /> <capability name="writeuserdata"/> <!-- capability name="location"/--> <capability name="userenvironment"/> </alias> <alias name="networkgroup"> <capability name="networkservices"/> <capability name="localservices"/> </alias> <alias name="deviceresourcesgroup">

5 (8) <capability name="multimediadd"/> <capability name="readdevicedata"/> <capability name="writedevicedata"/> <capability name="commdd"/> <capability name="surroundingsdd"/> <capability name="networkcontrol"/> </alias> <domain name="untrusted"> <!-- always granted capabilities for this domain --> <capability name="userdatagroup"/> <capability name="networkgroup"/> <!-- user-grantable capabilities for this domain --> <user> <defaultscope type="session" /> <scope type="oneshot" /> <scope type="permanent" /> <capability name="deviceresourcesgroup"/> <capability name="location"/> </user> </domain> <domain name="operatorsigned"> <capability name="userdatagroup"/> <capability name="networkgroup"/> <capability name="deviceresourcesgroup"/> <capability name="location"/> </domain> </policy> The basic function of the access control policy is to define the capabilities assigned to a set of trust domains. Each <domain> tag defines the capabilities of one domain. Within each domain section the capabilities are listed by <capability> tags. Capabilities listed within the domain section itself are granted unconditionally. Capabilities that can be granted based on user choice are listed in one or more <user> sections under the domain. Each user section defines the scopes for which a user is allowed to grant access, via one or more <scope> tags. The possible scopes are one-shot, which allows a single access, session, which allows access for the duration of an application session, and permanent, which allows access for the current and future sessions until revoked by the user. The optional <defaultscope> provides a hint as to which scope should be offered as the default to the user (Note that <defaultscope> is also a scope, so no scope tag with the same value is required.) User choice is typically implemented by prompting, but the security engine does not control how user choice is offered. Instead, the security engine supports a userconditionhandler callback interface so that the calling code can implement user choice in whatever style it wants. For example, the user can be prompted for a yes/no decision on the default scope or can be offered a list of all the allowed scopes with the default scope set as the default choice. Similarly, the user can be prompted only once for all of the capabilites listed in a user section, or can be prompted individually for each one. User choices are an example of conditional capabilities (similar to conditions in the OSGI R4 security model). These are capabilities that are are granted based on some runtime condition in this case user choices made in response to prompts. User capabilities are the only conditional capabilities currently implemented, but the underlying architecture supports a generic condition model so that other condition types can be easily implemented (for

6 (8) example, a capabilities granted based on network connectivity could limit high-bandwidth, expensive network operations to cases where a device has LAN connectivity). From the point of view of the security engine, capabilities are simply names: they have no inherent semantics. Access checking simply compares the names of required capabilities against the names granted by policy. As a matter of convenience, policies can also define <alias> tags that create new names for sets of capabilities, but these are subject to slightly different processing rules when computing access decisions. 3.3 Access Computation 3.3.1 Capability tests The security engine calculates access decisions by implementing an isallowed() operation that uses three parameters: a list of required capabilities, a trust domain, and a policy. Clients of the security engine access this operation via a security engine session object which specifies the trust domain and policy. The trust domain is supplied by the client when creating the session. The security engine maintains an internal representation of the policy. The security engine creates this by reading a policy file or by recreating a policy from a persisted policy. (See Section 3.3.4) The client supplies either the policy file or a persisted policy key when creating the session. The client invokes the isallowed() operation, passing the list of required capabilities as a parameter. 1. The security engine generates an allowed capability list from the input trust domain and policy. The allowed capability list is an unordered list of unconditional and conditional capabilities. Unconditional capabilities contain a capability name. Conditional capabilities contain a capability name and a reference to a condition. Conditions implement an ismet() operation that the security engine uses to decide whether to grant the capabilities associated with a condition. For user conditions, each condition contains an unordered list of allowable scopes and any default scope hint. User conditions also hold the current grant state of session and permanent grants. Each allowable session and permanent grant can be marked as one of untested, granted, or denied. Finally, user conditions contain a reference to user condition handler callback operation implemented by the client. User conditions are shared among all of the conditional capabilities listed in a <user> section of the policy, so that all capabilities in a section share the same current grant state. 2. For each capability in the required capabilities list: If the required capability is found in the allowed capability list and is unconditional, processing continues to the next required capability. If the required capability is found in the allowed capability list and is conditional, the security engine calls the condition s ismet() operation (see 3.3.3). If this returns false, processing stops and isallowed() returns false. If ismet() returns true, processing continues to the next required capability. If the required capability is not found in the allowed capability list, the security engine checks for any aliases that name the required capability. If none are found, then processing stops and isallowed() returns false. If aliases for the required property are found, then the security engine checks to see if at least one of them is unconditionally or conditionally allowed. If one of them is allowed,

7 (8) 3.3.2 Ambiguities processing continues to the next required capability. If none of them is allowed, then processing stops and isallowed() returns false. If processing reaches the end of the required capability list without returning false, isallowed() returns true. Note that the required capability list is treated as an unordered set and that all required capabilities must be granted for isallowed() to return true. Policies allow a capability and one or more aliases that name the capability to be listed in a trust domain. According to the rules specified in 3.3.1 if a required capability is explicitly named in the allowed capability list, then its aliases will not be checked. This means that if a conditional check of an explicitly named capability fails, then the capability will not be allowed even if some alias would have allowed this capability. Also note that an alias named in the required capability list is checked in the same way as any other required capability. If both a capability and an alias that names that capability are specified in the required capability list, both the capability and the alias capability checks must succeed for isallowed() to return true. These rules insure that there will be no ambiguity when both a capability and an alias that names this capability are both listed in a trust domain. Policies do not allow a capability or an alias to be listed more than once within a trust domain. For example, a capability cannot be listed both as a conditional and unconditional capability or be listed in more than one condition within a domain. If a capability or alias is listed more than once, then the results of condition evaluation are not defined. Finally, each condition section groups together a set of capabilities that will be evaluated together under the control of a single condition. This means that if the condition is met for any of the capabilities, then it is met for all of the capabilities. In some cases, it may be desirable for capabilities with the same conditional test (for example, user conditions that name the same default and allowed scopes) to be evaluated separately. In such a case, the capabilities should be named in different conditional sections. 3.3.3 Condition Evaluation Each condition supports an ismet() operation. For user conditions, this is calculated as follows: 1. If the the allowable scopes contains session scope and the current grant state marks session scope as granted, ismet() returns true. 2. If the the allowable scopes contains permanent scope and the current grant state marks permanent scope as granted, ismet() returns true. 3. If the condition contains a non-null reference to a user condition handler callback the user condition calls the handler. If the handler returns false, ismet() returns false. If the handler returns true, ismet() returns true. If the user condition handler reference is null, ismet() returns false. The user condition calls the user condition handler with three in parameters the list of capability names associated with the condition, and the list of allowable scopes, and the default scope hint and one in/out parameter the current grant state. The user condition handler typically uses these parameters to prompt the user, but it is up to the handler to decide what prompting behavior to implement. The user condition handler is expected to set the current grant state to reflect any granted scopes. (Note that marking a scope as

8 (8) 3.3.4 Persistence denied is meaningful only to the condition handler: this is not used by the condition s ismet() logic which only checks for grants. The denied flag can be used by the user condition handler to decide whether to prompt again for a grant that was previously denied during a session.) The security engine can serialize the current state of user grants during a session. When a session is persisted, the current grant state of any user permanent grants is persisted with the session. Neither session grants nor denials are persisted. When a session is recreated from persistent state, an persisted permanent grants are marked as granted in the current state of user grants. All other scopes are marked as untested. 3.4 Capabilities Policies are written in terms of capabilities but the policy model says nothing about the semantics of capabilities. For example, the policy model would allow capabilities to be treated simply as opaque strings. However, a specification of device APIs must include the capabilities required to access each operation or service in order to make it possible to write meaningful policies and to successfully deploy content. For example, content might need to be signed, based on policies and the capabilities required to access the APIs invoked from the content. Furthermore, in order to create a device API ecosystem that is consistent across a wide variety of platforms, a device API standard probably needs to say something about capability semantics: for example, to specify a set of capability names and to describe how they are intended to be mapped to the kinds of operations and data relevant to device APIs. In other words, capability semantics are clearly relevant to device access policy standard specification. Nevertheless, capability semantics are not specified here because it seems advantageous to define a policy model that is independent of specific capability models. For example, capability models may be abstract, defining capabilities for generic operations like reading and writing, or they may be concrete, specifying capabilities for specific interfaces or operations on those interfaces, such as sendmessage. In our opinion, concrete capability models are easier to specify, easier to interpret and more extensible, but the Nokia policy model was specifically designed to support both abstract and concrete capability models since we needed support existing abstract capability models native to some Nokia devices.