Slide 1

Slide 1 text

Azure DevOps REST API活用とセキュリティのベストプラク ティス 〜Workload Identity Federationのメリット〜 2024年11月30日 yutaka.osada

Slide 2

Slide 2 text

2 イントロダクション

Slide 3

Slide 3 text

3 今日話すこと • Azure DevOps REST API概要と各種認証形式 • Personal Access Tokens (PATs) による認証 • Service Principalによる認証 • Managed Identityによる認証 • デモ • New AzDOサービスコネクション Workload Identity Federation • まとめ

Slide 4

Slide 4 text

4 自己紹介 Yutaka Osada(長田 豊) • DevOps Engineer @Avanade Japan • お仕事 • Azureコンポーネントを活用したサービス構築 • 技術検証、パフォーマンスチューニングを得意とし、T-SQLが好き。 • 技術スタック • C#, .NET, Azure(PaaS), Azure DevOps, Sitecore • Please follow me

Slide 5

Slide 5 text

5 Azure DevOps REST API 概要&各種認証形式

Slide 6

Slide 6 text

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 概念図

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

10 デモ

Slide 11

Slide 11 text

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を発行する

Slide 12

Slide 12 text

12 12 PAT認証の準備 Azure DevOpsでPersonal Access Tokenを作成

Slide 13

Slide 13 text

13 13 Service Principal認証の準備 Entra IDへアプリの登録(サービスプリンシパル)→シークレット or 証明書作成→AzDOのユーザとして登録

Slide 14

Slide 14 text

14 14 Managed Id認証の準備 Azure Managed Idを作成→AzDOのユーザとして登録

Slide 15

Slide 15 text

15 15 • 利用するライブラリとバージョン 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}}

Slide 16

Slide 16 text

16 New AzDOサービスコネクション Workload Identity Federation

Slide 17

Slide 17 text

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を接続

Slide 18

Slide 18 text

18 まとめ

Slide 19

Slide 19 text

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が適している 各認証方式の特徴を活かし、用途に応じて最適な認証を組み合わせることで、セキュアで効率的な環境を構築していければと。

Slide 20

Slide 20 text

20 Appendix

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

22 22 References • 下記の記事にSrcを挙げています。 C#で知るAzure DevOpsのセキュリティ(PAT、サービスプリンシパル+証明書)の実践利用 https://zenn.dev/yutakaosada/articles/1a61b2741e0644

Slide 23

Slide 23 text

23 23