Access roles まとめ
KoukiHama opened this issue · 0 comments
ロールの権限調査
■ 調査対象ソース
sw360-13.4.0-M1
(/datahandler/src/main/java/org/eclipse/sw360/datahandler/permissionsはsw360-14.0.0-M1と同等)
■ Liferayで設定するユーザのロール
-
REGULAR ROLE
ロール名 Administrator Analytics Administrator Portal Content Reviewer Power User -
ORGANIZATION ROLE
ロール名 Account Manager Organization Administrator Organization Content Reviewer Organization Owner -
SITE ROLE
ロール名 Clearing Admin Clearing Expert ECC Admin Security Admin Site Aministrator Site Conternt Reviewer Site Owner SW360 Admin
■ Liferayのロール管理
- _roleテーブル
Liferayで選択できるロールは_roleテーブルで管理されている。
type_列の値でロールへ種別を設定している。ロール種別 type_ 補足 REGULAR ROLE 1 Guest,Owner, Power User Userはtype=1のロールとして定義されているが表示されない。 SITE ROLE 2 ORGANIZATION ROLE 3 Organization Userはtype=3のロールとして定義されているが表示されない。
■ Role管理
-
Liferayユーザロールの読み替え
-
UserUtils.java
/sw360-portlet/src/main/java/org/eclipse/sw360/portal/users/UserUtils.java
getUserGroupFromLiferayUserメソッド -
Liferayのユーザ情報からロール名を取得し、下記の文字列でマッチングして最初にマッチしたロールを付与する。
マッチング順序 定数名 Liferayのロール名 SW360で割り当てるロール 1 ROLENAME_ADMIN "Administrator" ADMIN 2 ROLENAME_SW360_ADMIN "SW360 Admin" SW360_ADMIN 3 ROLENAME_CLEARING_EXPERT "Clearing Expert" CLEARING_EXPERT 4 ROLENAME_CLEARING_ADMIN "Clearing Admin" CLEARING_ADMIN 5 ROLENAME_ECC_ADMIN "ECC Admin" ECC_ADMIN 6 ROLENAME_SECURITY_ADMIN "Security Admin" SECURITY_ADMIN 7 上記のロール名に該当しない場合 - USER -
マッチングするLiferay側のロール情報は、SITE ROLESだけでなく、REGULAR ROLESも対象となる。REGULAR ROLESでAdministratorを選択すると、SW360側でADMIN権限が付与される。(SITE ROLEにはAdministrotorは選択肢に出てこない。)
-
この処理はLogin処理やUserPortletからも呼び出される共通処理。
→ Liferay側のロール定義に関わらず、上記の7つがSW360がサポートするロールである。
-
■ 権限制御
この項目では、SW360で扱う各種ロールについて、org.eclipse.sw360.datahandler.permissionsパッケージのクラスの制御を基に、アクセス可否の判定についてまとめる。下記の何れかのロールで条件が合えば、リソースに対してアクセス可能と判断する。
ただし、SW360ではpermissionsパッケージのクラスの利用は強制ではないため、
これらのクラスを参照しない業務ロジックについては、個別に権限制御を調べる必要がある。
Project
-
概要
Projectに対するアクセス許可は以下の記号で示す。
P(P) : Project(Private)
P(M) : Project(Me and Moderators)
P(B) : Project(Businessunit and moderators)
P(E) : Project(Everyone)
P : ProjectのVisibility設定に関わらずアクセス可能 -
プライマリロールによるアクセス制御
Projectと同一組織となることでアクセス可能となるケースは、後述の「リソースごとの役割の違いによるアクセス制御」へ情報をまとめる。プライマリロール ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ P(B),P(E) P(B),P(E) P(B),P(E) P(B),P(E) P(E) P(E) P(E) WRITE P P P P - - - DELETE P P - - - - - USERS P P - - - - - CLEARING P P - - - - - ATTACHMENTS P P P P - - - WRITE_ECC P P - - - - - ※ 権限テーブル上はADMINとSW360ADMINに区別はない
-
セカンダリのロールによるアクセス制御
セカンダリロールはProjectの所属組織に対応するユーザのロールが判定されるため、所属組織が異なるケースは扱わない。セカンダリロール ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ ※1 - - - - - - - WRITE P P P P - - - DELETE P P - - - - - USERS P P - - - - - CLEARING P P - - - - - ATTACHMENTS P P P P - - - WRITE_ECC P P - - - - - ※1 ProjectのREAD権限の判定のおいて、セカンダリのロールを基に権限をあたら得るような処理は見当たらなかった。ProjectのVisibilityがBUISNESSUNIT_AND_MODERATORSの場合、ユーザが所属するセカンダリグループの所属組織は判定するものの、セカンダリのロールは考慮しない。(本表では、セカンダリグループの一致は、Same group userとして扱う。)
なお、READ権限以外は、isUserOfOwnGroupHasRoleによりセカンダリグループも含めた、Projectの所属組織にマッチする組織のロールについて、権限判定を行っている。
-
リソースごとの役割の違いによるアクセス制御
リソースロール Creator Architect Project responsible Moderators Contributors Same group user Other group user READ P P(M),P(B),P(E) P(M),P(B),P(E) P(M),P(B),P(E) P(M),P(B),P(E) P(B),P(E) P(E) WRITE P P P P P - - DELETE P - P P - - - USERS P - P P - - - CLEARING P - P P - - - ATTACHMENTS P P P P P - - WRITE_ECC - - - - - - - ※Same group user、Other group userはセカンダリの所属組織を含む。
Project(Closed)
-
概要
P(P) : Project(Private)
P(M) : Project(Me and Moderators)
P(B) : Project(Businessunit and moderators)
P(E) : Project(Everyone)
P : ProjectのVisibility設定に関わらずアクセス可能 -
プライマリロールによるアクセス制御 (ProjectとUserのプライマリの所属組織が同一の場合)
Projectと同一組織となることでアクセス可能となるケースは、後述の「リソースごとの役割の違いによるアクセス制御」へ情報をまとめる。プライマリロール ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ P(B),P(E) P(B),P(E) P(B),P(E) P(B),P(E) P(E) P(E) P(E) WRITE P P P P - - - DELETE P P - - - - - USERS P P - - - - - CLEARING P P - - - - - ATTACHMENTS P P P P - - - WRITE_ECC P P - - - - - READ権限の処理は、プロジェクトのClosed状態の影響を受けない。
-
プライマリロールによるアクセス制御 (ProjectとUserのプライマリの所属組織が異なる場合)
プライマリロール ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ P(B),P(E) P(B),P(E) P(B),P(E) P(B),P(E) P(E) P(E) P(E) WRITE P P - - - - - DELETE P P - - - - - USERS P P - - - - - CLEARING P P - - - - - ATTACHMENTS P P - - - - - WRITE_ECC P P - - - - - READ権限の処理は、プロジェクトのClosed状態の影響を受けない。
-
セカンダリのロールによるアクセス制御
セカンダリロールはProjectの所属組織に対応するユーザのロールが判定されるため、所属組織が異なるケースは扱わない。セカンダリロール ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ - - - - - - - WRITE P P P P - - - DELETE P P - - - - - USERS P P - - - - - CLEARING P P - - - - - ATTACHMENTS P P P P - - - WRITE_ECC P P - - - - - READ権限の処理は、プロジェクトのClosed状態の影響を受けない。
-
リソースごとの役割の違いによるアクセス制御
リソースロール Creator Architect Project responsible Moderators Contributors Same group user ※ Other group user ※ READ P P(M),P(B),P(E) P(M),P(B),P(E) P(M),P(B),P(E) P(M),P(B),P(E) P(B),P(E) P(E) WRITE - - - - - - - DELETE - - - - - - - USERS - - - - - - - CLEARING - - - - - - - ATTACHMENTS - - - - - - - WRITE_ECC - - - - - - - ※Same group user、Other group userはセカンダリの所属組織を含む。
READ権限の処理は、プロジェクトのClosed状態の影響を受けない。
-
バックエンド処理におけるModerators、Contributorsについて(補足)
上記のModerators、Contributorsは、画面上でモデレータやコントリビュータとして登録されたユーザではなく、権限処理において、Moderators、およびContributorsとして扱われるユーザ。-
Moderatorsとして判定するユーザ
- Creator
- Project resposible
- Moderator (モデレータ登録されているユーザ)
-
Contributorsとして判定するユーザ
- Creator
- Project resposible
- Moderator (モデレータ登録されているユーザ)
- Contributor (コントリビュータ登録されているユーザ)
- Architect (リードアーキテクトとして登録されているユーザ)
-
Component
-
概要
Component閲覧制限の改造を含まない、Githubメインソースにおける制御についてまとめる。
Componentに対するアクセス許可は以下の記号で示す。
C : コンポーネント -
ロール(プライマリ/セカンダリ共通)によるアクセス制御
ロール ※ ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ C C C C C C C WRITE C C C C - - - DELETE C C - - - - - USERS C C - - - - - CLEARING C C - - - - - ATTACHMENTS C C C C - - - WRITE_ECC C C - - - - - ※プライマリ、セカンダリのいづれかで必要なロールが設定されている場合はアクセスを許可する。
-
リソースごとの役割の違いによるアクセス制御
リソースロール Creator Moderators Component Owner READ C C - WRITE C C - DELETE C C - USERS C C - CLEARING C C - ATTACHMENTS C C - WRITE_ECC - - - Componentにはグループを対象とした制御は存在しない。
Componentに対して、Component Ownerというユーザを登録できるが、特別な権限を与えるような処理は見当
たらなかった。 -
バックエンド処理におけるModerators、Contributorsについて(補足)
-
Moderatorsとして判定するユーザ
- Creator
- Moderator (モデレータ登録されているユーザ)
-
Contributorsとして判定するユーザ
ComponentにはContributorというユーザは設定できないが、バックエンド側ではModeratorと同じユーザをContributorとして扱っている。
-
Release
-
概要
Component閲覧制限の改造を含まない、Githubメインソースにおける制御についてまとめる。
Relaseに対するアクセス許可は以下の記号で示す。
R : リリース -
ロール(プライマリ/セカンダリ共通)によるアクセス制御
ロール ※ ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ R R R R R R R WRITE R R R R - - - DELETE R R - - - - - USERS R R - - - - - CLEARING R R - - - - - ATTACHMENTS R R R R - - - WRITE_ECC R R - - R - - ※プライマリ、セカンダリのいづれかで必要なロールが設定されている場合はアクセスを許可する。
-
リソースごとの役割の違いによるアクセス制御
リソースロール Creator Moderators Contributors READ R R R WRITE R R R DELETE R R - USERS R R - CLEARING R R - ATTACHMENTS R R R WRITE_ECC - - - Releaseにはグループを対象とした制御は存在しない。
-
バックエンド処理におけるModerators、Contributorsについて(補足)
-
Moderatorsとして判定するユーザ
- Creator
- Moderator (モデレータ登録されているユーザ)
-
Contributorsとして判定するユーザ
- Creator
- Moderator (モデレータ登録されているユーザ)
- Contributors (コントリビュータ登録されているユーザ)
-
License
-
概要
Licenseに対するアクセス許可は以下の記号で示す。
L : ライセンス -
プライマリロールによるアクセス制御
ロール ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ L L L L L L L WRITE L L L L L L L DELETE L L L L - - - USERS - - - - - - - CLEARING L L L L - - - ATTACHMENTS - - - - - - - WRITE_ECC - - - - - - - -
セカンダリロールによるアクセス制御
LicensePermissionsはUserのセカンダリのロールを考慮しない。
- リソースごとの役割の違いによるアクセス制御
Licenseにはリソースごとの役割の違いによるアクセス制御は存在しない。
このため、Creatorであっても特別な権限は付与されない。(作成者であってもCLEARING ADMIN以上の権限が無ければLicenseを削除することはできない。)
Vendor
-
概要
Vendorに対するアクセス許可は以下の記号で示す。
V : ベンダー -
ロール(プライマリ/セカンダリ共通)によるアクセス制御
ロール ※ ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ V V V V V V V WRITE V V V V - - - DELETE V V - - - - - USERS V V - - - - - CLEARING V V - - - - - ATTACHMENTS V V V V - - - WRITE_ECC V V - - - - - ※プライマリ、セカンダリのいづれかで必要なロールが設定されている場合はアクセスを許可する。
Vendor固有の制御は行っておらず、DocumentPermissionsの制御に従う。
- リソースごとの役割の違いによるアクセス制御
Vendorにはリソースごとの役割の違いによるアクセス制御は存在しない。
このため、Creatorであっても特別な権限は付与されない。
User
-
概要
Userに対するアクセス許可は以下の記号で示す。
U : User -
プライマリロールによるアクセス制御
ロール ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ U U U U U U U WRITE U U - - - - - DELETE U U - - - - - USERS - - - - - - - CLEARING - - - - - - - ATTACHMENTS - - - - - - - WRITE_ECC - - - - - - - -
セカンダリロールによるアクセス制御
UserPermissionsはUserのセカンダリのロールを考慮しない。
- リソースごとの役割の違いによるアクセス制御
Userにはリソースごとの役割の違いによるアクセス制御は存在しない。
このため、Creatorであっても特別な権限は付与されない。
Vulnerability
-
概要
Vulnerabilityに対するアクセス許可は以下の記号で示す。
V : 脆弱性 -
ロール(プライマリ/セカンダリ共通)によるアクセス制御
ロール ※ ADMIN SW360_ADMIN CLEARING_EXPERT CLEARING_ADMIN ECC_ADMIN SECURITY_ADMIN USER READ V V V V V V V WRITE V V V V - - - DELETE V V - - - - - USERS V V - - - - - CLEARING V V - - - - - ATTACHMENTS V V V V - - - WRITE_ECC V V - - - - - ※プライマリ、セカンダリのいづれかで必要なロールが設定されている場合はアクセスを許可する。
Vulnerability固有の制御は行っておらず、DocumentPermissionsの制御に従う。
- リソースごとの役割の違いによるアクセス制御
Vulnerabilityにはリソースごとの役割の違いによるアクセス制御は存在しない。
このため、Creatorであっても特別な権限は付与されない。