Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Avatar for yutakaosada 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)の話に繋げていきます。

Avatar for yutakaosada

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