Docker シングル サインオン (SSO) は、ID プロバイダー (IdP) を使用した Docker へのアクセス認証を可能にします。SSO は、Docker Business サブスクリプションを利用している組織で有効にできます。
SSO を有効にすると、ユーザーはログインするために ID プロバイダーの認証ページにリダイレクトされます。このページでは、Docker ID とパスワードで認証することはできません。Docker は現在、Service Provider Initiated SSO フローをサポートしています。ユーザーは Docker Hub または Docker Desktop にサインインして、SSO 認証プロセスを開始する必要があります。
Docker Hub で SSO を有効にする前に、管理者は ID プロバイダーの設定を完了し、Docker Hub で動作するように IdP を構成する必要があります。Docker は、ACS (Assertion Consumer Service) の URL とエンティティ ID を提供します。管理者はこの情報を使用して、IdP サーバーと Docker Hub 間の接続を確立します。
IdP サーバーと Docker Hub 間の接続を確立したら、管理者は Docker Hub で組織にログインして、SSO の有効化プロセスを完了します。詳細な手順は、「Docker Hub で SSO を有効にする」セクションを参照してください。
Docker Hub で SSO を有効にするには、以下が必要です。
現在、SSO は 1 つの組織でのみ有効にできます。組織内に異なるドメイン (ソーシャル ドメインを含む) を持つユーザーがいる場合、ゲストとして組織に追加されます。ゲストは引き続き Docker ID とパスワードを使用して Docker 認証されます。
以下の図は、Docker Hub と Docker Desktop でシングル サインオン (SSO) がどのように動作し、管理されるかを示しています。さらに、IdP 間の認証方法についても記載しています。
※クリックして拡大
組織の SSO を設定する前に、組織の各メンバーは CLI にログインするためのアクセス トークンを作成する必要があります。現在、既存のユーザーには猶予期間を設けています。猶予期間が終了し、PAT の使用が強制される前までは、ユーザーは以前の認証情報を使用して Docker Desktop CLI からログインすることができます。また、すべてのメールアドレスを IdP に追加する必要があります。
SSO を設定するには、Docker Hub にログインして、IdP サーバーの設定作業を完了します。SSO は 1 つの IdP でのみ設定可能です。この作業が完了したら、Docker Hub にログインし直して SSO の有効化プロセスを完了します。
重要: IdP 設定でエンティティ ID と ACS URL が必要な場合は、認証方法セクションで [SAML] タブを選択する必要があります。たとえば、Azure AD 設定で Azure AD 内の SAML 構成を使用する場合は、SAML を選択する必要があります。 Open ID Connect with Azure AD を構成している場合は、認証方法として Azure AD を選択します。また、現時点では IdP-Initiated 接続はサポートされていません。
こちらの動画では、SSO を構成するプロセスについて説明します。
注意: NameID はデフォルト設定でお客様のメールアドレスとなっています。例: yourname@mycompany.com。オプションで `name` 属性もサポートしています。この属性名は小文字にする必要があります。 以下は、Okta の属性の例です。
注意: このセクションは、Azure AD で Open ID Connect を構成するだけのユーザーを対象としています。この接続は基本的な OIDC 接続であり、使用時に特別なカスタマイズを行うことはできません。
注意: NameID はデフォルト設定でお客様のメールアドレスとなっています。例: yourname@mycompany.com。
[Add Domain] をクリックして、SSO で管理したい企業ドメインを指定します。ドメインは、yourcompany.com などのように、プロトコルや www 情報を含まない形式である必要があります。現時点で Docker では、IdP の一部である複数のドメインをサポートしています。ドメインが電子メールでリーチ可能であることを確認してください。
注意: ユーザーが Docker のアクセスに使用するすべてのメール ドメインを含める必要があります。gmail.com や outlook.com などのパブリック ドメインは許可されていません。また、メール ドメインはプライマリ メールとして設定する必要があります。
ドメインの所有権を確認するには、ドメイン ネーム システム (DNS) の設定に TXT レコードを追加します。
注意: DNS の変更が有効になるまでに、DNS ホストによっては最大 72時間かかることがあります。この間、ドメイン テーブルのステータスは未確認となります。
Docker Hub で SSO 設定作業が完了したら、シークレット ブラウザーを使用して Docker Hub にログインし、設定をテストできます。ドメイン メール アドレスと IdP パスワードでログインすると、認証のため ID プロバイダーのログイン ページにリダイレクトされます。
Docker Hub で SSO を実施する前に、ログイン/ログアウトして SSO をテストし、組織内のすべてのメンバーが Docker Desktop バージョン 4.4.2 にアップグレード済みであることを確認し、メンバーごとに PAT を作成し、CI/CD パスワードを PAT に変換する必要があります。
また、Docker パートナー製品 (例: VS Code) を使用する場合、SSO を実施する際には PAT を使用する必要があります。サービス アカウントについては、[Add Domains] で追加ドメインを追加するか、IdP でアカウントを有効化してください。
管理者は、registry.json 設定ファイルをプロビジョニングすることで、Docker Desktop での認証をユーザーに強制できます。registry.json ファイルの allowedOrgs リストで設定されているユーザーとして認証することをユーザーに強制します。registry.json ファイルの設定方法は、「registry.json の設定」を参照してください。
SSO が実施されると、メンバーは Docker Hub を通じてメール アドレスやパスワードの変更、ユーザー アカウントから組織への変換、2FA の設定ができなくなります。IdP を通じて 2FA を有効にする必要があります。
注意: SSO を無効にして Docker の組込み認証に戻すには、[Turn OFF Enforcement] をクリックします。メンバーは IdP 経由での認証を強制されず、個人の認証情報を使用して Docker にログインできます。
Docker Hub の組織にユーザーを手動で追加する必要はありません。ユーザーのアカウントが IdP に存在することを確認してください。設定したドメインのメールアドレスを使ってユーザーが Docker Hub にサインインすると、自動的に組織に割り当てられます。
注意: 初めてのユーザーがドメイン メール アドレスで Docker にログインすると、組織に追加されます。
IdP 経由で認証されていないゲストを Docker Hub の組織に追加するには、次の操作を行います。
組織からメンバーを削除するには、次の操作を行います。
注意: SSO 組織からメンバーを削除すると、そのメンバーはメール アドレスでログインできなくなります。
詳細は、「FAQ」を参照してください。
SSOを無効にする場合、接続を削除することで、構成設定と追加されたドメインを削除することができます。この接続を一度削除すると、元に戻すことはできません。ユーザーは、Docker ID とパスワードで認証するか、パスワードがない場合はパスワード リセットを行う必要があります。