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やロールとは関連がありません。ロールとは別に割り当てる必要があります。通常のユーザーにはデフォルトで設定権限が一切付与されておらず、これらの設定権限の割り当ては慎重に行う必要があります。
ユーザーへの設定権限の割り当ては、いくつかの方法で行えます。
ユーザーに直接、設定権限を割り当てることができます。特定の権限は、ユーザーページで直接設定できます。
ユーザーグループに設定権限を割り当てることができます。ロールと同様に、特定の設定権限をグループに追加すると、そのグループの全メンバーにこれらの権限が付与されます。
スーパーユーザーはすべての設定権限を持つため、ユーザーページに設定権限セクションは表示されません。
グループの設定権限
ユーザーがグループに属している場合、そのグループの設定へのアクセスレベルを制御するグループ設定権限も持つことになります。グループ権限は、グループのProductまたはProduct Typeのメンバーシップとは対応していません。
ユーザーが新しいグループを作成すると、デフォルトでその新しいグループのOwnerロールが付与されます。
設定権限の詳細については、**設定権限チャート**を参照してください。
デフォルトの権限を管理する
DefectDojoで新規ユーザーが作成されると(手動作成、SAML/SSO経由、または任意のソーシャル認証プロバイダー経由のいずれであっても)、そのユーザーにはデフォルトで権限が一切ありません。初回ログイン時には、Product Type、Product、Engagementのいずれも0件として表示されます。スーパーユーザーがアクセス権を付与するまで(直接、グローバルロール経由、Product/Product Typeのメンバーシップ経由、またはグループへの追加のいずれかによって)、どのデータも閲覧・操作できません。
新規に作成されたすべてのユーザーに、自動的にベースラインのアクセス権を付与したい場合(例えば「新規SSOユーザーは全員、特定のグループのReaderにする」など)、System Settingsページでデフォルトグループを設定できます。
- ⚙️ Configuration → System Settingsを開きます(スーパーユーザーのみ)。
- デフォルトグループに、新規作成されたユーザーが参加すべきユーザーグループを設定します。
- デフォルトグループロールに、そのグループでユーザーが持つべきロール(例: Reader)を設定します。
- 必要に応じて、デフォルトグループのメールパターンに正規表現(例:
.*@yourcompany\.com$)を設定すると、メールアドレスが一致するユーザーにのみデフォルトグループが適用されます。 - 保存します。
デフォルトグループとデフォルトグループロールはどちらも設定する必要があります。いずれかが空の場合、デフォルトグループは適用されません。
この設定は、手動作成、SAML、OAuth、その他のソーシャル認証プロバイダーなど、すべてのユーザー作成経路に適用されます。これは遡って適用されるものではありません。既存のユーザーは、この設定を後で変更しても、現在のグループメンバーシップをそのまま維持します。
SSO固有のガイダンスについては、SAML設定、またはお使いのプロバイダーのセクションについてはSSO設定を参照してください。