Azure Active Directory (Pro)
DefectDojo Pro 支持通过 Azure Active Directory(Azure AD)登录,包括自动的用户组同步。开源版 DefectDojo 不包含 SSO——开源版的访问控制请参见已授权用户。
前提条件
在配置 DefectDojo 之前,请先在 Azure 门户中完成以下步骤:
在 Azure Active Directory 中注册一个新应用。
记录已注册应用中的以下值:
- Application (client) ID
- Directory (tenant) ID
- 在 Certificates & Secrets 下,创建一个新的 Client Secret 并记录其值
- Application ID URI
在 Authentication > Redirect URIs 下,添加一个 Web 类型的 URI:
https://your-instance.cloud.defectdojo.com/complete/azuread-tenant-oauth2/
配置
在 DefectDojo 中,前往企业设置 > OAuth 设置,选择 Azure AD,然后填写表单:
- Azure AD OAuth Key——输入您的 Application (client) ID
- Azure AD OAuth Secret——输入您的 Client Secret
- Azure AD Resource——默认值为
https://graph.microsoft.com/。这是 DefectDojo 用来从 Microsoft Graph Web API 读取附加信息(例如组名称)的 URI。仅当您的组名称存储在不同的 API 资源上时才需要更改此项。 - Azure AD Tenant ID——输入您的 Directory (tenant) ID
- Azure AD Groups Filter——可选,输入一个正则表达式字符串以限制导入哪些用户组(见下方组映射)
勾选启用 Azure AD OAuth并提交表单。登录页面上会出现一个使用 Azure AD 登录按钮。
组映射
组映射允许 DefectDojo 从 Azure AD 导入用户组成员关系。DefectDojo 中的用户组通过 RBAC 管理产品和产品类型的访问权限。
勾选启用 Azure AD OAuth 分组以激活此功能。登录时,DefectDojo 会将用户的 Azure AD 组与 DefectDojo 中已有的组进行匹配。任何在 DefectDojo 中不存在的组都会被自动创建。
如需仅导入部分组,请在 Azure AD Groups Filter 字段中输入正则表达式。例如:
^team-.*——匹配任何以team-开头的组teamA|teamB|groupC——匹配特定的指定组
配置 Azure AD 以发送组信息
Azure AD 令牌必须配置为包含组 ID,否则令牌中不会出现任何组信息。
配置方法如下:
- 在 Azure AD 令牌配置中添加一个组声明(Group Claim)。如果不确定选择哪种组类型,请选择 All Groups。
- 不要启用 Emit groups as role claims。
- 更新应用的 API 权限,加入
GroupMember.Read.All或Group.Read.All。建议使用GroupMember.Read.All,因为它授予的权限更少。
组清理
如果启用了启用 Azure AD OAuth 组清理,通过 Azure AD 同步创建的 DefectDojo 组在没有任何剩余成员时会被自动移除。当某个用户在 Azure AD 中被移出某个组时,该用户也会从 DefectDojo 中对应的组中被移除。