Skip to main content
This is an updated and improved version of the GitHub integration! The v2 version of the GitHub integration adds provisioning support for repositories and modernizes the underlying architecture. If you’re setting up a GitHub connector with ConductorOne for the first time, you’re in the right place.Use this integration if your organization accesses GitHub at github.com. If you use a custom domain, follow the instructions to set up the GitHub Enterprise integration.

Capabilities

ResourceSyncProvision
Accounts
Repositories
Teams
Orgs
Secrets - API keys
The GitHub connector supports automatic account provisioning and deprovisioning. New accounts will send an invitation to the account owner; if an invitation is pending, the account status will be shown as Unspecified. Repository permissions that are inherited through team membership are labeled as such on the relevant entitlement’s Grants tab in the ConductorOne web app. This connector can sync secrets and display them on the Inventory page.

Gather GitHub credentials

Configuring the connector requires you to pass in credentials generated in GitHub. Gather these credentials before you move on. To set up the GitHub connector, you can choose to create a personal access token (classic), a fine-grained access token, or a GitHub app. You must set up the connector with a GitHub app to have the option of syncing secrets.

Option 1: Use a personal access token (classic)

Follow these instructions to integrate your GitHub instance by using a GitHub personal access token (classic).
A user with the Org Owner access in GitHub must perform this task.
If you’re using SAML single sign-on, avoid a You must grant your Personal Access token access to this organization error by following the Authorizing a personal access token for use with SAML single sign-on instructions in the GitHub documentation.
1
In GitHub, click your profile photo, then click Settings.
2
In the left sidebar, select Developer settings.
3
Click Personal access tokens > Tokens (classic).
4
Click Generate new token > Generate new token (classic).
5
Name your token (for example, ConductorOne Integration). Optionally, add a token expiration date.
6
Select the following Scopes:
  • repo - select all
  • admin:org - select all if using ConductorOne for GitHub provisioning (see the note below), or read::org otherwise
  • user - select all
The write::org scope is used by ConductorOne when automatically provisioning and deprovisioning GitHub access on your behalf. If you do not want ConductorOne to perform these tasks for you, do not give your token this scope.
7
Click Generate token. Carefully copy and save the new token.
If you use SAML SSO, you must authorize the PAT using these instructions.
That’s it! Next, move on to the connector configuration instructions.

Option 2: Use a fine-grained access token

Follow these instructions to integrate your GitHub instance by using a GitHub fine-grained personal access token.
A user with Org Owner access in GitHub must perform this task.
Before you begin: Make sure that your GitHub organization is set up to allow use of fine-grained personal access tokens by following the GitHub documentation on Setting a personal access token policy for your organization.
1
In GitHub, click your profile photo, then click Settings.
2
In the left sidebar, select Developer settings.
3
Click Personal access tokens > Fine-grained tokens.
4
Click Generate new token.
5
Name your token (for example, ConductorOne Integration) and set a token expiration date. Optionally, add a description.
6
In the Resource owner dropdown, select a resource owner. The token is able to access resources owned by the selected resource owner. Organizations will not appear unless they have opted in to fine-grained personal access tokens.
7
In the Repository access section of the page, select All repositories.
8
In the Permissions section of the page, give the token the following permissions:
  • Organization permissions:
    • Members: Read and write access
    • Custom organization roles: Read and write access
  • Repository permissions:
    • Administration: Read and write access
    • Metadata: Read-only access
The repository permissions are used by ConductorOne to sync and display data on repo membership, and to provision repository permissions for GitHub accounts. If you do not want ConductorOne to sync and display your GitHub organization’s repo data, do not give your token these permissions.
9
Click Generate token. Carefully copy and save the new token.
That’s it! Next, move on to the connector configuration instructions.

Option 3: Use a GitHub app

