SCIM 供應
使用跨域身份管理系統 (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
- 登入 Docker 主頁。
- 選擇管理控制檯,然後選擇SSO 和 SCIM。
- 在 SSO 連線 表中,選擇您的連線的 操作 圖示,然後選擇 設定 SCIM。
- 複製 SCIM 基本 URL 和 API 令牌 並將這些值貼上到您的 IdP 中。
在 IdP 中啟用 SCIM
您的身份提供商的使用者介面可能與以下步驟略有不同。您可以參考您的身份提供商的文件進行驗證。有關更多詳細資訊,請參閱您的身份提供商的文件
注意Microsoft 目前不支援在 Entra ID 的同一非庫應用程式中同時使用 SCIM 和 OIDC。本頁提供了一個經過驗證的解決方法,即使用一個單獨的非庫應用程式進行 SCIM 供應。雖然 Microsoft 沒有正式記錄此設定,但它在實踐中被廣泛使用和支援。
第一步:啟用 SCIM
- 登入 Okta 並選擇 Admin 開啟管理門戶。
- 開啟您在配置 SSO 連線時建立的應用程式。
- 在應用程式頁面上,選擇 General 選項卡,然後選擇 Edit App Settings。
- 啟用 SCIM 供應,然後選擇 Save。
- 導航到 Provisioning,然後選擇 Edit SCIM Connection。
- 要在 Okta 中配置 SCIM,請使用以下值和設定來設定您的連線
- SCIM 基本 URL:SCIM 聯結器基本 URL(從 Docker 主頁複製)
- 使用者的唯一識別符號欄位:`email`
- 支援的供應操作:推送新使用者 和 推送配置檔案更新
- 認證模式:HTTP Header
- SCIM Bearer 令牌:HTTP Header 授權 Bearer 令牌(從 Docker 主頁複製)
- 選擇 測試聯結器配置。
- 檢視測試結果並選擇 儲存。
第二步:啟用同步
- 在 Okta 中,選擇 Provisioning。
- 選擇 To App,然後選擇 Edit。
- 啟用 建立使用者、更新使用者屬性 和 停用使用者。
- 選擇儲存。
- 移除不必要的對映。必要的對映是
- 使用者名稱
- 名字
- 姓氏
- 電子郵件
接下來,設定角色對映。
Microsoft 不支援在同一非庫應用程式中同時使用 SCIM 和 OIDC。您必須在 Entra ID 中為 SCIM 供應建立第二個非庫應用程式。
第一步:建立單獨的 SCIM 應用程式
- 在 Azure 門戶中,轉到 Microsoft Entra ID > 企業應用程式 > 新建應用程式。
- 選擇 建立您自己的應用程式。
- 命名您的應用程式並選擇 整合您在庫中找不到的任何其他應用程式。
- 選擇 Create (建立)。
第二步:配置 SCIM 供應
- 在您的新 SCIM 應用程式中,轉到 供應 > 開始。
- 將 供應模式 設定為 自動。
- 在 管理員憑據 下
- 租戶 URL:貼上 Docker 主頁中的 SCIM 基本 URL。
- 秘密令牌:貼上 Docker 主頁中的 SCIM API 令牌。
- 選擇 測試連線 進行驗證。
- 選擇 儲存 以儲存憑據。
接下來,設定角色對映。
- 在 Azure 門戶中,轉到 Microsoft Entra ID > 企業應用程式,然後選擇您的 Docker SAML 應用程式。
- 選擇 供應 > 開始。
- 將 供應模式 設定為 自動。
- 在 管理員憑據 下
- 租戶 URL:貼上 Docker 主頁中的 SCIM 基本 URL。
- 秘密令牌:貼上 Docker 主頁中的 SCIM API 令牌。
- 選擇 測試連線 進行驗證。
- 選擇 儲存 以儲存憑據。
接下來,設定角色對映。
設定角色對映
您可以透過在 IdP 中新增可選的 SCIM 屬性來為使用者分配Docker 角色。這些屬性會覆蓋 SSO 配置中設定的預設角色和團隊值。
注意角色對映同時支援 SCIM 和即時 (JIT) 供應。對於 JIT,角色對映僅在使用者首次供應時適用。
下表列出了支援的可選使用者級屬性
屬性 | 可能的值 | 備註 |
---|---|---|
dockerRole | member 、editor 或 owner | 如果未設定,使用者預設為 member 角色。設定此屬性將覆蓋預設值。有關角色定義,請參閱角色和許可權。 |
dockerOrg | Docker organizationName (例如,moby ) | 覆蓋 SSO 連線中配置的預設組織。 如果未設定,使用者將被供應到預設組織。如果同時設定了 dockerOrg 和 dockerTeam ,使用者將被供應到指定組織內的團隊。 |
dockerTeam | Docker teamName (例如,developers ) | 將使用者供應到預設組織或指定組織中的指定團隊。如果團隊不存在,則會自動建立。 您仍然可以使用組對映將使用者分配到跨多個組織的團隊。 |
用於這些屬性的外部名稱空間是:urn:ietf:params:scim:schemas:extension:docker:2.0:User
。在您的身份提供商中為 Docker 建立自定義 SCIM 屬性時需要此值。
第一步:在 Okta 中設定角色對映
- 首先設定SSO和 SCIM。
- 在 Okta 管理門戶中,轉到 Directory,選擇 Profile Editor,然後選擇 User (Default)。
- 選擇 Add Attribute 併為要新增的角色、組織或團隊配置值。不需要精確命名。
- 返回 Profile Editor 並選擇您的應用程式。
- 選擇 Add Attribute 並輸入所需的值。External Name 和 External Namespace 必須完全匹配。
- 組織/團隊/角色對映的外部名稱值分別為
dockerOrg
、dockerTeam
和dockerRole
,如上表所示。 - 所有這些的外部名稱空間都是相同的:
urn:ietf:params:scim:schemas:extension:docker:2.0:User
。
- 組織/團隊/角色對映的外部名稱值分別為
- 建立屬性後,導航到頁面頂部並選擇 Mappings,然後選擇 Okta User to YOUR APP。
- 轉到新建立的屬性並將變數名對映到外部名稱,然後選擇 儲存對映。如果您使用的是 JIT 供應,請繼續執行以下步驟。
- 導航到 Applications 並選擇 YOUR APP。
- 選擇 General,然後選擇 SAML Settings,再選擇 Edit。
- 選擇 Step 2 並配置從使用者屬性到 Docker 變數的對映。
第二步:按使用者分配角色
- 在 Okta 管理門戶中,選擇 Directory,然後選擇 People。
- 選擇 Profile,然後選擇 Edit。
- 選擇 Attributes 並將屬性更新為所需的值。
第三步:按組分配角色
- 在 Okta 管理門戶中,選擇 Directory,然後選擇 People。
- 選擇 YOUR GROUP,然後選擇 Applications。
- 開啟 YOUR APPLICATION 並選擇 Edit 圖示。
- 將屬性更新為所需的值。
如果使用者尚未設定屬性,則新增到該組的使用者將在供應時繼承這些屬性。
第一步:配置屬性對映
- 完成SCIM 供應設定。
- 在 Azure 門戶中,開啟 Microsoft Entra ID > 企業應用程式,然後選擇您的 SCIM 應用程式。
- 轉到 供應 > 對映 > 供應 Azure Active Directory 使用者。
- 新增或更新以下對映
userPrincipalName
->userName
mail
->emails.value
- 可選。使用其中一種對映方法對映
dockerRole
、dockerOrg
或dockerTeam
。
- 移除任何不支援的屬性以防止同步錯誤。
- 可選。轉到 對映 > 供應 Azure Active Directory 組
- 如果組供應導致錯誤,請將 Enabled 設定為 否。
- 如果啟用,請仔細測試組對映。
- 選擇 儲存 以應用對映。
第二步:選擇角色對映方法
您可以使用以下方法之一對映 dockerRole
、dockerOrg
或 dockerTeam
表示式對映
如果您只需要分配 Docker 角色,例如 member
、editor
或 owner
,請使用此方法。
- 在 編輯屬性 檢視中,將對映型別設定為 表示式。
- 在 表示式 欄位中
- 如果您的應用角色與 Docker 角色完全匹配,請使用:SingleAppRoleAssignment([appRoleAssignments])
- 如果不匹配,請使用 switch 表示式:
Switch(SingleAppRoleAssignment([appRoleAssignments]), "我的公司管理員", "owner", "我的公司編輯", "editor", "我的公司使用者", "member")
- 設定
- 目標屬性:
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
- 使用此屬性匹配物件:否
- 應用此對映:始終
- 目標屬性:
- 儲存您的更改。
警告您不能將
dockerOrg
或dockerTeam
與此方法一起使用。表示式對映僅與一個屬性相容。
直接對映
如果您需要對映多個屬性(dockerRole
+ dockerTeam
),請使用此方法。
- 對於每個 Docker 屬性,選擇一個唯一的 Entra 擴充套件屬性(
extensionAttribute1
、extensionAttribute2
等)。 - 在 編輯屬性 檢視中
- 將對映型別設定為 直接。
- 將 源屬性 設定為您選擇的擴充套件屬性。
- 將 目標屬性 設定為以下之一
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
- 將 應用此對映 設定為 始終。
- 儲存您的更改。
要分配值,您需要使用 Microsoft Graph API。
第三步:分配使用者和組
對於任何一種對映方法
- 在 SCIM 應用程式中,轉到 使用者和組 > 新增使用者/組。
- 選擇要供應到 Docker 的使用者或組。
- 選擇 分配。
如果您使用的是表示式對映
- 轉到 應用註冊 > 您的 SCIM 應用程式 > 應用角色。
- 建立與 Docker 角色匹配的應用角色。
- 在 使用者和組 下將使用者或組分配給應用角色。
如果您使用的是直接對映
- 轉到 Microsoft Graph Explorer 並以租戶管理員身份登入。
- 使用 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 供應
完成角色對映後,您可以手動測試配置。
停用 SCIM
如果停用 SCIM,任何透過 SCIM 供應的使用者都將保留在組織中。您使用者的未來更改將不會從您的 IdP 同步。只有手動從組織中移除使用者才能取消使用者供應。
停用 SCIM
- 登入 Docker 主頁。
- 選擇管理控制檯,然後選擇SSO 和 SCIM。
- 在 SSO 連線 表中,選擇 操作 圖示。
- 選擇 停用 SCIM。