Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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