Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Azure DevOps REST API活用とセキュリティのベストプラクティス-Worklo...

yutakaosada
November 30, 2024

Azure DevOps REST API活用とセキュリティのベストプラクティス-Workload Identity Federationのメリット

Visual Studio Users Community Japan 勉強会 #7 (.NET Conf 2024 in Roppongi Tokyo)
2024/11/30(土) 13:30-17:30
登壇資料

■アジェンダ
・Azure DevOps REST API概要と各種認証形式
- Personal Access Tokens (PATs) による認証
- Service Principalによる認証
- Managed Identityによる認証
・デモ
・New AzDOサービスコネクション Workload Identity Federation
・まとめ

各種AzDO Rest APIの認証形式を説明したうえで、恩恵の高いManaged ID認証のススメから、それと同様にシークレットの管理が不要となるOIDC(Work load Identity)の話に繋げていきます。

yutakaosada

November 30, 2024
Tweet

More Decks by yutakaosada

Other Decks in Technology

Transcript

  1. 3 今日話すこと • Azure DevOps REST API概要と各種認証形式 • Personal Access

    Tokens (PATs) による認証 • Service Principalによる認証 • Managed Identityによる認証 • デモ • New AzDOサービスコネクション Workload Identity Federation • まとめ
  2. 4 自己紹介 Yutaka Osada(長田 豊) • DevOps Engineer @Avanade Japan

    • お仕事 • Azureコンポーネントを活用したサービス構築 • 技術検証、パフォーマンスチューニングを得意とし、T-SQLが好き。 • 技術スタック • C#, .NET, Azure(PaaS), Azure DevOps, Sitecore • Please follow me
  3. 6 6 • Azure DevOpsとは • Microsoftが提供するDevOpsプラットフォームで、ソー スコード管理、CI/CD、プロジェクト管理、テスト管理、 パッケージ管理などのサービスを一元化し、チームの効 率化とコラボレーションを支援してくれるもの

    • Azure DevOps REST APIの役割 • 各サービスの操作や設定をプログラムで実行でき、以下 のようなユースケースがある。 › CI/CD自動化:デプロイ、テスト実行、パイプライ ンの更新 › リポジトリ管理:ブランチ、プルリクエストの操作 › プロジェクト管理:作業アイテムの生成、ステータス 管理 › 権限管理:アクセス制御 › 監視とレポート:パイプラインの状態把握と分析 Azure DevOps REST API概要 DevOpsを支えるAzure DevOpsとREST APIの活用 Azure DevOps 概念図
  4. 7 7 • PATの概要 • Azure DevOpsでのAPIアクセスに使えるトークンであり、そのトー クンを持つユーザが持つ権限と同等の操作が可能 • 使用場面として、手軽にAPIアクセスを行いたい場合や、特定の

    ユーザ権限に基づく操作が必要な場合に有用 • リスクと管理上の課題 • パスワードに似た役割を持ち、漏洩するとそのユーザ権限であらゆ る操作が可能となるため、慎重な管理がめられる • PATには有効期限がありますが、社員が退職した場合やPATが失 われた場合に再発行の手間や不明確な管理が発生するリスクが 顕在する • 対策とベストプラクティス • 短い有効期限を設定し、定期的な更新と利用状況のモニタリング を徹底 • 最小特権の原則に従い、不要なアクセス権を付与しないことで漏 洩時の影響を軽減 Personal Access Tokens (PATs) による認証 シンプルな認証手法ながらリスクも伴うPersonal Access Token
  5. 8 8 • Service Principalの概要 • Azureで作成したService PrincipalをAzure DevOpsのユー ザとして登録し、その権限を使用してAPIにアクセス可能な形式

    • Bearerトークン(アクセストークン)を介して認証するため、アク セスはトークン経由で管理される • セキュリティと利便性 • PATよりも安全なアクセストークンベースの認証により、セキュリティ を強化 • 制限と管理課題 › PATと比べ、Service Principalでは権限の詳細設定が難 しい。 › アクセストークンの取得に必要なクライアントシークレットの有 効期限を管理する必要がある Service Principalによる認証 アクセストークンでセキュリティを強化するService Principal認証
  6. 9 9 • Managed Identityの概要 • Service Principalと同様に、Azureで作成したManaged IdentityをAzure DevOpsユーザとして設定し、その権限で

    APIアクセスが可能 • Bearerトークン(アクセストークン)を使用する形式で、API アクセスを行う • Managed Identityの利点 • クライアントシークレット不要 › アクセストークン取得時にクライアントシークレットを使用せ ず、クライアントシークレットの有効期限を意識する必要 が無い • セキュリティの向上 › 自動でAzureによって管理されるため、運用負荷を軽減 しつつ、トークンベースの認証が安全に提供される Managed Identityによる認証 クライアントシークレット不要でよりセキュアなManaged Identity認証
  7. 11 11 デモの流れ • PAT認証の準備 • AzDOでPATを作成 • Service Principal認証の準備

    • Azure Entra IDへアプリの登録(サービスプリンシパル) • シークレットの作成 • Azureで作成したSPをAzDOのユーザとして登録 • Managed Id認証の準備 • Azure Managed Idを作成 • Azureで作成したManaged IdをAzDOのユーザとして登録 C#のSDKを利用してそれぞれの認証形式でAzure DevOps Rest APIを発行する
  8. 15 15 • 利用するライブラリとバージョン <ItemGroup> <PackageReference Include="Azure.Identity" Version="1.13.1" /> <PackageReference

    Include="Microsoft.TeamFoundationServer.Client" Version="19.225.1" /> <PackageReference Include="Microsoft.VisualStudio.Services.InteractiveClient" Version="19.225.1" /> </ItemGroup> C#で利用するライブラリとバージョン .NET 9のWindows Formを利用する https://login.microsoftonline.com/common/v2.0/oauth2/token https://dev.azure.com /{{organization}}/{{project}}/_apis/wit/workitems/{{workItemId}}?api-version={{api-version}}
  9. 17 17 • Workload Identity Federationの概要 • クライアントシークレットの有効期限を意識せずに、 AzureとAzure DevOpsを安全に接続するための認

    証方式 • Azure Resource Manager、Docker Registry(Azure Container Registry)で使用可 能 • メリットと構成 • Service PrincipalおよびManaged Identityのど ちらでも利用可能 • シークレットの有効期限の管理が不要となり、継続的 なトークン管理の手間が省けるため、長期運用に適し ている AzDOサービスコネクション Workload Identity Federationの活用 クライアントシークレット不要でシームレスにAzureとAzure DevOpsを接続
  10. 19 19 まとめ Azure DevOpsの認証方式を理解し、適切な選択とセキュリティ強化を実現 認証方式 概要 利点 課題/リスク 適用シナリオ

    Personal Access Tokens (PAT) Azure DevOpsで個人用に生成 するトークンでAPIにアクセス - シンプルで迅速に利用可能 - 特定のユーザ権限で操作可能 (柔軟なアクセススコープの制 御が可能) - 漏洩時にそのユーザの保持す る権限操作が可能 - 有効期限の管理が必要 - 再発行の手間 簡易性を重視した短期的なAPI アクセス Service Principal Entra IDのService Principalを用 いてAPIにアクセス - アクセストークンベースの認 証 - 自動化に適している - クライアントシークレットの 有効期限管理が必要 - 権限設定の柔軟性が限定的 シークレット管理が可能な長 期的な自動化シナリオ Managed Identity Azureリソースに紐づくIDを用 い、アクセストークンでAPIに アクセス - クライアントシークレット不 要 - 自動管理により運用負荷を軽 減 - セキュリティが強化 - Azureリソース内でのみ利用 可能 長期的なセキュリティ強化と 運用効率を重視したシナリオ Workload Identity Federation Entra IDと外部IDプロバイダ間 の連携で認証 - シークレット不要 - Azure DevOpsや他サービス と安全に接続可能 - 長期運用に適している - 手動でコネクションを作成す る場合設定がやや複雑 マルチクラウド環境や外部 サービスと連携が必要な長期 運用シナリオ • 選択のポイント 簡易性が重要ならPAT、セキュリティや長期運用を重視するならManaged IdentityやWorkload Identity Federationが適している 各認証方式の特徴を活かし、用途に応じて最適な認証を組み合わせることで、セキュアで効率的な環境を構築していければと。
  11. 21 21 References [Microsoft Learn - サービス プリンシパル と マネージド

    ID を使用する] https://learn.microsoft.com/ja-jp/azure/devops/integrate/get- started/authentication/service-principal-managed-identity?view=azure-devops [Microsoft Learn - Azure Resource Manager Workload Identity サービス接続を手動で設定] https://learn.microsoft.com/ja-jp/azure/devops/pipelines/release/configure-workload- identity?view=azure-devops&tabs=managed-identity