Ceci est une ancienne révision du document !


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

Installer Docker Engine ainsi que les composants associés.

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Vérifier que le service Docker est actif.

sudo systemctl status docker

Si le service n'est pas démarré, le lancer manuellement.

sudo systemctl start docker

Vérifier le bon fonctionnement de l'installation en exécutant le conteneur de test Hello World.

sudo docker run hello-world

Cette commande télécharge l'image de test hello-world puis l'exécute dans un conteneur. Un message de confirmation s'affiche lorsque l'installation est correctement réalisée.

Docker Engine est maintenant installé et prêt à être utilisé.

Télécharger l'image Docker de 1Password SCIM Bridge depuis Docker Hub.

sudo docker pull 1password/scim:v2.9.15

Vérifier que l'image a bien été téléchargée sur le système.

docker images

L'image 1password/scim avec le tag v2.9.15 doit apparaître dans la liste des images Docker disponibles.

Créer un dossier 1password dans le répertoire /etc.

mkdir /etc/1password

Pour supprimer un dossier.

rmdir /etc/1password

Créer ensuite le fichier de configuration

nano docker-compose.yaml

Pour supprimer un fichier

rm docker-compose.yaml

Copier-coller le contenu du fichier de configuration de Docker compose dans le fichier docker-compose.yaml.

Sur 1password portail admin, accéder a votre entreprise gérée puis dans intégration> approvisionnement automatique> sélectionnez Entra Azure AD> télécharger le fichier scimsession et enregistrez votre bearer token.

Dans le dossier 1password de la machine créer le fichier scimsession et y copier le contenu du fichier scimsession récupéré sur le centre admin 1password.

nano scimsession

Une fois le contenu du fichier ajouter vous pouvez lancer le docker compose.

docker compose up -d 

Vous pouvez également faire

docker compose up

pour afficher les logs en temps réel

Il est possible d'afficher directement les logs lorsque docker compose est en cours.

docker compose logs

Pour arrêter et supprimer totalement les dockers en cours.

docker compose down

Pour afficher les docker en cours d'utilisation.

docker ps

Pour configurer votre fichier de configuration Docker Compose créer un fichier .env et y ajouter les paramètres ici.

nano .env

Pour vérifier que les modifications son bien prise en compte.

docker inspect dockerid
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
    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