Azure DevOpsの権限について調べてみた ~2.プロジェクトレベル・リポジトリレベルの権限について~

Azure DevOpsの権限について「組織レベルの権限について」「プロジェクトレベル・リポジトリレベルの権限について」、「各サービスレベルの権限について」の3回に分けて書きたいと思います。

第2回となる本記事では「プロジェクトレベル・リポジトリレベルの権限について」を解説していきます。

なお、第1回記事では「組織レベルの権限について」を解説しております。併せてご覧ください。

blog.jbs.co.jp

Azure DevOpsとは

第1回でも記載しましたが、今一度振り返りたいと思います。

Azure DevOpsとは、Microsoftが提供する、DevOpsを実行するために必要な環境やツールを備えたサービス群です。

Azure DevOpsを使うことで以下のことが実行できます。

  • ソースコードやライブラリの管理
  • CI/CDの実行
  • 手動テストの管理・支援

また、Azure DevOpsでは以下のサービスを利用することができます。

  • Azure Boards
  • Azure Repos
  • Azure Pipelines
  • Azure Test Plans
  • Azure Artifacts

Azure DevOpsのプロジェクトとリポジトリの権限について

本記事では、まずプロジェクトレベルの権限について紹介します。

Azure DevOpsにおけるプロジェクトとは

プロジェクトは、組織の配下に作成され、ユーザーがソフトウェソリューションの構築、計画、追跡、共同作業を行う場所です。

プロジェクトは1つの組織配下に最大1000個作成することが可能です。

例えば、「XYZ社」という名の組織があり、その配下に、「A課」、「B課」、「C課」、「D課」といった事業ごと、案件ごと、地域ごと等でプロジェクトを分割して作成することで、1つの組織で全く別の事柄を管理することが可能です。

詳細については、以下ドキュメントを参照ください。

プロジェクトの概要と組織のスケーリング - Azure DevOps | Microsoft Learn

Azure DevOpsでのプロジェクトの作成方法は、以下ドキュメントを参照ください。

プロジェクトを作成する - Azure DevOps | Microsoft Learn

また、プロジェクト内ではチームを作成することができます。チームはタスクの視認性に適しており、”自分のなすべきこと”を確認することができ、また、他のチームの進捗具合等も確認することができます。

チームについては以下ドキュメントを参照ください。

チームおよびアジャイル ツールについて - Azure DevOps | Microsoft Learn

プロジェクトの権限について

始めに、プロジェクトのおける権限の参照方法についてご紹介します。

まず、プロジェクト内に入り、左ペインの[Project Setting]を選択します。

設定の画面が開いたら、[General]>[Permissions]を選択します。

以上の手順から、権限を見ることができます。

既定のユーザーとグループ

プロジェクトを作成した時、以下のグループ・チームとユーザーがデフォルトで作成されます。

グループ

デフォルトで作成されるグループやチームは下記の通りです。

  • Build Administrators
    • プロジェクト内のビルドリソースの管理およびビルドアクセス許可を持つグループ
  • Contributors
    • プロジェクト内のリソースを操作することができるグループ
      ※ユーザーの追加・削除、チームの作成等の管理権限を必要とする操作はできない
  • Project Administrators
    • プロジェクトのすべての特権操作を実行可能なグループ
  • Project Valid Users
    • すべてのグループとユーザー所属するグループ
  • Readers
    • プロジェクト情報、コードベース、作業項目および他の成果物の閲覧する許可を持つグループ
      ※閲覧することのみ可能であり、操作することはできない
  • Release Administrators
    • プロジェクト内の全てのリソースを操作・管理するアクセス許可を持つグループ
  • Demo Team
    • プロジェクトのチーム
      ※チーム作成時、そのチームは[Contributors]グループに所属する

ユーザー

プロジェクトを作成したユーザーと参加したユーザーが、自動的に一覧に追加されます。

権限の付与

組織同様、プロジェクトのグループ、ユーザーにはそれぞれ権限が割り振られています。ただし、デフォルトで作成されているグループの権限を変更することはできません

ユーザーの権限はユーザー個々で設定することも可能ですが、基本的には所属するグループの権限を継承するよう規定で設定されています。そのため、管理者権限を持つグループにユーザーを追加すると、そのユーザーが管理者としてプロジェクトを運用することができます。

