Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JW2016: Ownership Plugin Demo

JW2016: Ownership Plugin Demo

The presentation contains slides from the Ownership Plugin demo I have conducted at the community booth during Jenkins World 2016. This demo addresses main features provided by the plugin:

* Ownership management of jobs, nodes and folders
* Ownership-based security (Role Strategy macros, Job restrictions, etc.)
* Provisioning of ownership info to classic and Pipeline jobs

Oleg Nenashev

September 16, 2016
Tweet

More Decks by Oleg Nenashev

Other Decks in Programming

Transcript

  1. Jenkins World #JenkinsWorld Ownership Plugin & Ownership-based Security Demo Oleg

    Nenashev © 2016 CloudBees, Inc. All Rights Reserved
  2. Jenkins World #JenkinsWorld Ownership Plugin & Ownership- based Security Demo

    Oleg Nenashev • Jenkins core contributor • JAM and Jenkins Online Meetup organizer • Maintainer of plugins @oleg_nenashev oleg-nenashev onenashev
  3. Jenkins World #JenkinsWorld Problem Statement • Need: Security engine for

    large-scale instances –Thousands of jobs –Hundreds of active users –Restricted access to jobs and nodes • Which is... –Easily manageable –Flexible –Fast, really fast © 2016 CloudBees, Inc. All Rights Reserved
  4. Jenkins World #JenkinsWorld Common strategies do not “just work” •Project

    Matrix Authorization Strategy –Hard to manage –No support of Node permissions •Role-Based Strategy –Regular expression for each role –Hundreds of Regex checks every request ???? –Web UI easily hangs © 2016 CloudBees, Inc. All Rights Reserved
  5. Jenkins World #JenkinsWorld Ownership-based Security © 2016 CloudBees, Inc. All

    Rights Reserved Role- Strategy Ownership Job Restrictions • First version have been developed at Synopsys, Inc. • Large instances powered by Jenkins OSS • Assign owners of jobs/nodes • Fancy UI • Auth strategy • Macro engine • Restrict runs of jobs and nodes
  6. Jenkins World #JenkinsWorld Ownership Info. Definition and Inheritance © 2016

    CloudBees, Inc. All Rights Reserved Folders Jobs Nodes Runs Sub- Projects
  7. Jenkins World #JenkinsWorld Demo. What’s inside? © 2016 CloudBees, Inc.

    All Rights Reserved Ownership 0.9.0 Job Restrictions 0.5 Security Inspector 0.1-alpha-1 Jenkins core 2.7.4 (minimal – 1.625) Authorize Project 1.2.2 Dynamic Search View 0.2.2 Role Strategy 2.3.2
  8. Jenkins World #JenkinsWorld Ownership Info. What Do you get? ©

    2016 CloudBees, Inc. All Rights Reserved • Ownership Summary Boxes • Ownership View Columns • View Filters • Also: @Me macro Customizable layout
  9. Jenkins World #JenkinsWorld #JenkinsWorld Jobs. Securing access © 2016 CloudBees,

    Inc. All Rights Reserved Untrusted secondary owners!
  10. Jenkins World #JenkinsWorld #JenkinsWorld Jobs. Authorize Project © 2016 CloudBees,

    Inc. All Rights Reserved Jobs get authenticated as owners => • Permissions • Node access (Computer.BUILD)
  11. Jenkins World #JenkinsWorld #JenkinsWorld Jenkins nodes © 2016 CloudBees, Inc.

    All Rights Reserved • Similar Ownership Management • Special permission • Node Ownership Monitor • => info in the table
  12. Jenkins World #JenkinsWorld #JenkinsWorld Protecting Master © 2016 CloudBees, Inc.

    All Rights Reserved • NEVER let users run jobs on master • Only use it for system jobs owned by admins
  13. Jenkins World #JenkinsWorld Out of scope: Extra features • Item-specific

    security –Plugging Matric Project Security into Ownership Engine • Ownership-based restrictions for triggering jobs • Ownership assignment policy on create/copy • Groovy API for System Scripts (needs some love) • “sudo” mode implementation for admins © 2016 CloudBees, Inc. All Rights Reserved
  14. Jenkins World #JenkinsWorld Q&A? • Gitter: –https://gitter.im/jenkinsci/ownership-plugin • Also links:

    –https://wiki.jenkins- ci.org/display/JENKINS/Ownership+Plugin © 2016 CloudBees, Inc. All Rights Reserved
  15. Jenkins World #JenkinsWorld Concept © 2016 CloudBees, Inc. All Rights

    Reserved Authorization strategy Integrations • Queue dispatchers => hundreds tasks in queue • Permission checks in UI rendering => hundreds of items => different permissions