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。有關詳細資訊,請參閱 即時 (Just-in-Time)

在 Docker 中啟用 SCIM

啟用 SCIM

  1. 登入 Docker Home
  2. 選取 管理主控台 (Admin Console),然後選取 SSO 和 SCIM (SSO and SCIM)
  3. 在「SSO 連線」表格中,選取您連線的「動作」圖示,然後選取「設定 SCIM」。
  4. 複製「SCIM 基礎 URL」和「API 權杖」,然後將這些值貼到您的 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 Home 複製)
    • 使用者的唯一識別碼欄位:email
    • 支援的佈建動作:「推送新使用者」和「推送個人資料更新
    • 驗證模式:HTTP 標頭
    • SCIM 承載權杖:HTTP 標頭授權承載權杖(從 Docker Home 複製)
  7. 選取「測試連接器組態」。
  8. 檢閱測試結果並選取「Save」。

步驟二:啟用同步

  1. 在 Okta 中,選取「Provisioning」。
  2. 選取「To App」,然後選取「Edit」。
  3. 啟用「建立使用者」、「更新使用者屬性」和「停用使用者」。
  4. 選取「Save」。
  5. 移除不必要的映射。必要的映射為
    • 使用者名稱
    • 名字
    • 姓氏
    • 電子郵件

接下來,設定角色映射

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

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

  1. 在 Azure 入口網站中,前往「Microsoft Entra ID」>「企業應用程式」>「新增應用程式」。
  2. 選取「建立您自己的應用程式」。
  3. 為您的應用程式命名,並選擇「整合您在資源庫中找不到的任何其他應用程式」。
  4. 選取「建立」。

步驟二:設定 SCIM 佈建

  1. 在您的新 SCIM 應用程式中,前往「佈建」>「開始使用」。
  2. 將「佈建模式」設定為「自動」。
  3. 在「管理員憑證」下
    • 租用戶 URL:從 Docker Home 貼上「SCIM 基礎 URL」。
    • 秘密權杖:從 Docker Home 貼上「SCIM API 權杖」。
  4. 選取「測試連線」以驗證。
  5. 選取「儲存」以儲存憑證。

接下來,設定角色映射

  1. 在 Azure 入口網站中,前往「Microsoft Entra ID」>「企業應用程式」,並選取您的 Docker SAML 應用程式。
  2. 選取「佈建」>「開始使用」。
  3. 將「佈建模式」設定為「自動」。
  4. 在「管理員憑證」下
    • 租用戶 URL:從 Docker Home 貼上「SCIM 基礎 URL」。
    • 秘密權杖:從 Docker Home 貼上「SCIM API 權杖」。
  5. 選取「測試連線」以驗證。
  6. 選取「儲存」以儲存憑證。

接下來,設定角色映射

設定角色映射

您可以透過在 IdP 中新增選用的 SCIM 屬性,將 Docker 角色指派給使用者。這些屬性會覆寫 SSO 設定中預設的角色和團隊值。

注意

SCIM 和即時 (JIT) 佈建都支援角色映射。對於 JIT,角色映射僅在使用者首次佈建時適用。

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

屬性可能值備註
dockerRolemember (成員), editor (編輯者), 或 owner (擁有者)如果未設定,使用者預設為 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. 選取「新增屬性」並設定您要新增的角色、組織或團隊的值。無需精確命名。
  4. 返回「Profile Editor」並選取您的應用程式。
  5. 選取「新增屬性」並輸入所需值。「外部名稱」和「外部命名空間」必須精確。
    • 組織/團隊/角色映射的外部名稱值分別為 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. 選取「步驟 2」並設定從使用者屬性到 Docker 變數的映射。

步驟二:按使用者指派角色

  1. 在 Okta 管理員入口網站中,選取「Directory」,然後選取「People」。
  2. 選取「Profile」,然後選取「Edit」。
  3. 選取「Attributes」並將屬性更新為所需值。

步驟三:按群組指派角色

  1. 在 Okta 管理員入口網站中,選取「Directory」,然後選取「People」。
  2. 選取「您的群組」,然後選取「應用程式」。
  3. 開啟「您的應用程式」並選取「編輯」圖示。
  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 群組
    • 如果群組佈建導致錯誤,請將「已啟用」設定為「」。
    • 如果啟用,請仔細測試群組映射。
  7. 選取「儲存」以應用映射。

步驟二:選擇角色映射方法

您可以使用以下其中一種方法映射 dockerRoledockerOrgdockerTeam

表達式映射

如果您只需要指派 Docker 角色,例如 member (成員)、editor (編輯者) 或 owner (擁有者),請使用此方法。

  1. 在「編輯屬性」檢視中,將映射類型設定為「表達式」。
  2. 在「表達式」欄位中
    1. 如果您的應用程式角色與 Docker 角色完全匹配,請使用:SingleAppRoleAssignment([appRoleAssignments])
    2. 如果它們不匹配,請使用切換表達式:Switch(SingleAppRoleAssignment([appRoleAssignments]), "My Corp Admins", "owner", "My Corp Editors", "editor", "My Corp Users", "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. 選取「佈建使用者」。
  4. 等待幾秒鐘,然後在「成員」下檢查 Docker 管理主控台
  5. 如果使用者沒有出現,請在「報告 > 系統日誌」中檢閱日誌,並確認應用程式中的 SCIM 設定。
  1. 在 Azure 入口網站中,前往「Microsoft Entra ID」>「企業應用程式」,並選取您的 SCIM 應用程式。
  2. 前往「佈建」>「按需佈建」。
  3. 選取使用者或群組並選擇「佈建」。
  4. 確認使用者出現在 Docker 管理主控台 的「成員」下。
  5. 如有需要,請檢查「佈建日誌」是否有錯誤。

停用 SCIM

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

停用 SCIM

  1. 登入 Docker Home
  2. 選取 管理主控台 (Admin Console),然後選取 SSO 和 SCIM (SSO and SCIM)
  3. 在「SSO 連線」表格中,選取「動作」圖示。
  4. 選取「停用 SCIM」。

下一步

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.