BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

Azure DevOps で特定の Repository のみが見える権限を作る

Azure DevOps は 1 project で複数の Repository が作成できるので、project のメンバー次第では特定の repository しかみせたくないケースが出てきます。

その設定方法を書いていきます。

ちなみにユーザーを招待したり Group の作成や権限の付与を行うので、Admin など強い権限を持っているユーザーで操作する必要があります。

全体的な流れとしてはこんな感じ。

  • (まだ存在しなければ) Organization にユーザーを 追加する
  • Project settings で Group を作成する
  • Group に、全ての repository が見えないよう権限を設定する
  • Group に、見せたい repository を一つずつ見えるように権限を追加していく

Organization にユーザーを追加

後からでもいいんですがせっかくなので最初にユーザーを追加しておきます。Azure DevOps を開いて左下にある Organization Settings をクリックします。もしここに Organization Settings がなければ別のレベルの画面を開いているので、右上にある Azure DevOps をクリックしてみましょう。Organization レベルの画面が表示されて Organization Settings が表示されます。

f:id:beachside:20220222151847p:plain

Users (①) をクリック -> Add users (②) をクリックします。

f:id:beachside:20220222152249p:plain

追加したいユーザーを入力したり "Access level" や "Add to project" (どのプロジェクトに参加させるか) や "Azure DevOps Groups" は必要に応じて設定します。

補足として、"Send email invites" (招待のメールを送信する) については、今回のようにユーザー追加後に権限を設定する場合はこのチェックを外しておき、権限の設定を終えてから招待メールを送信した方がよいです。

f:id:beachside:20220222152729p:plain

余談として、招待メールをあとから送信する際は、Users からユーザーを指定して送信できます。

f:id:beachside:20220222153336p:plain

Project settings で Group を作成

権限をユーザー個々に付与するとか破綻しかないので、こういう権限は Group を作って付与します。ということでまずは Group を作成しましょう。

まず Azure DevOps で設定したい Project を開きます。

f:id:beachside:20220222145030p:plain

左下の Project settings (①) -> Permission (②) -> New Group (③) をクリックして Group の作成に進みます。。

f:id:beachside:20220222145351p:plain

"Create a new group" が表示されますので、Name を適宜入力します。今回は「Limited Repo reader」と入力しましたが、パッとみてわかりやすく...例えばそのプロジェクトの社外メンバー向けだったらそれがわかる名称とかにしましょう。Member も必要に応じて追加しておきましょう。もちろんあとからでも追加できます。Description には何のグループかの説明を書いておくとよりわかりやすくなるので、真面目なプロジェクトでは書いておくことをおすすめします。入力したら Create ボタンをクリックします。

f:id:beachside:20220222150213p:plain

これでまずは Group ができました。次はこの Group に権限を設定していきます。

Group に、全ての repository が見えないよう権限を設定する

特定の repo のみ見せたい場合、今回解説するように全てを見えなく設定して、必要な repository を個別に見えるようにします。

余談として書いておくと、ほとんどの repository を見せたいけど特定のいくつかだけ見せたくない場合は、全ての repository を見えるようにして、特定の repository のみを見えないように設定するのがよいです。ケースバイケースで柔軟に設定しましょう。

全ての repository の Read できない権限を追加

さて本題の設定方法ですが、Project settingsRepositories (①) をクリック -> "All Repositories" のすぐ下にある Security (②) をクリックします。 ちなみにクリックする前だと下の図の通りこの project には複数の repository が存在します。これを見えなくしていきます。

f:id:beachside:20220222164523p:plain

あとは、先ほど作った group を検索に入力して見つけたらクリックし、ReadDeny に設定します。ここが全ての Repository に対する Security の設定の対象になります (事前に repository 個別に設定しているとこの限りではないので注意が必要ですが) 。

f:id:beachside:20220222164720p:plain

動作 (表示) を確認

先ほど追加したユーザーでサインインし Repos を見ると...なんということでしょう (劇的ビフォーアフター 風)、複数の Repository があるはずなのにひとつも見えない状態になっています。

想定通りの動作です。

f:id:beachside:20220222165734p:plain

見せたい repository を一つずつ Read 権限を追加

あとは個別に Read の権限を追加していきます。

Read できる権限の追加

Project SettingsRepositories で権限を追加したい repository をクリックします。

f:id:beachside:20220222171903p:plain

"All Repositories" の配下に repository の一覧が表示されていますので、 今回は例えば「pipeline-workshop-samples」の repository をクリックします。後はさっき設定したのと同様で、対象の Group を選んで ReadAllow にすることで見れるようになります。

f:id:beachside:20220222172208p:plain

動作 (表示) を確認

設定した group のユーザーでサインインしてみると…なんということでしょう (劇的ビフォーa...ry)、複数の Repository があるはずなのにさきほど指定した 「pipeline-workshop--samples」のみがみえるようになりました。

想定通りの動作です。

f:id:beachside:20220222180518p:plain

まとめ

ADO の細かい権限まわりは基本的にこんな感じで全部禁止する → 個別で開放するって流れで設定する感じです。

参考として、公式のドキュメントよりも公式のブログの内容がまとまっていてわかりやすいです。