Jenkins

Definition

Jenkins is an open-source automation server that facilitates continuous integration and continuous delivery (CI/CD) of software projects. It supports building, deploying, and automating software development processes with hundreds of plugins to integrate with various tools. Jenkins is highly customizable and can be configured to meet the specific needs of a development team, making it a popular choice for automating repetitive tasks in software development.

Secure Settings Example

# Jenkins security configuration example
jenkins:
  securityRealm:
    local:
      allowsSignup: false
  authorizationStrategy:
    loggedInUsersCanDoAnything:
      allowAnonymousRead: false
  remoting:
    enabled: false
  csrf:
    protection:
      enabled: true
  agentProtocols:
    - "JNLP4-connect"
    - "Ping"

Insecure Settings Example

# Jenkins insecure configuration example
jenkins:
  securityRealm:
    local:
      allowsSignup: true  # Allows anyone to create an account
  authorizationStrategy:
    loggedInUsersCanDoAnything:
      allowAnonymousRead: true  # Allows anonymous users to read
  remoting:
    enabled: true  # Enables potentially insecure remote access
  csrf:
    protection:
      enabled: false  # Disables CSRF protection
  agentProtocols:
    - "JNLP3-connect"  # Deprecated and insecure protocol
    - "JNLP4-connect"
    - "Ping"