GitHub Codespacesのデフォルトの権限設定は弱い。
トークンのスコープは、codespace が作成されたリポジトリへのアクセス権によって異なります。
基本的にはそのRepositoryに対する権限のみがGRANTされている。
他のレポジトリや組織範囲に対しての権限が必要な場合はdevcontainer.json
に記述してrebuildする必要がある。
なお、devcontainer.jsonに指定できるRepositoryは1種類のみである。
1種類のみなので以下の設定はできない。仮に指定しても1番目の指定のみが有効になる。
複数指定したい場合は、ワイルドカードを利用するしかない。
{ "customizations": { "codespaces": { "repositories": { "example-org/repo1": { "permissions": { "actions": "write", "checks": "read", "contents": "read", "deployments": "write", "discussions": "read", "issues": "write", "packages": "read", "pages": "read", "pull_requests": "write", "repository_projects": "read", "statuses": "write", "workflows": "write" } }, "example-org/repo2": { "actions": "read", "checks": "read", "contents": "read", "deployments": "write", "discussions": "read", "issues": "read", "packages": "read", "pages": "read", "pull_requests": "read", "repository_projects": "read", "statuses": "read", "workflows": "read" } } } } }
|
ワイルドカードを利用する場合は、以下のようになる。(example-org/*
)
また、種別毎に指定しない場合は "permissions": "read-all"
, "permissions": "write-all"
の記述が可能。
{ "customizations": { "codespaces": { "repositories": { "example-org/*": { "permissions": { "actions": "write", "checks": "read", "contents": "read", "deployments": "write", "discussions": "read", "issues": "write", "packages": "read", "pages": "read", "pull_requests": "write", "repository_projects": "read", "statuses": "write", "workflows": "write" } } } } } }
|
なお、VSCode内でrebuildをしても権限は反映されなかったので、UIから作り直す必要があった。
参考