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。有關詳細資訊,請參閱 即時 (Just-in-Time)。
在 Docker 中啟用 SCIM
啟用 SCIM
- 登入 Docker Home。
- 選取 管理主控台 (Admin Console),然後選取 SSO 和 SCIM (SSO and 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 Home 複製)
- 使用者的唯一識別碼欄位:
email - 支援的佈建動作:「推送新使用者」和「推送個人資料更新」
- 驗證模式:HTTP 標頭
- SCIM 承載權杖:HTTP 標頭授權承載權杖(從 Docker Home 複製)
- 選取「測試連接器組態」。
- 檢閱測試結果並選取「Save」。
步驟二:啟用同步
- 在 Okta 中,選取「Provisioning」。
- 選取「To App」,然後選取「Edit」。
- 啟用「建立使用者」、「更新使用者屬性」和「停用使用者」。
- 選取「Save」。
- 移除不必要的映射。必要的映射為
- 使用者名稱
- 名字
- 姓氏
- 電子郵件
接下來,設定角色映射。
Microsoft 不支援在同一個非資源庫應用程式中同時使用 SCIM 和 OIDC。您必須在 Entra ID 中建立第二個非資源庫應用程式用於 SCIM 佈建。
步驟一:建立單獨的 SCIM 應用程式
- 在 Azure 入口網站中,前往「Microsoft Entra ID」>「企業應用程式」>「新增應用程式」。
- 選取「建立您自己的應用程式」。
- 為您的應用程式命名,並選擇「整合您在資源庫中找不到的任何其他應用程式」。
- 選取「建立」。
步驟二:設定 SCIM 佈建
- 在您的新 SCIM 應用程式中,前往「佈建」>「開始使用」。
- 將「佈建模式」設定為「自動」。
- 在「管理員憑證」下
- 租用戶 URL:從 Docker Home 貼上「SCIM 基礎 URL」。
- 秘密權杖:從 Docker Home 貼上「SCIM API 權杖」。
- 選取「測試連線」以驗證。
- 選取「儲存」以儲存憑證。
接下來,設定角色映射。
- 在 Azure 入口網站中,前往「Microsoft Entra ID」>「企業應用程式」,並選取您的 Docker SAML 應用程式。
- 選取「佈建」>「開始使用」。
- 將「佈建模式」設定為「自動」。
- 在「管理員憑證」下
- 租用戶 URL:從 Docker Home 貼上「SCIM 基礎 URL」。
- 秘密權杖:從 Docker Home 貼上「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)」。
- 選取「新增屬性」並設定您要新增的角色、組織或團隊的值。無需精確命名。
- 返回「Profile Editor」並選取您的應用程式。
- 選取「新增屬性」並輸入所需值。「外部名稱」和「外部命名空間」必須精確。
- 組織/團隊/角色映射的外部名稱值分別為
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」。
- 選取「步驟 2」並設定從使用者屬性到 Docker 變數的映射。
步驟二:按使用者指派角色
- 在 Okta 管理員入口網站中,選取「Directory」,然後選取「People」。
- 選取「Profile」,然後選取「Edit」。
- 選取「Attributes」並將屬性更新為所需值。
步驟三:按群組指派角色
- 在 Okta 管理員入口網站中,選取「Directory」,然後選取「People」。
- 選取「您的群組」,然後選取「應用程式」。
- 開啟「您的應用程式」並選取「編輯」圖示。
- 將屬性更新為所需值。
如果使用者尚未設定屬性,則新增到該群組的使用者在佈建時將繼承這些屬性。
步驟一:設定屬性映射
- 完成 SCIM 佈建設定。
- 在 Azure 入口網站中,開啟「Microsoft Entra ID」>「企業應用程式」,然後選取您的 SCIM 應用程式。
- 前往「佈建」>「映射」>「佈建 Azure Active Directory 使用者」。
- 新增或更新以下映射
userPrincipalName->userNamemail->emails.value- 選用。使用其中一種 映射方法映射
dockerRole、dockerOrg或dockerTeam。
- 移除任何不支援的屬性以防止同步錯誤。
- 選用。前往「映射」>「佈建 Azure Active Directory 群組」
- 如果群組佈建導致錯誤,請將「已啟用」設定為「否」。
- 如果啟用,請仔細測試群組映射。
- 選取「儲存」以應用映射。
步驟二:選擇角色映射方法
您可以使用以下其中一種方法映射 dockerRole、dockerOrg 或 dockerTeam
表達式映射
如果您只需要指派 Docker 角色,例如 member (成員)、editor (編輯者) 或 owner (擁有者),請使用此方法。
- 在「編輯屬性」檢視中,將映射類型設定為「表達式」。
- 在「表達式」欄位中
- 如果您的應用程式角色與 Docker 角色完全匹配,請使用:SingleAppRoleAssignment([appRoleAssignments])
- 如果它們不匹配,請使用切換表達式:
Switch(SingleAppRoleAssignment([appRoleAssignments]), "My Corp Admins", "owner", "My Corp Editors", "editor", "My Corp Users", "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:dockerRoledockerOrg: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerOrgdockerTeam: 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 Home。
- 選取 管理主控台 (Admin Console),然後選取 SSO 和 SCIM (SSO and SCIM)。
- 在「SSO 連線」表格中,選取「動作」圖示。
- 選取「停用 SCIM」。