SCIM Bridgeを自社の基盤にデプロイし、1Passwordのアカウントとつなぐまでの手順です。デプロイの形はいくつかありますが、どれも同じコンテナイメージ(Docker Hubの1password/scim)を動かします。違うのは、DNSと証明書を誰が管理するか、どこまで作業を自動化してくれるかです。ここでは、Google CloudとAzureの2つについて手順を書きます。このページでは、デプロイの形の選び方、始める前に用意するもの、Google Cloudのマーケットプレースでの手順、Azure Container Appsでの手順、1Passwordとつないで動作を確かめる方法を説明します。SCIM Bridgeを使うかどうかの判断は、SCIM Bridgeを選ぶ場合の判断基準で先に済ませてください。
デプロイの形を選ぶ
デプロイの形は3つに分かれます。社内で既に使っているクラウドと、運用の手間をどこまで引き受けるかで選びます。
マーケットプレースのアプリを使う
Google CloudのマーケットプレースとDigitalOceanのマーケットプレースに、SCIM Bridgeのアプリがあります。1Passwordのアカウントに接続して、クレデンシャルを自動で作って読み込むところまで案内してくれます。一方で、構成を変えられず、公開のDNSレコードが必要で、ネットワークの条件も厳しめです。
コンテナのマネージドサービスを使う
Azure Container Apps、Google Cloud Run、DigitalOcean App Platformが当たります。DNSと証明書の管理がサービスに含まれ、デプロイが早く、費用と保守の手間も抑えられます。本番の利用に向いた形で、DNSレコードを作る必要もありません。
自前のDockerかKubernetesで動かす
Docker Swarm、Kubernetes、Helm、Azure Kubernetes Service、AWSのECSなどで動かす形です。Redisのキャッシュ、ドメイン名、証明書を自分で用意します。構成の例は、1PasswordのGitHubにある<a href="https://github.com/1Password/scim-examples" target="_blank">SCIM Bridgeのデプロイ例</a>にまとまっています。
始める前に用意するもの
作業する人は、1Passwordの所有者か管理者グループに属している必要があります。デプロイ先では、プロジェクトやリソースグループを作成できるアカウントを用意します。マーケットプレースを使う場合は、公開のDNSレコード(scim.example.comなど)を作れることも確かめておきます。
途中でscimsessionファイルとベアラートークンを受け取ります。2つとも1Passwordのアイテムとして保存し、SCIM Bridgeの管理者だけが入れる保管庫に置いてください。デプロイのために手元に保存したscimsessionファイルは、作業が済んだら削除します。
以前に作ったプロビジョニングの統合の詳細が表示された場合は、クレデンシャルを作り直すか、統合を無効にしてからやり直すかを選びます。作り直せば、管理対象として選んだグループなどの設定が残ります。無効にすると、設定は引き継がれません。
Google Cloudのマーケットプレースでデプロイする
SCIM Bridgeは、Google Cloudのプロジェクトの中にデプロイします。
- Google Cloudのコンソールで
Manage resourcesを開き、Create projectでプロジェクトを作ります。組織に属している場合は組織を選びます。 - マーケットプレースでSCIM Bridgeのアプリを開き、
Configureを選んで、作ったプロジェクトを選びます。'Kubernetes Engine Admin' role is requiredと表示されても、クラスターを作れば消えるので無視して進めます。 Existing Kubernetes Clusterで既存のクラスターを選ぶか、or create a new clusterで新しく作ります。作った場合はページを再読み込みします。NamespaceとApp instance nameは既定のままにします。クラスターに別のアプリがある場合だけ、Namespaceに1passwordという名前空間を新しく作ります。1Password sign-in addressにサインインアドレス(example.1password.comなど)を入れ、Deployを選びます。

デプロイが済むと、アプリの詳細が表示されます。SCIM bridge infoの1Password SCIM bridge public IPは、最初は10から始まるプライベートのアドレスです。10以外で始まる公開のアドレスに変わるまで、ページを再読み込みします。

このアドレスを指すDNSのAレコードを作り、反映を待ちます。続けて、このアドレスを静的なアドレスに切り替えてください。最初に割り当てられるのは一時的なアドレスで、変わると同期が止まります。切り替え方は<a href="https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address#promote_ephemeral_ip" target="_blank">Google Cloudの静的外部IPアドレスの説明</a>で確認できます。
Azure Container Appsでデプロイする
Azure Container Appsでは、先に1Password側でクレデンシャルを作ってから、テンプレートでデプロイします。DNSレコードは要りません。
- 1Password.comにサインインし、サイドバーの
統合を選びます。ユーザープロビジョニングのセクションでIDプロバイダーを選び、デプロイの方法で独自の環境を選んで、画面の案内に従います。 - 受け取った
scimsessionファイルとベアラートークンを保存し、scimsessionファイルは手元のコンピューターにも保存します。 - GitHubから<a href="https://github.com/1Password/scim-examples/blob/main/azure-container-apps-arm/aca-op-scim-bridge-template.json" target="_blank">Azure Resource Managerのテンプレート</a>をダウンロードします。
- Azure portalで<a href="https://portal.azure.com/#create/Microsoft.Template" target="_blank">カスタムデプロイ</a>を開き、
Build your own template in the editor、Load fileの順に選んでテンプレートを読み込み、Saveを選びます。 Subscription、Resource group、Regionを選びます。Container App Nameなど名前の3つの欄は既定のままで構いません。Scimsessionにscimsessionファイルの中身を貼り付けます。Workspace ActorとWorkspace Credentialsは空欄のままにします。Review + createを選び、検証が通ったらCreateを選びます。デプロイには数分かかります。
完了したらGo to resource groupから作ったコンテナアプリを開き、OverviewのApplication Urlを控えます。これがSCIM BridgeのURLです。
1Passwordとつないで動作を確かめる
マーケットプレースでデプロイした場合は、DNSの反映を待ってから、ブラウザーでSCIM Bridgeのドメインを開きます。セットアップの画面に、デプロイ、ドメインの設定、アカウントとの接続の3段階が並びます。

設定したドメイン名を入れて確かめ、Sign in with 1Passwordを選んで画面の案内に従います。済むとscimsessionファイルとベアラートークンが発行されるので、2つとも保存します。続けてInstall on <yourdomain>を選び、ステータスページでベアラートークンを入れてVerifyを選びます。
Azure Container Appsの場合は、控えたURLを開き、ベアラートークンでサインインします。どちらの場合も、ステータスページの状態が全てConnectedになっていれば接続できています。
IDプロバイダーをつなぐ前に、1Passwordの既存のメンバーのメールアドレスとグループの名前を、IDプロバイダー側と完全に一致させてください。違うアドレスで参加している人には変更してもらいます。IDプロバイダーのグループと同期させたい1Passwordのグループは、名前を合わせておきます。接続の手順はRipplingとの統合で扱います。