Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Access roles まとめ #17

Open
KoukiHama opened this issue Dec 1, 2021 · 0 comments
Open

Access roles まとめ #17

KoukiHama opened this issue Dec 1, 2021 · 0 comments
Labels
bug Something isn't working

Comments

@KoukiHama
Copy link
Owner

ロールの権限調査

■ 調査対象ソース

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であっても特別な権限は付与されない。
@KoukiHama KoukiHama added the bug Something isn't working label Dec 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant