Docker シングル サインオン (SSO) は、ID プロバイダー (IdP) を使用した Docker へのアクセス認証を可能にします。Docker は現在、SAML 2.0 と Azure AD の認証方式をサポートしています。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 認証されます。
組織の 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 とパスワードで認証するか、パスワードがない場合はパスワード リセットを行う必要があります。