Skip to main content

sync Cloudshell groups with AD Groups

Project description

Python 3.9 Lint and Test PyPI version

cloudshell-user-sync

A CLI tool to Sync LDAP / Active Directory Groups with Cloudshell groups. This package will pull LDAP data, compare state of cloudshell group, and add/remove users to sync the groups.

Important Notes

  • This package does NOT import/create users from LDAP - only syncs already imported users across groups.
  • Non-imported cloudshell users will NOT be evicted from a synced group.
    • This tool only aims to manage the imported ldap users.
    • Groups can be hybrid with "regular" users.
  • This tool can be configured to manage only a subset of cloudshell groups.
  • If possible, to improve performance of LDAP search, place target ldap users together under common root in LDAP Tree.
    • This will allow to set a lower base root DN (distinguished name) to allow quicker ldap searches.
    • Note that LDAP groups and users are not necessarily in same location of ldap tree

Installation

pip install cloudshell-user-sync

Commands

Commands:
  config        View or Set Config - Pass no params to view config
  credential    Set Credentials For Cloudshell and LDAP
  mapping       Set LDAP group --> Cloudshell Groups Mapping
  run           Pull LDAP Data and sync to Cloudshell
  runscheduler  Run sync on infinite scheduler
  service       Install Windows service to run job automatically
  version       Display CLI version
 

Basic Usage

  1. configure credentials (stored in OS specific credential manager)
  2. set config values for target cloudshell server
  3. Set config values for target LDAP server
  4. set LDAP -> Cloudshell Group Mappings
  5. Do manual sync run to test
  6. Configure service to run job automatically

Configure Credentials

Set Cloudshell Credential

usersync credential admin admin --target cloudshell

Set LDAP Credential

usersync credential CN=Administrator,CN=Users,DC=samplecorp,DC=example,DC=com LDAP_DN_Password --target ldap
  • User is the full distinguished name (DN) as seen in AD explorer

Set Config Values

Credentials must be set through CLI to be stored in credential manager. The other values can be set directly in file or optionally in CLI

Default Config Path:

  • Windows: C:\ProgramData\QualiSystems\CloudshellUserSync\ldap_config.json
  • Linux: /opt/CloudshellUserSync/ldap_config.json

view current config state

usersync config

CLI Set config actions follows the pattern:

usersync config <target> <key> <value>

Set cloudshell server details

usersync config cloudshell server localhost

Set ldap details

usersync config ldap server 10.0.0.7
usersync config ldap base_dn DC=samplecorp,DC=example,DC=com
  • base_dn is where the ldap search will start from
  • Filter scheme used is: (&(objectClass=user)(memberOf=<GROUP_DN>))

Set LDAP mappings

Can map one LDAP source group to multiple cloudshell groups (ie a list)

View only mapping config:

usersync mapping

Set mapping follows pattern:

usersync mapping <LDAP_GROUP_DN> --csgroups <CSGROUP1>,<CSGROUP2>,<CSGROUP3>

sample:

usersync mapping CN=nattigroup,DC=natticorp,DC=example,DC=com --csgroups <CSGROUP1>,<CSGROUP2>,<CSGROUP3>

Configure Windows Service

Install and run job as managed windows service.

Install service

usersync service install

Start Service

usersync service start

Notes:

  • Must run with Adminsistrator CMD to install / update service
  • After installation, must set service to run as same Logon user that ran install
    • This is so service can access windows credential manager with same user that set the credentials
  • Set startup type to auto
  • Check log to ensure no errors are occuring.
  • Set log level to debug to see more details on users found per LDAP request

Linux Service

No linux service generation command included. The following options are possible.

  • Schedule the "run" command to a cron job
  • Wrap the "runscheduler" command into a systemd service

Logs

Both manual runs and scheduled runs log to the same rotating log file.

  • Windows: C:\ProgramData\QualiSystems\CloudshellUserSync\Logs\UserSync.log
  • Linux: /opt/CloudshellUserSync/Logs/UserSync.log

Dependencies

  • LDAP3 for pulling source LDAP/AD data
  • Schedule as cross-platform cron-like scheduler
  • Keyring to store credentials in OS
  • Pywin32 - windows service installer
  • cloudshell-automation-api to update cloudshell groups

License

Free Software: MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudshell-user-sync-0.3.0.tar.gz (17.3 kB view hashes)

Uploaded Source

Built Distribution

cloudshell_user_sync-0.3.0-py3-none-any.whl (21.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page