SCIM 供應

訂閱: 商業版
要求: Docker Desktop 4.42 及更高版本
適用於: 管理員

使用跨域身份管理系統 (SCIM) 自動化您的 Docker 組織的使用者管理。SCIM 自動供應和取消供應使用者,同步團隊成員資格,並使您的 Docker 組織與您的身份提供商保持同步。

本頁將向您展示如何使用 SCIM 自動化 Docker 的使用者供應和取消供應。

先決條件

在開始之前,您必須擁有

  • 為您的組織配置了 SSO
  • Docker Home 和您的身份提供商的管理員訪問許可權

SCIM 的工作原理

SCIM 透過您的身份提供商自動化 Docker 的使用者供應和取消供應。啟用 SCIM 後,分配給您的身份提供商中 Docker 應用程式的任何使用者都會自動被供應並新增到您的 Docker 組織。當用戶從您的身份提供商中 Docker 應用程式中移除時,SCIM 會將其停用並從您的 Docker 組織中移除。

除了供應和移除,SCIM 還會同步身份提供商中進行的配置檔案更新,例如姓名更改。您可以將 SCIM 與 Docker 預設的即時 (JIT) 供應一起使用,也可以在停用 JIT 的情況下單獨使用 SCIM。

SCIM 自動化

  • 建立使用者
  • 更新使用者配置檔案
  • 移除和停用使用者
  • 重新啟用使用者
  • 組對映
注意

SCIM 僅管理透過您的身份提供商在啟用 SCIM 後供應的使用者。它無法移除在設定 SCIM 之前手動新增到 Docker 組織的使用者。

要移除這些使用者,請從您的 Docker 組織中手動刪除他們。有關更多資訊,請參閱管理組織成員

支援的屬性

SCIM 使用屬性(姓名、電子郵件等)在您的身份提供商和 Docker 之間同步使用者資訊。在您的身份提供商中正確對映這些屬性可確保使用者供應順利進行,並防止在使用單點登入時出現重複使用者帳戶等問題。

Docker 支援以下 SCIM 屬性

屬性描述
userName使用者的主要電子郵件地址,用作唯一識別符號
name.givenName使用者的名字
name.familyName使用者的姓氏
active指示使用者是否已啟用或停用,設定為“false”以取消供應使用者

有關支援的屬性和 SCIM 的更多詳細資訊,請參閱Docker Hub API SCIM 參考

重要

預設情況下,Docker 對 SSO 使用即時 (JIT) 供應。如果啟用了 SCIM,JIT 值仍然優先並會覆蓋 SCIM 設定的屬性值。為避免衝突,請確保您的 JIT 屬性值與您的 SCIM 值匹配。

或者,您可以停用 JIT 供應,完全依賴 SCIM。有關詳細資訊,請參閱即時供應

在 Docker 中啟用 SCIM

啟用 SCIM

  1. 登入 Docker 主頁
  2. 選擇管理控制檯,然後選擇SSO 和 SCIM
  3. SSO 連線 表中,選擇您的連線的 操作 圖示,然後選擇 設定 SCIM
  4. 複製 SCIM 基本 URLAPI 令牌 並將這些值貼上到您的 IdP 中。

在 IdP 中啟用 SCIM

您的身份提供商的使用者介面可能與以下步驟略有不同。您可以參考您的身份提供商的文件進行驗證。有關更多詳細資訊,請參閱您的身份提供商的文件

注意

Microsoft 目前不支援在 Entra ID 的同一非庫應用程式中同時使用 SCIM 和 OIDC。本頁提供了一個經過驗證的解決方法,即使用一個單獨的非庫應用程式進行 SCIM 供應。雖然 Microsoft 沒有正式記錄此設定,但它在實踐中被廣泛使用和支援。

第一步:啟用 SCIM

  1. 登入 Okta 並選擇 Admin 開啟管理門戶。
  2. 開啟您在配置 SSO 連線時建立的應用程式。
  3. 在應用程式頁面上,選擇 General 選項卡,然後選擇 Edit App Settings
  4. 啟用 SCIM 供應,然後選擇 Save
  5. 導航到 Provisioning,然後選擇 Edit SCIM Connection
  6. 要在 Okta 中配置 SCIM,請使用以下值和設定來設定您的連線
    • SCIM 基本 URL:SCIM 聯結器基本 URL(從 Docker 主頁複製)
    • 使用者的唯一識別符號欄位:`email`
    • 支援的供應操作:推送新使用者推送配置檔案更新
    • 認證模式:HTTP Header
    • SCIM Bearer 令牌:HTTP Header 授權 Bearer 令牌(從 Docker 主頁複製)
  7. 選擇 測試聯結器配置
  8. 檢視測試結果並選擇 儲存

