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

権限制御を細やかにする #2463

Open
kyosu-1 opened this issue Jun 21, 2024 · 0 comments
Open

権限制御を細やかにする #2463

kyosu-1 opened this issue Jun 21, 2024 · 0 comments

Comments

@kyosu-1
Copy link
Member

kyosu-1 commented Jun 21, 2024

権限制御周りの実装は主に以下で行われてる
https://github.com/traPtitech/traQ/blob/master/router/middlewares/user_authenticate.go
https://github.com/traPtitech/traQ/blob/master/router/middlewares/access_control.go
https://github.com/traPtitech/traQ/tree/master/service/rbac

エンドポイントごとに必要なpermissionが設定されており、そのpermissionをアクセスしてきたものが持っているかをチェックしている。permissionはroleに紐づいており、ユーザーやbotはこのroleを持っている。またroleの中でもoauthのscopeパラメータとして指定されうるものがある。
ミドルウェアでのアクセス制御としては

  • トークン(or セッション)が有効か(user_authenticate.go)
  • (OAuthの場合)必要なscopeが指定されているか(access_control.go
  • ユーザー(bot)が必要なpermissionを含むroleを持っているか(これはトークン or sessionから取得される) (access_control.go)

をチェックしている。

permissionによって許可されるエンドポイントはrouterを見れば分かる。

apiUsers.GET("", h.GetUsers, requires(permission.GetUser))

課題として、現状permissionによる権限制御の粒度がやや大きく、OAuthのclient credentials grant でclient持たせたい権限を付与できない問題がある。
#2433 (comment)

新しいpermissionを追加・調整するなどして、権限制御を必要十分に細かくする形で対応したい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant