Top Banner
©2010 CloudBees, Inc. All Rights Reserved ©2010 CloudBees, Inc. All Rights Reserved Securing Jenkins Kohsuke Kawaguchi Creator of the Hudson/Jenkins project ©2011 Cloud Bees, Inc. All Rights Reserved
32

Securing jenkins

Jan 14, 2015

Download

Technology

CloudBees

Kohsuke Kawaguchi, the creator of Jenkins outlines how to secure Jenkins. The webinar is available at:

https://www3.gotomeeting.com/register/250978006
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

©2010 CloudBees, Inc. All Rights Reserved

Securing Jenkins

Kohsuke Kawaguchi Creator of the Hudson/Jenkins project

©2011  Cloud  Bees,  Inc.  All  Rights  Reserved  

Page 2: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

2 ©2010 CloudBees, Inc. All Rights Reserved

©2011  Cloud  Bees,  Inc.  All  Rights  Reserved  

About CloudBees Our  Mission  

Strategy  

Become  the  leading  Java™  Pla@orm  as  a  Service  (PaaS)  

Why    We’re  Different  

CloudBees  services  the  complete  lifecycle  of  Cloud  applica>on  development  and  deployment.  No  Servers.  No  Virtual  Machines.  No  IT.  

§  DEV@cloud  –  Cloud  Services  for  Developers  

§  RUN@cloud  –  FricIonless  runIme  PaaS  for  Java  apps  

Page 3: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

3 ©2010 CloudBees, Inc. All Rights Reserved

Benefits  of  DEV@cloud  Jenkins  Service:  •  Scale  your  Jenkins  environment  with  the  power  of  the  Cloud  

•  Ease  your  Jenkins  management  overhead  •  Speed  your  builds  •  Save  money  with  on-­‐demand  Jenkins  Service.  Starts  from  $0/month  

 

©2011  Cloud  Bees,  Inc.  All  Rights  Reserved  

Continuous Integration - Jenkins

0  

5,000  

10,000  

15,000  

20,000  

25,000  

Jenkins Adoption

Source: jenkins-ci.org

Nectar  –  On-­‐Premise  Enterprise  Jenkins  •  Support  from  the  experts.  •  VMware  scale  your  Jenkins  environment.  •  Enterprise  Features  extend  Jenkins  for  large  environments.  

•  Integrate  with  the  Cloud  integraIon  with  DEV@Cloud  and  RUN@Cloud  coming  

 

Page 4: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

4 ©2010 CloudBees, Inc. All Rights Reserved

•  Architecture & modeling of access control in Jenkins

•  Walk-through of security related plugins/core

•  Practical tips in configuring security •  Security beyond access control

Idea Behind This Webinar

©2011  CloudBees,  Inc.  All  Rights  Reserved  

Page 5: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

5 ©2010 CloudBees, Inc. All Rights Reserved

•  Three extension points – Authentication: figuring out who you are – Permission: activity that may need protection – Authorization: are you allowed to do XYZ?

Access Control Architecture

Page 6: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

6 ©2010 CloudBees, Inc. All Rights Reserved

•  Figures out user ID and groups – For example, via username/password field

•  But not always. E.g., OpenID, SSO

– Often additional information as well •  e-mail address, full name, …

•  HTTP handling carries this around •  Plugins can control this completely

Authentication

Page 7: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

7 ©2010 CloudBees, Inc. All Rights Reserved

System-defined Identities

•  “anonymous” user – Automatically given to unauthenticated

requests •  “SYSTEM” user

– All background threads run under this identity. Supposed to have full access

•  “authenticated” group – Every non-anonymous user automatically

gets it

Page 8: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

8 ©2010 CloudBees, Inc. All Rights Reserved

•  Unit of activity to control access –  “Build a job”, “Create a view”, “Read Jenkins”,

etc. •  Organized in shallow tree structure

– A permission can imply others •  “Read job configuration” implies “Read job” •  “Administer” implies everything else

•  Plugins often define their permissions –  “Promote a build”, “Make a Maven release”, etc.

Permission

Page 9: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

9 ©2010 CloudBees, Inc. All Rights Reserved

Authorization

•  Given three parameters, decide OK/NG – Object

•  A job, view, root Jenkins object, etc.

– Permission – Subject (Identity)

•  Plugin can completely control the logic

Page 10: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

10 ©2010 CloudBees, Inc. All Rights Reserved

Architecture Key Points

•  Authentication and authorization are orthogonal – Authentication establishes the identity

(including membership) – Authorization uses that to decide OK/NG

•  So you get to mix and match

Page 11: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

11 ©2010 CloudBees, Inc. All Rights Reserved

PAM Authentication

•  Fancy way of saying Unix user authentication

•  It Just Works – Virtually zero configuration – Your ITops have already done the hard work

•  Picks up Unix group memberships •  Gets local user/group support for free

Page 12: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

12 ©2010 CloudBees, Inc. All Rights Reserved

Active Directory (plugin)

•  Windows equivalent of PAM – Richer

•  It Just Works, especially since 1.17 – Zero conf on Windows, very little on Unix – AD forest, sites, DC fail over, …

•  Picks up membership –  Including indirect ones

•  No WIA support yet

Page 13: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

13 ©2010 CloudBees, Inc. All Rights Reserved

LDAP

•  Supported well – Both binding modes, configurable group

search, e-mail address retrieval – Default configuration and inference that goes

beyond typical LDAP impl •  Caution: group name

– Earlier version turned “group” into “ROLE_GROUP”. Fixed in 1.404

