メインコンテンツへスキップ

なぜ Devin を Azure DevOps と連携するのか?

Devin を Azure DevOps 組織と統合すると、Devin がリポジトリをクローンしたり PR を作成したりして、チームと効果的に協働できるようになります。この統合により、既存の開発ワークフローの中で Devin をシームレスに利用できます。 他の一部の SCM との統合とは異なり、Azure DevOps ではサードパーティ製アプリが同じような形では表示されません。その代わり、すべての接続の管理は Devin 内の Enterprise Settings > Integrations で行います。

前提条件

Azure DevOps 連携をセットアップする前に、次の内容を準備してください。
  1. Devin 専用の Azure DevOps ユーザーを作成する - Devin 専用の新しい Azure DevOps アカウント(例: [email protected])を作成します。この専用サービスアカウントにより、アクセス管理と監査ログを明確に分離できます。
  2. Devin ユーザーに AAD グローバル管理者権限を付与する - 新しく作成した Devin サービスアカウントには、Azure Active Directory (AAD) のグローバル管理者権限が必要です。グローバル管理者がテナントレベルで同意を付与しない限り、Microsoft はサードパーティアプリケーションのアクセスを制限します。
  3. 接続フローの準備をする - 連携を完了するには、次の状態である必要があります:
    • 個人アカウントで Devin にサインインしている
    • Devin サービスアカウント(AAD グローバル管理者権限を持つ新しいアカウント)で Azure DevOps にサインインしている
連携のセットアップ中は、両方のブラウザーセッションがアクティブである必要があります。接続を開始するための Devin アカウントと、OAuth 同意を承認するための Azure DevOps 上の Devin サービスアカウントの両方です。

認証と権限

Devin は Microsoft の MSAL (Microsoft Authentication Library) を利用した OAuth 2.0 によって Azure DevOps に接続します。OAuth フローを完了するには、Devin のサービスアカウントに AAD 全体管理者ロールが必要です。Azure DevOps はサービスアカウント経由で動作するため、Devin は登録済みアプリではなく、権限が付与された Devin のユーザー ID を使用して接続します。

RBAC と権限モデル

Devin の Azure DevOps 連携は、認証と認可を分離した厳格なロールベースのアクセス制御(RBAC)モデルで構築されています。これにより、Devin は Enterprise の管理者によって明示的に許可されたリポジトリにのみアクセスします。 Azure DevOps を Devin に接続すると、次の処理が行われます。
  1. 暗号化されたリフレッシュトークンを含み、ユーザーアイデンティティに紐づいた接続レコードが作成される
  2. Devin が、アクセス可能な組織、プロジェクト、およびリポジトリを定義する権限レコードを生成する
  3. 実行時には、すべてのリポジトリに対してチェックが行われ、アクセス境界を強制するために権限リストと突き合わせられる
Enterprise のお客様の場合、権限は複数の組織間で再利用でき、すべてのリポジトリレベルのアクセスは、Integrations 配下の Devin Enterprise UI から管理されます。

Azure DevOps の階層構造

Azure DevOps では、3 階層の構造 Organization > Project > Repository を採用しています。Devin はこの階層構造を内部で扱っており、接続しているユーザーにアクセス権がある限り、どの階層にあるリポジトリでも検出して操作できます。

インテグレーションのセットアップ

  1. 両方のアカウントにサインインします:
    • app.devin.ai で Devin アカウントにサインインします
    • 別のブラウザまたはシークレットウィンドウで、Devin サービスアカウント(AAD Global Admin 権限を持つアカウント)を使用して Azure DevOps にサインインします
  2. Enterprise の Devin アカウントで、Settings > Enterprise Settings > Integrations に移動します。
Azure DevOps Connected Accounts
  1. Integrations ページで、Connect to Azure DevOps ボタンをクリックします。
Connect To Azure DevOps
  1. 新しいブラウザタブが開き、Devin に Azure DevOps Organization へのアクセス権限を付与するよう求められます。Devin サービスアカウント(AAD Global Admin 権限を持つアカウント)でサインインしていることを必ず確認してください。
Azure DevOps Permissions
  1. 権限を付与すると、Enterprise Settings の Integrations ページに、Azure DevOps インテグレーションと接続済みリポジトリが表示されます。
Azure DevOps Integrated
  1. Devin が Azure DevOps にアクセスできるようになったら、Enterprise アカウント配下の任意またはすべての Sub-Organization に権限を付与できます。これを行うには、Azure DevOps インテグレーションで Git Permissions を選択し、Sub-Organization を選択して、Group または Repository レベルで権限を付与します。
