1Password SCIM Bridge

Pour la synchronisation des utilisateurs dans 1Password, il est nécessaire d'avoir une VM avec un service SCIM. 1Password fourni le logiciel sous la forme d'une image docker : docker.io/1password/scim. Au moment d'écrire cet article, la dernière version est v2.9.15. La mise en place du bridge SCIM consiste à faire tourner cette image docker et l'exposer via un lien WEB.

Il faut donc :

  • Un accès à la configuration du nom de domaine
  • Un système en mesure de faire fonctionner un container (Docker / Kubernetes / Cloud). Nous utiliserons une VM Docker dans notre exemple.
  • Un accès à la configuration admin de 1Password pour créer des tokens.
  • L'accès à la configuration du pare-feu pour les ouvertures de port.

Sur l'infrastructure client, il faut créer la VM, nous utiliserons un Debian dernière version, sans interface graphique et avec le minimum d'outil préinstallé. Nous y ajouterons installerons uniquement Docker Engine (voir la documentation de Docker pour l'installation).

Prérequis :

  • CPU : 1
  • Mémoire : 2 Go
  • Stockage : 20 Go
  • Iso : Debian 13 standard

Pré installation de la VM :

  • Choisir “install” sans installation graphique
  • Langue : Français
  • Pays : France
  • Clavier : Français
  • Nom de la machine : 1Password
  • Domaine :
  • Mettez en place de Mot de passe superutilisateur root
  • Créez un nouvel utilisateur
  • Créez le mot de passe pour l'utilisateur
  • Partitionner les disques : Assisté - utiliser un disque entier
  • Sélectionnez le disque > tout dans une seule partition (recommandé pour les débutants)
  • Appliquez les changements sur le disque
  • Utilisez le miroir deb.debian.org
  • Désélectionnez tout les utilitaires
  • Installez le GRUB sur /dev/sda

Mettre à jour l'index des paquets du système.

sudo apt update

Installer les dépendances nécessaires pour télécharger et gérer les certificats.

sudo apt install ca-certificates curl

Créer le répertoire destiné au stockage des clés GPG si celui-ci n'existe pas encore.

sudo install -m 0755 -d /etc/apt/keyrings

Télécharger la clé GPG officielle de Docker et l'enregistrer dans le répertoire dédié.

sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc

Ajuster les permissions afin que la clé soit lisible par tous les utilisateurs.

sudo chmod a+r /etc/apt/keyrings/docker.asc 

Ajouter le dépôt officiel Docker à la liste des sources APT du système.

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Mettre à jour l'index des paquets afin de prendre en compte le nouveau dépôt Docker.

sudo apt update
docker-compose.yaml
services:
  redis:
    command: --maxmemory 256mb --maxmemory-policy volatile-lru --save ""
    deploy:
      resources:
        reservations:
          cpus: "0.125"
        limits:
          memory: 512M
    healthcheck:
      test: redis-cli ping | grep PONG
    image: docker.io/redis
    restart: always
    networks: [op-scim]
    user: 999:999
  scim:
    depends_on: [redis]
    restart: always
    deploy:
      resources:
        reservations:
          cpus: "0.125"
        limits:
          memory: 512M
    env_file: ./scim.env
    environment: 
      OP_REDIS_URL: redis://redis:6379
      OP_TLS_DOMAIN: ${SCIM_TLS_DOMAIN:-}
      OP_LETSENCRYPT_EMAIL: ${SCIM_TLS_EMAIL:-admin@wcentric.com}
      OP_DEBUG: ${SCIM_DEBUG:-0}
      OP_CONFIRMATION_INTERVAL: ${SCIM_CONFIRMATION_INTERVAL:-300}
      OP_JSON_LOGS: ${SCIM_JSON_LOGS:-0}
      OP_PRETTY_LOGS: ${SCIM_PRETTY_LOGS:-0}
      OP_TRACE: ${SCIM_TRACE:-0}
      OP_PING_SERVER: ${SCIM_PING_SERVER:-0}

    image: docker.io/1password/scim:v2.9.15
    networks: [op-scim]
    ports:
      - "${SCIM_PORT:-443}:8443"
    secrets:
      - source: credentials
        target: /home/opuser/.op/scimsession
        uid: "999"
        gid: "999"
        mode: 0440
    user: 999:999
networks:
  op-scim:
    name: op-scim
secrets:
  credentials:
    file: ./scimsession
    name: credentials