Jenkins Credentials Plugin: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 22: Line 22:
==Implementation Details==
==Implementation Details==


Credentials are stored in credentials.xml. The following example contains just one [[Jenkins_Security_Concepts#Username_with_Password|Username with Password]] credential with the ID "github-service-account". The corresponding user name is "someuser" and the password is stored in-line, encrypted with the Jenkins' server master key.  
Credentials are stored in $JENKINS_HOME/credentials.xml. The following example contains just one [[Jenkins_Security_Concepts#Username_with_Password|Username with Password]] credential with the ID "github-service-account". The corresponding user name is "someuser" and the password is stored in-line, encrypted with the Jenkins' server secret key. The secret key is stored in $JENKINS_HOME/secret.key.


<syntaxhighlight lang='xml'>
<syntaxhighlight lang='xml'>

Revision as of 23:34, 24 April 2018

External

Internal

Overview

The Credentials Plugin exposes an API for credential management. The API can be used by plugin authors to define credential types, integrate external credential stores with Jenkins and retrieve credentials those stores and existing stores and by users to manage credentials available in Jenkins. Concepts such as credential type, scope, domain, provider and store are Jenkins Credential Plugin concepts, but they are presented together with other Jenkins security concepts.

Credentials can be managed through the Web UI, via a REST API and with Jenkins CLI.

Internal Credential Store

The plugin provides a default internal credential store, stored in $JENKINS_HOME. The store is encrypted using a key that is also stored in $JENKINS_HOME. The JVM running Jenkins must have access to these files.


If a non-trusted user can gain access to the files in the J$ENKINS_HOME/secrets directory, all the secrets stored in the internal credential store are compromised.

Implementation Details

Credentials are stored in $JENKINS_HOME/credentials.xml. The following example contains just one Username with Password credential with the ID "github-service-account". The corresponding user name is "someuser" and the password is stored in-line, encrypted with the Jenkins' server secret key. The secret key is stored in $JENKINS_HOME/secret.key.

<com.cloudbees.plugins.credentials.SystemCredentialsProvider plugin="credentials@2.1.16">

  <domainCredentialsMap class="hudson.util.CopyOnWriteMap$Hash">

    <entry>
      <com.cloudbees.plugins.credentials.domains.Domain>
        <specifications/>
      </com.cloudbees.plugins.credentials.domains.Domain>

      <java.util.concurrent.CopyOnWriteArrayList>

        <com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
          <scope>GLOBAL</scope>
          <id>github-service-account</id>
          <description>The GitHub service account</description>
          <username>someuser</username>
          <password>{AQAAABAACBAQtYXny9ArxRUnfwpbmn+W69DtK4APgb7achwoFa1ecmk=}</password>
        </com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>

      </java.util.concurrent.CopyOnWriteArrayList>
    </entry>
  </domainCredentialsMap>