DefectDojoにおける権限 (Pro)

DefectDojo Pro機能。 このページで説明しているメンバー/グループ/グローバルロールのRBACシステムは、DefectDojo Proの機能です。オープンソース版のDefectDojoは認可済みユーザーモデルを使用しています。オープンソース版のアクセス制御についてはそちらのページを、エディション間を移行する場合は3.0アップグレードノートを参照してください。

DefectDojoで作業するユーザーのチームがいる場合、ユーザーが特定のデータにのみアクセスできるように、ロールベースアクセス制御(RBAC)を適切に設定することが重要です。セキュリティデータは非常にセンシティブであり、DefectDojoのアクセス制御オプションを使えば、各チームメンバーの情報アクセスを細かく指定できます。

この記事では、DefectDojoにおける権限の仕組みの概要を説明します。権限によって制御できる各操作の詳細な内訳を確認したい場合は、**権限チャート**の記事を参照してください。

権限の種類

DefectDojoは4種類の権限を管理しています。

  • ユーザーはProductまたはProduct Typeメンバーとして割り当てることができます。Productのメンバーシップにはロールが付属しており、これによりユーザーはDefectDojo内のデータタイプ(Product Type、Product、Engagement、Test、Finding)を閲覧・操作できます。ユーザーは複数のProductまたはProduct Typeのメンバーシップを持つことができ、それぞれ異なるレベルのアクセス権を設定できます。 ​
  • ユーザーには設定権限を割り当てることもでき、これによりDefectDojoの設定ページにアクセスできるようになります。設定権限はProductやProduct Typeとは関連がなく、ロールとも紐づいていません。 ​
  • ユーザーにはグローバルロールを割り当てることができ、これによりすべてのProductとProduct Typeに対して標準化されたレベルのアクセス権が付与されます。 ​
  • ユーザーはスーパーユーザーとして設定できます。これは、DefectDojoのすべてのデータと設定に対する管理と操作を可能にする、管理者レベルのロールです。

これらの権限タイプはいずれも、ユーザーグループに割り当てることも可能です。特定のProduct専用のテストチームなど、DefectDojo内に多数のユーザーがいる場合、グループを使うことで権限をすばやく設定・維持できます。

Product/Product Typeのメンバーシップとロール

ユーザーがProductまたはProduct Typeのメンバーとして割り当てられると、関連するFindingデータをどのように操作できるかを制御するロールも同時に付与されます。

ロールの概要

DefectDojo Proには5つの組み込みロールが用意されています: Reader、Writer、Maintainer、Owner、API Importerです。これらはいずれも、グローバルに、またはProduct/Product Type単位で割り当てることができます。

組み込みロールは固定のプリセットです。編集や削除はできず、権限の内容はすべてのDefectDojo Proインスタンスで共通です。どれもチームの運用に合わない場合は、個別の権限を選択するか、組み込みロールを複製して調整することで、独自のロールを作成できます。カスタムRBACロールを参照してください。

「基盤となるデータ」とは、ProductまたはProduct Typeの配下にあるすべてのProduct、Engagement、Test、Finding、Endpointを指します。

  • Readerユーザーは、割り当てられたProductまたはProduct Typeの基盤となるデータを閲覧し、コメントを追加できます。基盤となるデータの編集、追加、その他の変更はできませんが、レポートのエクスポートやデータへのメモの追加は可能です。 ​
  • Writerユーザーは、Readerのすべての機能に加えて、Engagement、Test、Findingの追加・編集が可能です。新しいProductを追加することはできず、基盤となるデータの削除もできません。 ​
  • Maintainerユーザーは、Writerのすべての機能に加えて、ProductまたはProduct Typeの編集が可能です。ProductまたはProduct Typeに対して、ロールを持つ新しいメンバーを追加でき、Engagement、Test、Findingの削除も可能です。 ​
  • Ownerユーザーは、ProductまたはProduct Typeに対して最も強い権限を持ちます。他のOwnerを指定でき、割り当てられたProductまたはProduct Type自体を削除することもできます。 ​
  • API Importerユーザーの権限は限定的です。このロールは、APIエンドポイントの大部分を公開することなく限定的なAPIアクセスを許可するため、自動化や、DefectDojoに対して「外部」となることを意図したユーザーに有用です。基盤となるデータの閲覧、Engagementの追加・編集、スキャンデータのインポートが可能です。

組み込みロールの詳細については、**ロール権限チャートを参照してください。ロールに付与できる権限の全リストと、独自のロールの作り方については、カスタムRBACロール**を参照してください。

グローバルロール

グローバルロールを持つユーザーは、割り当てられたロールに応じて、DefectDojo内のあらゆるデータタイプ(Product Type、Product、Engagement、Test、Finding)を閲覧・操作できます。

グループメンバーシップ

ユーザーグループは、ProductまたはProduct Typeのメンバーとして追加できます。グループに属するユーザーは、そのグループに関連付けられたすべてのProductまたはProduct Typeへのアクセス権と、グループに割り当てられたロールを継承します。