Azure DevOps Git Permissions
  1. 権限を付与した各 Organization について、Devin’s Settings > Devin’s Machine に移動し、+ Repository をクリックして、リポジトリを Devin’s Machine に連携します。

Devin がアクセスできる内容

Devin の Azure DevOps 連携は、以下を含む Git 操作のみに特化 しています:
CapabilityDescription
List repositories利用可能なリポジトリとそのメタデータを表示
Read branchesブランチ情報とコミット履歴にアクセス
Create pull requestsコード変更のための新しい PR を作成
View pull requestsPR のイベント、コメント、ステータスにアクセス
Push code新しいブランチとコミットをリポジトリにプッシュ

Devin がアクセスできないもの

この連携機能は、意図的に Git の機能のみに範囲を限定しています。Devin は次のものに アクセスできません:
  • Work items (boards)
  • Pipelines or builds
  • Test plans
  • Artifacts
  • Wiki
  • Service connections
将来的に、組織として Devin にこれらの追加領域もサポートさせる必要がある場合は、より広範な OAuth スコープと新しいプロバイダー ロジックが必要になります。要件についてご相談の際は、[email protected] までご連絡ください。

セキュリティ上の考慮事項

このシステムは、最小特権の原則に基づいて設計されています。
  • OAuth は権限を付与し、RBAC が境界を強制する - OAuth は Azure DevOps へアクセスするための技術的な権限を付与しますが、実際のアクセス境界は追加の Git 権限レイヤーによって強制されます
  • 明示的なアクセスのみ - Devin は、Enterprise UI で明示的に付与されていないリポジトリやプロジェクトには決してアクセスしません
  • 認証情報の暗号化 - すべてのリフレッシュトークンは暗号化され、安全に保存されます
  • 監査証跡 - 専用のサービスアカウントを使用することで、Azure DevOps の監査ログで Devin のアクティビティを追跡しやすくなります
  • ブランチポリシーの順守 - Devin の PR は、他のコントリビューターと同じブランチポリシーおよびレビュー要件の対象となります

ベストプラクティス

  • 専用の Devin サービスアカウントを使用する - 個人アカウントではなく、Devin 用に作成された専用の Azure DevOps アカウントを必ず利用してください
  • ブランチポリシーを有効化する - マージ前にすべての変更が適切なレビュープロセスを経るようにするため、Azure DevOps でブランチポリシーを設定してください
  • リポジトリレベルの権限を使用する - 組織全体へのアクセスを付与するのではなく、Devin には必要な特定のリポジトリにのみアクセス権を付与してください
  • アクセスログを監視する - Devin のアクティビティについて、Azure DevOps の監査ログを定期的に確認してください
  • セットアップ内容を文書化する - Devin にどのリポジトリへのアクセス権を付与しているかと、その理由を社内ドキュメントとして管理してください
すべての変更がマージ前に適切なレビュープロセスを経るようにするため、Azure DevOps でブランチポリシーを設定することを推奨します。
Microsoft Entra ID が組織の HRIS(Human Resources Information System / 人事情報システム)と連携している場合、Azure DevOps との連携を完了するために、追加の構成手順が必要になることがあります。高度なセットアップについては、Devin サポートチームまでお問い合わせください。

トラブルシューティング

OAuth 同意が失敗する場合:
  • Devin サービスアカウントに AAD グローバル管理者権限が付与されていることを確認してください
  • Azure AD テナントでサードパーティアプリケーションへの同意が許可されていることを確認してください
  • OAuth フローを完了する際に、個人アカウントではなく Devin サービスアカウントで Azure DevOps にサインインしていることを確認してください
Devin からリポジトリが見えない場合:
  • Devin サービスアカウントが Azure DevOps 上の該当リポジトリにアクセスできることを確認してください
  • Devin の Enterprise 設定でリポジトリの権限が付与されていることを確認してください
  • リポジトリが Devin の Machine に追加されていることを確認してください
プルリクエスト(PR)の作成に失敗する場合:
  • Devin サービスアカウントが対象リポジトリに対する Contributer 権限を持っていることを確認してください
  • ブランチポリシーが PR の作成をブロックしていないことを確認してください
  • 対象ブランチが存在し、アクセス可能であることを確認してください

ネットワーク設定

Azure DevOps インスタンスで IP フィルタリングを有効にしている場合は、Devin の IP アドレスを許可リスト(ホワイトリスト)に登録する必要があります。 最新のリストについては、IP ホワイトリスト設定に関するドキュメントを参照してください。