SonarQubeのPermissionについて調べた時のメモ。
情報が古い可能性があるため、最新の情報を参照する場合はオフィシャルサイトを確認すること。
SonarQubeのPermission種別
Project単位でのPermissionの設定と、全体レベル(Global)でのPermissionの設定が出来る。
-
Project単位のPermission
Project選択後、Project Settings -> Permissionsから設定 -
Global Permission
Administration -> Security -> Global Permissionsから設定
Project単位でのPermissionとGlobal Permissionでは設定できる項目が微妙に異なる。
設定可能なPermissionは以下の項目になる。
- Project単位のPermission
- Browse ※Privateのみ
- See Source Code ※Privateのみ
- Administer Issues
- Administer Security Hotspots
- Administer
- Execute Analysis
- Global Permission
- Administer System
- Administer
- Execute Analysis
- Create
それぞれのPermissionの意味は以下になる。
Permission | 設定箇所 | 意味 |
---|---|---|
Browse | Project | プロジェクトへのアクセス、Measures、Issues、Security Hotspotsの閲覧、Issueの編集(確認/解決/再開、割り当て、コメント)の実行、Security Hotspotsに割り当てられたユーザーへのコメントや変更などが可能。 |
See Source Code | Project | プロジェクトのソースコードを閲覧できる |
Administer Issues | Project | 問題の種類と重大度を変更し、問題を「修正しない(won't fix)」または「誤検出(false positive)」として解決する(ユーザーは"Browse"権限も必要)。 |
Administer Security Hotspots | Project | Security Hotspotのstatusを変更する |
Administer | Project | "Project Settings"にアクセスし、Adminのタスクを実行する(ユーザーは "Browse"権限も必要)。デフォルトでは、このAdministerパーミッションを持つユーザーは、現在のプロジェクトの設定とパーミッションの両方を管理できる。プロジェクト管理者のみにプロジェクト設定の更新を許可するには、Administration > Configuration > General Settings > Securityに移動して、Enable permission management for project administratorsを無効にする必要がある。 |
Execute Analysis | Project/Global | 解析に必要なすべての設定にアクセスでき、解析結果をSonarQubeにPushできる。PrivateのProject Settingsも対象だが、パスワードのようなセキュリティで保護された設定は含まれない。 |
Administer System | Global | 全てのAdmin権限が利用可 |
Administer - Quality Gates | Global | Quality Gatesに関する全ての権限が利用可 |
Administer - Quality Profiles | Global | Quality Profilesに関する全ての権限が利用可 |
Create - Projects | Global | Projectの作成権限 |
なお、システム設定を変更していない場合、デフォルトで作成したユーザはProjectを作成できてしまう。
これはAnyoneというGroupに全てのユーザが暗黙的に所属しており、このAnyoneのデフォルトがExecute AnalysisとCreate Projectsに許可が与えられているためである。
許可されたユーザにのみProject作成を許可させる場合はGlobal PermissionsでAnyoneの設定を変更し、チェックを外す必要がある。
Permission Templates
Project作成後、そのProjectに特定のユーザに特定のPermissionをまとめて付与することが出来る。
例えば、今alice, bob, mikeというユーザが存在し、新規Projectに対して毎回以下のような権限与えたいとする。
- alice(ゲスト):結果の参照のみ許可(コードは参照不可)
- bob(開発者):結果の参照、コード参照、Issueの編集許可、解析許可
- mike(管理者):全権限あり
その場合、テンプレートを作成してProjectに適用することで、Permission付与の手間を減らすことが出来る。
Administration -> Permission TemplatesからCreateを選択し、以下のようなテンプレートを作成する。
その後、Projectを作成してProject Settings -> Permissionsから右上のApply Permission Templateをクリックしてテンプレートを適用すると、まとめて権限を付与する事ができる。
なお、注意点としてAdminの権限を設定していないテンプレートを適用した場合、AdminもProjectに対する権限がなくなる点に気をつけること。