複数のロールを持つユーザー

  • ユーザーがProductのメンバーとして割り当てられても、デフォルトでは関連するProduct Typeの権限は付与されません。

  • 同じProductまたはProduct Type上でユーザーが複数のロールを持つことになった場合(例えば、直接割り当てられたロールとグループから継承したロールがある場合)、そのユーザーはそこで保持するすべてのロールの権限を合算して受け取ります。

  • ユーザーのProductロールは、常に「デフォルト」のProduct Typeロールに優先します。 ​

  • ユーザーのProduct/Product Typeロールは、その基盤となるProductまたはProduct Type内において、常にグローバルロールに優先します。例えば、あるユーザーがProduct TypeロールとしてReaderを持っていても、そのProduct Type配下のあるProductにOwnerとして割り当てられている場合、そのProductに限り追加のOwner権限が付与されます。 ​

  • ロールは権限を取り除くことはできず、追加することしかできません。例えば、あるユーザーがProduct TypeロールまたはグローバルロールとしてOwnerを持っている場合、特定のProductにReaderロールを割り当てても、そのProductにおけるOwner権限が失われることはありません。 ​

  • スーパーユーザーのステータスは、割り当てられたどのロールよりも常に優先されます。

スーパーユーザー

スーパーユーザー(管理者)にはシステム上の制限が一切ありません。すべての設定を変更し、ユーザーを管理し、すべてのデータへの読み取り/書き込みアクセス権を持ちます。DefectDojoの全ユーザーに対するアクセスルールを変更することもできます。また、スーパーユーザーはすべてのシステム上の問題やアラートに関する通知も受け取ります。

デフォルトでは、新しいDefectDojoインスタンスで最初に作成されたアカウントがスーパーユーザー権限を持ちます。そのユーザーは、それ以降に作成されるすべてのDefectDojoユーザーの権限を編集できます。新たなスーパーユーザーの追加や、ユーザーへのグローバルロールの追加は、既存のスーパーユーザーのみが行えます。

設定権限

設定権限は似てはいますが、Productやロールとは関連がありません。ロールとは別に割り当てる必要があります。通常のユーザーにはデフォルトで設定権限が一切付与されておらず、これらの設定権限の割り当ては慎重に行う必要があります。

ユーザーへの設定権限の割り当ては、いくつかの方法で行えます。

  1. ユーザーに直接、設定権限を割り当てることができます。特定の権限は、ユーザーページで直接設定できます。

  2. ユーザーグループに設定権限を割り当てることができます。ロールと同様に、特定の設定権限をグループに追加すると、そのグループの全メンバーにこれらの権限が付与されます。

スーパーユーザーはすべての設定権限を持つため、ユーザーページに設定権限セクションは表示されません。

グループの設定権限

ユーザーがグループに属している場合、そのグループの設定へのアクセスレベルを制御するグループ設定権限も持つことになります。グループ権限は、グループのProductまたはProduct Typeのメンバーシップとは対応していません。

ユーザーが新しいグループを作成すると、デフォルトでその新しいグループのOwnerロールが付与されます。

設定権限の詳細については、**設定権限チャート**を参照してください。

デフォルトの権限を管理する

DefectDojoで新規ユーザーが作成されると(手動作成、SAML/SSO経由、または任意のソーシャル認証プロバイダー経由のいずれであっても)、そのユーザーにはデフォルトで権限が一切ありません。初回ログイン時には、Product Type、Product、Engagementのいずれも0件として表示されます。スーパーユーザーがアクセス権を付与するまで(直接、グローバルロール経由、Product/Product Typeのメンバーシップ経由、またはグループへの追加のいずれかによって)、どのデータも閲覧・操作できません。

新規に作成されたすべてのユーザーに、自動的にベースラインのアクセス権を付与したい場合(例えば「新規SSOユーザーは全員、特定のグループのReaderにする」など)、System Settingsページでデフォルトグループを設定できます。

  1. ⚙️ Configuration → System Settingsを開きます(スーパーユーザーのみ)。
  2. デフォルトグループに、新規作成されたユーザーが参加すべきユーザーグループを設定します。
  3. デフォルトグループロールに、そのグループでユーザーが持つべきロール(例: Reader)を設定します。
  4. 必要に応じて、デフォルトグループのメールパターンに正規表現(例: .*@yourcompany\.com$)を設定すると、メールアドレスが一致するユーザーにのみデフォルトグループが適用されます。
  5. 保存します。

デフォルトグループデフォルトグループロールはどちらも設定する必要があります。いずれかが空の場合、デフォルトグループは適用されません。

この設定は、手動作成、SAML、OAuth、その他のソーシャル認証プロバイダーなど、すべてのユーザー作成経路に適用されます。これは遡って適用されるものではありません。既存のユーザーは、この設定を後で変更しても、現在のグループメンバーシップをそのまま維持します。

SSO固有のガイダンスについては、SAML設定、またはお使いのプロバイダーのセクションについてはSSO設定を参照してください。