Sign inSign up

lgosling/pim-activation

By lgosling

•Updated 6 months ago

Web-based PIM activation tool for Microsoft Entra ID roles, groups, and Azure resources

Image
Security
Developer tools
0

1.3K

lgosling/pim-activation repository overview

⁠PIM Activation Web

GitHub PowerShell 7+ Pode

A web-based Privileged Identity Management (PIM) tool for Microsoft Entra ID, PIM-enabled groups, and Azure Resources. Built with Pode (PowerShell HTTP server) running in Docker, with Entra ID OAuth 2.0 authentication.

⁠Key Features

  • Entra ID Roles — View and activate/deactivate directory roles with AU scope support
  • PIM Groups — Manage PIM-enabled security group memberships (member/owner)
  • Azure Resources — Activate/deactivate Azure subscription and resource roles
  • Saved Profiles — Save role combinations and activate them with two clicks
  • Activation History — History log with analytics and Entra audit log sync
  • Dark/Light Theme — Auto, light, or dark mode with full color customization

⁠Quick Start

⁠1. Pull the image
docker pull lgosling/pim-activation
⁠2. Create a .env file
ENTRA_TENANT_ID=your-tenant-id.onmicrosoft.com
ENTRA_CLIENT_ID=your-app-client-id
ENTRA_CLIENT_SECRET=your-app-client-secret
ENTRA_REDIRECT_URI=https://{FQDN}/api/auth/callback

Replace {FQDN} with your actual domain name (e.g. pim.corp.example.com).

⁠3. Add TLS certificate
mkdir -p certs
# Copy your CA-signed certificate:
cp /path/to/cert.pem certs/cert.pem
cp /path/to/key.pem  certs/key.pem
⁠4. Run
docker run -d \
  --name pim-activation \
  --env-file .env \
  -v ./certs:/etc/pim-certs:ro \
  -v ./config:/etc/pim-config:ro \
  -v pim-data:/var/pim-data \
  -v ./logs:/var/log/pim:rw \
  -p 443:8080 \
  -p 80:8081 \
  --dns 8.8.8.8 --dns 8.8.4.4 \
  lgosling/pim-activation

Or use the docker-compose.yml from the GitHub repository⁠.

⁠5. Open the UI

Navigate to https://{FQDN} — you'll be redirected to Entra ID for authentication.

⁠Environment Variables

VariableDefaultDescription
ENTRA_TENANT_IDrequiredEntra ID tenant ID
ENTRA_CLIENT_IDrequiredApp registration client ID
ENTRA_CLIENT_SECRETrequiredApp registration client secret
ENTRA_REDIRECT_URIrequiredOAuth redirect URI
HTTPS_PORT443Host port for HTTPS
HTTP_PORT80Host port for HTTP (redirects to HTTPS)
LOG_LEVELInformationVerbose, Debug, Information, Warning, Error
SESSION_TIMEOUT3600Session duration in seconds
INCLUDE_ENTRA_ROLEStrueEnable Entra ID directory roles
INCLUDE_GROUPStrueEnable PIM-enabled groups
INCLUDE_AZURE_RESOURCESfalseEnable Azure resource roles
INCLUDE_AUDIT_LOGStrueEnable Entra audit log sync

⁠DNS Note

This container uses Alpine Linux. Due to a musl libc DNS issue, you must provide external DNS servers (--dns 8.8.8.8 --dns 8.8.4.4) or use the provided docker-compose.yml. Without this, API calls to Microsoft Graph will fail.

⁠Documentation

Full documentation, app registration guide, and architecture details are available on GitHub⁠.

⁠License

MIT⁠

Tag summary

Content type

Image

Digest

sha256:44d0bba34…

Size

101.4 MB

Last updated

6 months ago

docker pull lgosling/pim-activation