Inside DigitalOcean’s SOX Compliance Playbook

ConductorOne docs

Set up a GitHub v2 connector

ConductorOne provides identity governance and just-in-time provisioning for GitHub. Integrate your GitHub instance with ConductorOne to run user access reviews (UARs), enable just-in-time access requests, and automatically provision and deprovision access.

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 integration 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

Available hosting methods

Choose the hosting method that best suits your needs:

MethodAvailabilityNotes
Cloud hostedA built-in, no-code connector hosted by ConductorOne.
Self-hostedThe GitHub connector, hosted and run in your own environment.

Gather GitHub credentials

Each setup method 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 either a personal access token (classic) or a fine-grained access token.

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.

  1. Click Generate token. Copy and save the new token. We’ll use it in Step 2.

If you use SAML SSO, you must authorize the PAT using these 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
    • 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.

  1. Click Generate token. Copy and save the new token.

That’s it! Next, move on to the instructions for your chosen setup method.

Set up a GitHub cloud-hosted 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
  1. In ConductorOne, click Connectors > 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. Paste the token you generated into the Personal access token field.

  8. 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.

  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.

Set up a GitHub cloud-hosted connector using Terraform

As an alternative to the cloud-hosted setup process described above, you can use Terraform to configure the integration between GitHub and ConductorOne.

See the ConductorOne GitHub v2 integration resource page in the ConductorOne Terraform registry for example usage and the full list of required and optional parameters.

Set up a GitHub self-hosted 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

When running in service mode on Kubernetes, a self-hosted connector maintains an ongoing connection with ConductorOne, automatically syncing and uploading data at regular intervals. This data is immediately available in the ConductorOne UI for access reviews and access requests.

Why use Kubernetes? Kubernetes provides automated deployment, scaling, and management of your connectors. It ensures high availability and reliable operation of your connector services.

Step 1: Configure the GitHub connector

  1. In ConductorOne, navigate to Connectors > Add connector.

  2. Search for Baton 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. In the Settings area of the page, click Edit.

  7. Click Rotate to generate a new Client ID and Secret.

    Carefully copy and save these credentials. We’ll use them in Step 2.

Step 2: Create Kubernetes configuration files

Create two Kubernetes manifest files for your GitHub connector deployment:

Secrets configuration

# baton-github-secrets.yaml
apiVersion: v1
kind: Secret
metadata:
  name: baton-github-secrets
type: Opaque
stringData:
  # ConductorOne credentials
  BATON_CLIENT_ID: <ConductorOne client ID>
  BATON_CLIENT_SECRET: <ConductorOne client secret>
  
  # GitHub credentials
  BATON_TOKEN: <GitHub access token>

  # Optional: include if you want ConductorOne to provision access using this connector
  BATON_PROVISIONING: true

See the connector’s README or run --help to see all available configuration flags and environment variables.

Deployment configuration

# baton-github.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: baton-github
  labels:
    app: baton-github
spec:
  selector:
    matchLabels:
      app: baton-github
  template:
    metadata:
      labels:
        app: baton-github
        baton: true
        baton-app: github
    spec:
      containers:
      - name: baton-github
        image: ghcr.io/conductorone/baton-github:latest
        args: ["service"]
        imagePullPolicy: IfNotPresent
        envFrom:
        - secretRef:
            name: baton-github-secrets

Step 3: Deploy the connector

  1. Create a namespace in which to run ConductorOne connectors (if desired):

    kubectl create namespace baton-github
    
  2. Apply the secret configuration:

    kubectl -n baton-github apply -f baton-github-secrets.yaml
    
  3. Apply the deployment:

    kubectl -n baton-github apply -f baton-github.yaml
    

Step 4: Verify the deployment

  1. Check that the deployment is running:

    kubectl -n c1 get pods
    
  2. View the connector logs:

    kubectl -n c1 logs -l app=baton-${baton-github}
    
  3. Check that the connector data uploaded correctly. In ConductorOne, click Applications. On the Managed apps tab, locate and click the name of the application you added the GitHub connector to. GitHub data should be found on the Entitlements and Accounts tabs.

That’s it! Your GitHub connector is now pulling access data into ConductorOne.