ただし、権限を継承させず、ユーザー個々で権限を設定した場合、グループで持っている権限が継承されないため、同じ[Project Administrators]グループに属していても、すべての権限が許可されないよう設定することも可能です。

※下図は[Project Administrators]グループの権限詳細画面

また、プロジェクトでデフォルトで作成されるグループはすべて[Project Valid Users]グループに所属しており、このグループは組織のグループに所属しています。

そのため、一部の権限について、組織のグループの権限が継承されています。

※下図は[Project Valid Users]グループが所属しているグループ(組織:Project Collection Valid Users)を示します。

プロジェクトに既定で作成されている役割を持ったグループに別のグループやユーザーを所属させることで、プロジェクト内の各サービスやリソースへの権限を与えることができます

例えば、あるユーザーにリソースを操作する権限は与えるが管理権限は与えないとした場合、指定のユーザーまたはユーザーが所属しているチーム/グループを[Contributors]グループに所属させることで、リソースを操作する権限を与えることができます。

ただし、ユーザーが所属しているチーム・グループを割り当てた場合、そのチームに所属しているすべてのユーザーに「Contributors」の権限が割り当てられるため、注意が必要となります。

リポジトリレベルとは

次に、リポジトリの権限についてです。

まず、リポジトリとはバージョン管理システム「git」に対応した、開発者が作成したソースコードを保管、チームで共有、バージョン管理をすることが可能なサービスです。

リポジトリの作成方法については以下ドキュメントを参照ください。

リポジトリの作成 - Web - Azure Repos | Microsoft Learn

リポジトリの権限について

リポジトリの権限は2種類あります。

  1. リポジトリ全体に反映する権限
  2. 個々のリポジトリにのみ反映する権限

個々のリポジトリの権限の多くは、リポジトリ全体の権限を継承する仕様となっています。

権限の参照について

始めに、レポジトリ全体の権限の仕方についてご紹介します。

プロジェクト内に入り、左ペインの[Project Setting]を選択します。

設定画面が開いたら、[Repos]>[Repositories]>[Security]より、リポジトリ全体の権限を参照することが可能です。

次に、個々のリポジトリの権限の参照についてです。

全体権限と同様にプロジェクト内の設定画面に進み、[Repos]>[Repositories]を選択し、対象のリポジトリを選択します。

対象リポジトリを選択後、上段の[Security]を選択することで個々のリポジトリの権限を参照できます。

※ ここでは権限だけでなく、その他の設定も可能です。権限同様、全体での設定と個々のリポジトリでの設定があるため、注意が必要です。

ユーザーグループについて

リポジトリでも、各ユーザー各グループそれぞれで権限の設定を行うことが可能です。

また、ユーザーグループはプロジェクトで管理されているため、リポジトリのみのユーザーグループを作成することはできません。そのため、必要に応じてプロジェクト側でグループを整理し、リポジトリ単位の権限設定に利用できるようにする必要があります。

権限の付与

前途の通り、リポジトリには、全体の権限と個別の権限があります。

リポジトリ全体で権限設定は、個別の権限にも継承される設定となっていますが、全体の設定より継承させないよう設定することも可能です。

全体の権限より継承させない場合、個々のリポジトリで設定した権限により制御します。

<リポジトリ全体の権限>

<リポジトリ個別の権限>

最後に

プロジェクトレベルでは組織に依存し、リポジトリレベルの権限ではリポジトリ全体と個別に分かれていました。

Azure DevOpsでは、権限がより細かく細分化されているため、どこかしらで設定が漏れてしまうこともあるかもしれません。

そのようなことをなくすため、管理表のようなものを作り、管理・運用していくのも一つの方法です。

本記事ではAzure DevOpsの「プロジェクトレベル・リポジトリレベルの権限について」簡単に記載しました。

次の記事ではAzure DevOpsの権限編の最後として「各サービスレベルの権限について」を書こうと思います。

執筆担当者プロフィール
米澤 拓馬

米澤 拓馬(日本ビジネスシステムズ株式会社)

ハイブリッドクラウドグループの米澤です。ハイブリッドということもあり普段の業務ではクラウドとオンプレミスの両方を対応しております。趣味は、映画とNBAの鑑賞です。最近はゴルフをはじめまして、週末は打ちっぱなしに行き、練習の日々です。

担当記事一覧