第二步:啟用同步

  1. 在 Okta 中,選擇 Provisioning
  2. 選擇 To App,然後選擇 Edit
  3. 啟用 建立使用者更新使用者屬性停用使用者
  4. 選擇儲存
  5. 移除不必要的對映。必要的對映是
    • 使用者名稱
    • 名字
    • 姓氏
    • 電子郵件

接下來,設定角色對映

Microsoft 不支援在同一非庫應用程式中同時使用 SCIM 和 OIDC。您必須在 Entra ID 中為 SCIM 供應建立第二個非庫應用程式。

第一步:建立單獨的 SCIM 應用程式

  1. 在 Azure 門戶中,轉到 Microsoft Entra ID > 企業應用程式 > 新建應用程式
  2. 選擇 建立您自己的應用程式
  3. 命名您的應用程式並選擇 整合您在庫中找不到的任何其他應用程式
  4. 選擇 Create (建立)。

第二步:配置 SCIM 供應

  1. 在您的新 SCIM 應用程式中,轉到 供應 > 開始
  2. 供應模式 設定為 自動
  3. 管理員憑據
    • 租戶 URL:貼上 Docker 主頁中的 SCIM 基本 URL
    • 秘密令牌:貼上 Docker 主頁中的 SCIM API 令牌
  4. 選擇 測試連線 進行驗證。
  5. 選擇 儲存 以儲存憑據。

接下來,設定角色對映

  1. 在 Azure 門戶中,轉到 Microsoft Entra ID > 企業應用程式,然後選擇您的 Docker SAML 應用程式。
  2. 選擇 供應 > 開始
  3. 供應模式 設定為 自動
  4. 管理員憑據
    • 租戶 URL:貼上 Docker 主頁中的 SCIM 基本 URL
    • 秘密令牌:貼上 Docker 主頁中的 SCIM API 令牌
  5. 選擇 測試連線 進行驗證。
  6. 選擇 儲存 以儲存憑據。

接下來,設定角色對映

設定角色對映

您可以透過在 IdP 中新增可選的 SCIM 屬性來為使用者分配Docker 角色。這些屬性會覆蓋 SSO 配置中設定的預設角色和團隊值。

注意

角色對映同時支援 SCIM 和即時 (JIT) 供應。對於 JIT,角色對映僅在使用者首次供應時適用。

下表列出了支援的可選使用者級屬性

屬性可能的值備註
dockerRolemembereditorowner如果未設定,使用者預設為 member 角色。設定此屬性將覆蓋預設值。

