Azure Active Directory (Pro)

DefectDojo Pro 支持通过 Azure Active Directory(Azure AD)登录,包括自动的用户组同步。开源版 DefectDojo 不包含 SSO——开源版的访问控制请参见已授权用户

前提条件

在配置 DefectDojo 之前,请先在 Azure 门户中完成以下步骤:

  1. 在 Azure Active Directory 中注册一个新应用

  2. 记录已注册应用中的以下值:

    • Application (client) ID
    • Directory (tenant) ID
    • Certificates & Secrets 下,创建一个新的 Client Secret 并记录其值
    • Application ID URI
  3. 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,否则令牌中不会出现任何组信息。

配置方法如下:

  1. 在 Azure AD 令牌配置中添加一个组声明(Group Claim)。如果不确定选择哪种组类型,请选择 All Groups
  2. 不要启用 Emit groups as role claims
  3. 更新应用的 API 权限,加入 GroupMember.Read.AllGroup.Read.All。建议使用 GroupMember.Read.All,因为它授予的权限更少。

组清理

如果启用了启用 Azure AD OAuth 组清理,通过 Azure AD 同步创建的 DefectDojo 组在没有任何剩余成员时会被自动移除。当某个用户在 Azure AD 中被移出某个组时,该用户也会从 DefectDojo 中对应的组中被移除。