•  But do you really need it?

Page 14: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

14 ©2010 CloudBees, Inc. All Rights Reserved

OpenID (plugin) •  Login aid mode

– Use OpenID instead of typing password – You’ve seen those on websites

•  SSO mode – Clicking “login” auto-initiates OpenID session – With proper OpenID server configuration, it

becomes password-less SSO – Better way of integrating with directory servers

•  Extensibility to support group memberships

Page 15: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

15 ©2010 CloudBees, Inc. All Rights Reserved

Script Realm (plugin)

•  Gist of authentication is:

•  Let people write a shell script to do that – Handy duct-tape solution for custom identity

systems

f:  (username,password)  ⇒  (group*)  or  “invalid”  

Page 16: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

16 ©2010 CloudBees, Inc. All Rights Reserved

Delegates to servlet container

•  Useful if… – You run Jenkins on an existing servlet

container – Your admin has already set it up for

authentication – You use directory servers that don’t support

OpenID •  Group membership support is clumsy

Page 17: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

17 ©2010 CloudBees, Inc. All Rights Reserved

Delegate to reverse proxy (plugin)

•  Let Apache does the authentication – For some people, this is easier and/or more

powerful •  Jenkins get it via HTTP header

Apache   Jenkins  X-­‐Forwarded-­‐User  

Page 18: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

18 ©2010 CloudBees, Inc. All Rights Reserved

Jenkins’ own user database

•  Retain user/password info in Jenkins – No external identity system needed – Optionally let people sign up via UI

•  No group support yet •  Very limited use case (or am I wrong?)

Page 19: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

19 ©2010 CloudBees, Inc. All Rights Reserved

Other Authentication Implementations

•  CAS •  Atlassian Crowd •  SourceForge Enterprise Edition •  CollabNet TeamForge •  ...

Page 20: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

20 ©2010 CloudBees, Inc. All Rights Reserved

Authorization

•  Several trivial implementations •  Really only two implementations

–  (Global) matrix security – Project-based matrix security

•  Calling for more plugins!

Page 21: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

21 ©2010 CloudBees, Inc. All Rights Reserved

Matrix security basics

•  Recap of the concept –  (subject,object,permission) → OK/NG

•  Matrix Implementation – Define (subject,permission) as a checkbox

matrix (aka ACL) – Honors all implied permissions – Honors all group memberships

Page 22: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

22 ©2010 CloudBees, Inc. All Rights Reserved

Global matrix security

•  Just one matrix for the entire Jenkins – Object doesn’t matter

•  Adequate so long as you don’t have black projects

Page 23: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

23 ©2010 CloudBees, Inc. All Rights Reserved

Per-project security

•  Global + separate matrix at each project – Optional –  Individual matrix inherits global matrix

•  “OR” semantics. No “deny” entry

•  Also note: – No mechanism to reuse matrix – Config job permission lets you edit project

matrix

Page 24: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

24 ©2010 CloudBees, Inc. All Rights Reserved

“Create job advanced” plugin

•  Works well with per-project matrix •  Grant the creator full access when a new

job is created – Can also grant anonymous read-access – From there, he can add others

Page 25: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

25 ©2010 CloudBees, Inc. All Rights Reserved

Tip: what groups am I in?

•  Visit http://yourserver/jenkins/whoAmI – Useful for checking what the server is seeing

Page 26: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

26 ©2010 CloudBees, Inc. All Rights Reserved

Tip: If you lock yourself out

•  Stop Jenkins •  vi $JENKINS_HOME/config.xml

•  Start Jenkins

 <useSecurity>false</useSecurity>  

Page 27: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

27 ©2010 CloudBees, Inc. All Rights Reserved

Cross-Site Request Forgery

•  Malicious pages on the internet can forge requests to Jenkins – Even if your Jenkins is access controlled – Attacked needs to know your intranet host

name and job name •  Not on by default for compatibility

Page 28: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

28 ©2010 CloudBees, Inc. All Rights Reserved

Security implications of letting people build

•  Build can be anything – Not only those who configure jobs, but those

who write code • … which isn’t any worse than “mvn install”

•  Mitigation – Audit trail

Page 29: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

29 ©2010 CloudBees, Inc. All Rights Reserved

Are your black projects really black?

•  All builds run as the same user – They can interfere/interact with each other – Command line arguments, environment

variables are all readable – Builds can see/modify the whole

$JENKINS_HOME if run on master

•  Mitigation –  Isolate to different machines

Page 30: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

30 ©2010 CloudBees, Inc. All Rights Reserved

Conclusions

•  Securing Jenkins Web UI – Two orthogonal axes: authentication &

authorization – CSRF

•  Securing Jenkins from untrusted builds – Several mitigation techniques – Ultimately, you may have to split instances

Page 31: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

31 ©2010 CloudBees, Inc. All Rights Reserved

Coming soon to Nectar

•  Folder support – organize jobs into a hierarchical structure – Set ACL at folder

•  No need to individually set ACL at jobs

•  Role-based access control support – Define roles, local groups – Control inheritance from ancestor ACLs

Page 32: Securing jenkins

©2010 CloudBees, Inc. All Rights Reserved

Q&A

©2011  CloudBees,  Inc.  All  Rights  Reserved  

Resources CloudBees

http://www.cloudbees.com/ Nectar

http://nectar.cloudbees.com/ Try Dev@Cloud

https://grandcentral.cloudbees.com/account/signup

Register for news from CloudBees http://www.cloudbees.com/company.cb

Upcoming training in London http://cloudbees.com/training.cb