有關角色定義,請參閱角色和許可權
dockerOrgDocker organizationName(例如,moby覆蓋 SSO 連線中配置的預設組織。

如果未設定,使用者將被供應到預設組織。如果同時設定了 dockerOrgdockerTeam,使用者將被供應到指定組織內的團隊。
dockerTeamDocker teamName(例如,developers將使用者供應到預設組織或指定組織中的指定團隊。如果團隊不存在,則會自動建立。

您仍然可以使用組對映將使用者分配到跨多個組織的團隊。

用於這些屬性的外部名稱空間是:urn:ietf:params:scim:schemas:extension:docker:2.0:User。在您的身份提供商中為 Docker 建立自定義 SCIM 屬性時需要此值。

第一步:在 Okta 中設定角色對映

  1. 首先設定SSO和 SCIM。
  2. 在 Okta 管理門戶中,轉到 Directory,選擇 Profile Editor,然後選擇 User (Default)
  3. 選擇 Add Attribute 併為要新增的角色、組織或團隊配置值。不需要精確命名。
  4. 返回 Profile Editor 並選擇您的應用程式。
  5. 選擇 Add Attribute 並輸入所需的值。External NameExternal Namespace 必須完全匹配。
    • 組織/團隊/角色對映的外部名稱值分別為 dockerOrgdockerTeamdockerRole,如上表所示。
    • 所有這些的外部名稱空間都是相同的:urn:ietf:params:scim:schemas:extension:docker:2.0:User
  6. 建立屬性後,導航到頁面頂部並選擇 Mappings,然後選擇 Okta User to YOUR APP
  7. 轉到新建立的屬性並將變數名對映到外部名稱,然後選擇 儲存對映。如果您使用的是 JIT 供應,請繼續執行以下步驟。
  8. 導航到 Applications 並選擇 YOUR APP
  9. 選擇 General,然後選擇 SAML Settings,再選擇 Edit
  10. 選擇 Step 2 並配置從使用者屬性到 Docker 變數的對映。

第二步:按使用者分配角色

  1. 在 Okta 管理門戶中,選擇 Directory,然後選擇 People
  2. 選擇 Profile,然後選擇 Edit
  3. 選擇 Attributes 並將屬性更新為所需的值。

第三步:按組分配角色

  1. 在 Okta 管理門戶中,選擇 Directory,然後選擇 People
  2. 選擇 YOUR GROUP,然後選擇 Applications
  3. 開啟 YOUR APPLICATION 並選擇 Edit 圖示。
  4. 將屬性更新為所需的值。

如果使用者尚未設定屬性,則新增到該組的使用者將在供應時繼承這些屬性。

第一步:配置屬性對映

  1. 完成SCIM 供應設定
  2. 在 Azure 門戶中,開啟 Microsoft Entra ID > 企業應用程式,然後選擇您的 SCIM 應用程式。
  3. 轉到 供應 > 對映 > 供應 Azure Active Directory 使用者
  4. 新增或更新以下對映
    • userPrincipalName -> userName
    • mail -> emails.value
    • 可選。使用其中一種對映方法對映 dockerRoledockerOrgdockerTeam
  5. 移除任何不支援的屬性以防止同步錯誤。
  6. 可選。轉到 對映 > 供應 Azure Active Directory 組
    • 如果組供應導致錯誤,請將 Enabled 設定為
    • 如果啟用,請仔細測試組對映。
  7. 選擇 儲存 以應用對映。

第二步:選擇角色對映方法

您可以使用以下方法之一對映 dockerRoledockerOrgdockerTeam

表示式對映

如果您只需要分配 Docker 角色,例如 membereditorowner,請使用此方法。

  1. 編輯屬性 檢視中,將對映型別設定為 表示式
  2. 表示式 欄位中
    1. 如果您的應用角色與 Docker 角色完全匹配,請使用:SingleAppRoleAssignment([appRoleAssignments])
    2. 如果不匹配,請使用 switch 表示式:Switch(SingleAppRoleAssignment([appRoleAssignments]), "我的公司管理員", "owner", "我的公司編輯", "editor", "我的公司使用者", "member")
  3. 設定
    • 目標屬性urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
    • 使用此屬性匹配物件:否
    • 應用此對映:始終
  4. 儲存您的更改。
警告

您不能將 dockerOrgdockerTeam 與此方法一起使用。表示式對映僅與一個屬性相容。

直接對映

如果您需要對映多個屬性(dockerRole + dockerTeam),請使用此方法。

  1. 對於每個 Docker 屬性,選擇一個唯一的 Entra 擴充套件屬性(extensionAttribute1extensionAttribute2 等)。
  2. 編輯屬性 檢視中
    • 將對映型別設定為 直接
    • 源屬性 設定為您選擇的擴充套件屬性。
    • 目標屬性 設定為以下之一
      • dockerRole: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
      • dockerOrg: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerOrg
      • dockerTeam: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerTeam
    • 應用此對映 設定為 始終
  3. 儲存您的更改。

要分配值,您需要使用 Microsoft Graph API。

第三步:分配使用者和組

對於任何一種對映方法

  1. 在 SCIM 應用程式中,轉到 使用者和組 > 新增使用者/組
  2. 選擇要供應到 Docker 的使用者或組。
  3. 選擇 分配

如果您使用的是表示式對映

  1. 轉到 應用註冊 > 您的 SCIM 應用程式 > 應用角色
  2. 建立與 Docker 角色匹配的應用角色。
  3. 使用者和組 下將使用者或組分配給應用角色。

如果您使用的是直接對映

  1. 轉到 Microsoft Graph Explorer 並以租戶管理員身份登入。
  2. 使用 Microsoft Graph API 分配屬性值。PATCH 請求示例
PATCH https://graph.microsoft.com/v1.0/users/{user-id}
Content-Type: application/json

{
  "extensionAttribute1": "owner",
  "extensionAttribute2": "moby",
  "extensionAttribute3": "developers"
}
注意

您必須為每個 SCIM 欄位使用不同的擴充套件屬性。

有關詳細資訊,請參閱您的 IdP 文件

測試 SCIM 供應

完成角色對映後,您可以手動測試配置。

  1. 在 Okta 管理門戶中,轉到 Directory > People
  2. 選擇您已分配給 SCIM 應用程式的使用者。
  3. 選擇 Provision User
  4. 等待幾秒鐘,然後在 成員 下的 Docker 管理控制檯中檢查。
  5. 如果使用者未出現,請在 報告 > 系統日誌 中檢視日誌並確認應用程式中的 SCIM 設定。
  1. 在 Azure 門戶中,轉到 Microsoft Entra ID > 企業應用程式,然後選擇您的 SCIM 應用程式。
  2. 轉到 供應 > 按需供應
  3. 選擇一個使用者或組,然後選擇 供應
  4. 確認使用者出現在 成員 下的 Docker 管理控制檯中。
  5. 如有需要,檢查 供應日誌 中是否有錯誤。

停用 SCIM

如果停用 SCIM,任何透過 SCIM 供應的使用者都將保留在組織中。您使用者的未來更改將不會從您的 IdP 同步。只有手動從組織中移除使用者才能取消使用者供應。

停用 SCIM

  1. 登入 Docker 主頁
  2. 選擇管理控制檯,然後選擇SSO 和 SCIM
  3. SSO 連線 表中,選擇 操作 圖示。
  4. 選擇 停用 SCIM

後續步驟