Follow these instructions to integrate your GitHub instance by using a GitHub app. This process creates a GitHub app that is only available to your GitHub organization, then generates an installation token for that app, which can be used to integrate the GitHub organization with ConductorOne. This creates the equivalent of a personal access token, but does not tie the token to a specific identity. If you want to integrate multiple GitHub organizations with ConductorOne, you must create an app and set up a connector for each one.
A user with the Org Owner permission in the GitHub organization to be integrated with ConductorOne must perform this task.
1
In GitHub, navigate to Your organizations > Settings.
2
In the left sidebar, select Developer settings.
3
Click GitHub Apps.
4
Click New GitHub App.
5
Give the app a globally unique name, such as “c1-integration-<org name>”. There is a 34 character limit.
6
In the Homepage URL field, enter a placeholder URL such as http://example.com. Because this app is not public, it does not have or need a website to direct other users to, so we can use a placeholder URL.
7
In the Callback URL field, enter a placeholder URL such as http://example.com. This app will not use a callback, so we can use a placeholder URL.
8
Check the Expire user authorization tokens and Enable Device Flow checkboxes to enable these settings.
9
In the Webhook section of the page, uncheck the Active checkbox to disable this setting.
10
In the Permissions section of the page, give the app the following permissions:
  • Repository permissions:
    • Administration: Read and write access
    • Metadata: Read-only access
  • Organization permissions:
    • Custom organization roles: Read and write access
    • Members: Read and write access
11
In the Where can this app be installed? section of the page, choose Only on this account. This limits the app’s scope to the GitHub Enterprise organization you’ve set it up on.
12
Click Create GitHub App. The app is created.
13
On the app’s details page, carefully copy and save the App ID.
14
Scroll down to the Private keys section of the app’s page and click Generate a private key.
15
Carefully save the private key file.
16
Finally, install the new app on your GitHub organization. Navigate to Developer Settings > GitHub Apps.
17
Find your app and click Edit > Install App.
18
Click Install next to the GitHub organization where you want to install the app.
19
Select the repositories the app can act on.
20
Click Install.
That’s it! Next, move on to the connector configuration instructions.

Configure the GitHub connector

To complete this task, you’ll need:
  • The Connector Administrator or Super Administrator role in ConductorOne
  • Access to the set of GitHub credentials generated by following the instructions above
Follow these instructions to use a built-in, no-code connector hosted by ConductorOne.
1
In ConductorOne, navigate to Admin > Connectors and click Add connector.
2
Search for GitHub v2 and click Add.
3
Choose how to set up the new GitHub connector:
  • Add the connector to a currently unmanaged app (select from the list of apps that were discovered in your identity, SSO, or federation provider that aren’t yet managed with ConductorOne)
  • Add the connector to a managed app (select from the list of existing managed apps)
  • Create a new managed app
4
Set the owner for this connector. You can manage the connector yourself, or choose someone else from the list of ConductorOne users. Setting multiple owners is allowed.If you choose someone else, ConductorOne will notify the new connector owner by email that their help is needed to complete the setup process.
5
Click Next.
6
Find the Settings area of the page and click Edit.
7
If you’re using a personal access token to set up the connector:
  1. Click Personal access token.
  2. Paste the token you generated into the Personal access token field.
  3. Optional. If you want to sync only specific GitHub organizations, enter the organizations’ names in the Orgs field. If you do not specify specific organizations, ConductorOne will sync all organizations.
  4. Optional. If you do not want to include archived repos in syncs, click to enable Omit archived repositories.
8
If you’re using a GitHub app to set up the connector:
  1. Click GitHub app.
  2. Enter your app ID into the GitHub app ID field.
  3. Click Choose file and upload your private key file.
  4. In the Organization field, enter the name of the GitHub organization associated with the GitHub app. You must enter a single organization name in this field or the connector configuration will fail.
  5. Optional. Click to enable Sync secrets. Synced secrets are displayed on the Inventory page.
  6. Optional. If you do not want to include archived repos in syncs, click to enable Omit archived repositories.
9
Click Save.
10
The connector’s label changes to Syncing, followed by Connected. You can view the logs to ensure that information is syncing.
That’s it! Your GitHub connector is now pulling access data into ConductorOne.