openshift-aadsync

module
v0.0.0-...-8784027 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 18, 2019 License: MIT

README

OpenShift Azure AD Sync

The purpose of the code in this repo is to demonstrate how a set of Azure AD groups and their associated users can be synced into the OpenShift Groups running on an OpenShift cluster.

Azure AD

Follow the MS Graph Get access without a user documentation to understand how to create the Azure AD Client ID and Secret that are used by this controller.

Deploy

The AADGroupSync CRD and RBAC yaml in the kubernetes folder must be deployed before the controller will operate correctly.

AADGroupSync.crd.yaml
AADGroupSync.rbac-roles.yaml
AADGroupSync.rbac.yaml

The aadsync-controller binary is best deployed as a CronJob on a schedule that is suitable.

Autogenerated Code

The .sh scripts in the hack folder are used to autogenerate client and api code to handle the CRDs. This code is generated via the Kubernetes code generator k8s.io/code-generator, which is Apache 2.0 licensed.

The autogenerated code is in the pkg/aadsync/apis and pkg/aadsync/client folders and also Apache 2.0 licensed.

Exclusions

A controller that watches the aadgroupsyncs.aad.microsoft.com CRDs for changes and then pushes those changes to OpenShift Groups is not included in this repo.

Testing - Locally

You can test the controller locally, but need to ensure the following steps have been followed:

The following aadsyncClient lines must be uncommented:

# cmd/aadsync-controller/aadsync-controller.go
38: aadsyncClient := aadsyncclient.NewClientForLocal(controllerConfig.Namespace, log)

You will need controller config file location set via AADSYNC_CONTROLLER_CONFIGFILE environment variable. Here is an example of the controller config file.

# AzureAD Sync Controller Config
namespace: "openshift"
groups:
- "464e7cdd-b431-4e49-9aa7-8c6ef24c9dbc"
- "ca65a5de-3ca5-474a-8fc5-bee95dd3e335"

You will need the following environment variables set so that the controller can access the MS Graph API:

AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET

You can test retrieving an Azure AD token for accessing the MS Graph API as follows. This will ensure that you have the correct values set in your environment variables.

curl -d "client_id=$AZURE_CLIENT_ID&scope=https://graph.microsoft.com/.default&client_secret=$AZURE_CLIENT_SECRET&grant_type=client_credentials" -H "Content-Type: application/x-www-form-urlencoded" -X POST https://login.microsoftonline.com/$AZURE_TENANT_ID/oauth2/v2.0/token

You will need the following environment variables set so that the controller can access the Kubernetes API:

KUBERNETES_SERVICE_HOST
KUBERNETES_SERVICE_PORT
KUBERNETES_SERVICEACCOUNT_TOKENFILE (Found incluster at /var/run/secrets/kubernetes.io/serviceaccount/token)
KUBERNETES_SERVICEACCOUNT_ROOTCAFILE (Found incluster at /var/run/secrets/kubernetes.io/serviceaccount/ca.crt)

Testing - In Kubernetes

The following aadsyncClient lines must be uncommented:

# cmd/aadsync-controller/aadsync-controller.go
39: aadsyncClient := aadsyncclient.NewClient(controllerConfig.Namespace, log)

You will need controller config file mounted at the following location in the container:

/etc/aadsynccontroller/config.yaml

Here is an example of the controller config file.

# AzureAD Sync Controller Config
namespace: "openshift"
groups:
- "464e7cdd-b431-4e49-9aa7-8c6ef24c9dbc"
- "ca65a5de-3ca5-474a-8fc5-bee95dd3e335"

You will need the following environment variables set so that the controller can access the MS Graph API:

AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET

Run aadsync-controller binary with loglevel flag

aadsync-controller --loglevel debug
aadsync-controller --loglevel info
aadsync-controller --loglevel error

Debug prints out sensitive details for debugging ...

Contributing

This project welcomes contributions and suggestions. You can read more about how to contribute in the Contributing Guidelines

Code of conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Directories

Path Synopsis
source-code
pkg/aadsync/apis/aad.microsoft.com/v1
Package v1 is the v1 version of the API.
Package v1 is the v1 version of the API.
pkg/aadsync/client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
pkg/aadsync/client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
pkg/aadsync/client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
pkg/aadsync/client/clientset/versioned/typed/aad.microsoft.com/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
pkg/aadsync/client/clientset/versioned/typed/aad.microsoft.com/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL