Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Azure DevOpsとセキュリティ

2,713 views

Published on

Security guidance for Azure DevOps Server and Service.

Published in: Technology
  • This whitepaper explains how we built a continuous testing framework for one of our high value enterprise clients and the challenges we faced along with the solutions we created to overcome those challenges. http://bit.ly/2FTSWT2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Azure DevOpsとセキュリティ

  1. 1. かめがわ かずし @kkamegawa Azure DevOpsと セキュリティ
  2. 2. Self-intrduction  KAMEGAWA Kazushi / Engineer Microsoft MVP for Developer Technologies (2012/7~)  Twitter : @kkamegawa Facebook : https://www.facebook.com/kkamegawa/ Blog : http://kkamegawa.hatenablog.jp SlideShare : https://www.slideshare.net/kkamegawa/  出版など  アジャイルでやってみた。 http://www.shuwasystem.co.jp/products/7980html/4740.ht ml  Build InsiderでWindows Subsystem for Linux掲載中 http://www.buildinsider.net/enterprise/wsl  Team Foundation Server 2017コンプリートガイド https://www.amazon.co.jp/dp/B073YCLHTC/
  3. 3. This contents based on 2019/1/12
  4. 4. 今日持ち帰ってもらうこと Azure DevOpsのセキュリティ設定 アカウント 回線 チーム設計 権限 外部システム連携(REST APIなど)
  5. 5. 今回触れないこと パブリックプロジェクトでの設計 基本フルオープンなので
  6. 6. 知りたいのはどちら? Azure DevOps Server (オンプレミス) Azure DevOps Service (クラウド)
  7. 7. Azure DevOps Service Azure DevOps Serviceの構成 MSアカウント 組織アカウント Express Route
  8. 8. Azure DevOps Serverの構成 Azure DevOps Server Web Server Database Server SQL Database Web Server Domain Controller
  9. 9. 最初に考慮する事項 Azure ADかMSアカウントか 法人はAzure ADで構築をお勧め(認証以外の機能差はない) MSアカウントで作ってAADへの移行もできるが難しい どのリージョンに置くか 日本リージョン未提供 近いのは東アジア(香港) サインアップ時にIPアドレスから自動判定される 中国とドイツは法律の制限上用意されているリージョン 閉域網でなくてはならないか Azure DevOps Service
  10. 10. Microsoftアカウント Azure AD(Office 365) アカウント管理 個人管理 多要素認証などのセキュリティ は本人任せ Azure ADと連携するサービ ス連携が困難 (Teams, Flow等) Azure ADへの移行もできる がちょっと大変 組織がデバイス、アカウント単位 で管理可能 オンプレミスと同期可能 同一Azure AD内のサービスと の連携が可能(Teams, Flow) グループ同期が遅い(1h程度) MSアカウント含む組織外アカウ ントも招待可能 (組織ポリシーによる) Azure DevOps Service
  11. 11. 組織外アカウントの招待の問題 他組織(パートナー、発注元)をAzure DevOpsに招待したい Azure B2Bで外部AADユーザーを招待 可能なので、できればそこから。 https://docs.microsoft.com/ja-jp/azure/active-directory/b2b/what- is-b2b MSアカウントでも招待可能 大組織ではAzure ADの管理は別部門の ため、部門判断では難しい コンプライアンス セキュリティ 費用 Azure DevOps Service Azure AD Join? Employees Azure AD (Office 365) Partner Developer Enterprise Company Azure AD 必須
  12. 12. Azure AD B2Bでの解決方法 Azure AD(無料版)を作って、 その組織にAzure DevOpsを 作る みんなAzure AD B2Bで参加 ライセンスやセキュリティの問題 を解決できる Azure DevOps Service https://kkamegawa.hatenablog.jp/entry/2018/05/25/071259 Partner Azure AD Azure AD (Azure DevOps) Azure AD (Office 365) Azure AD B2B Azure AD B2BPartner Employees Enterprise Company Partner Company Azure AD 必須
  13. 13. Express Route(ER)でセキュアに?  Azure と 拠点を直結する回線のこと。 https://azure.microsoft.com/ja-jp/services/expressroute/  IIJ, Softbank, Equinix, NTT Communicationsなどが提供  キャリアとAzureサブスクリプションの契約が必要  50Mbps以上がAzureの想定帯域。200Mbpsまでの増速は容易、減速は不可  無制限/従量制が選択可能 意外と従量制のほうが安くなるケースが多いかもしれないらしい https://blog.o365mvp.com/2019/01/10/recommendation-of-express- route-metered-dataplan/  Microsoft Peeringのみ対応  CDNへのアクセスにInternet接続必須なので、閉域網のみは不可 https://blogs.msdn.microsoft.com/devops/2018/10/23/expressroute-for-azure-devops/  JavaScript, 画像, Font, StylesheetなどをCDNから取得  Web拡張機能もCDN経由  Web UIなしで、すべてREST APIで完結できるなら、ERのみでもありかも Azure DevOps Service
  14. 14. ライセンスによるセキュリティ Azure DevOps Service Azure DevOps Server ライセンスでできることが変わるので、 不要な人に権限を渡さない。 Stakeholder BASIC Visual Studio Subscriber ライセンス 購入必要 明示的に 有効化した時
  15. 15. ライセンス詳細 ライセンス 概要 使えるサービス BASIC • Azure DevOpsの以下の機能が 使えるユーザー。5人までは無料。 • 6人目以降は6ドル/月 Azure Boards Azure Repos Azure Pipelines Stakeholder • 発注元などの作業を管理している 人だけ。 • 無制限に作成可能 Azure Boards Azure Pipelines(許可した場合) Visual Studio Subscriber • Visual Studio Enterprise Subscriptionを購入したユー ザー(月額課金含む) Azure DevOpsの全サービス 追加数に応じてPipelinesの並列 度が上がる Azure DevOps Server CAL • Azure DevOps Server/Serviceどちらも使える CAL BASICと同じ MarketplaceでTest/Artifacts を購入可能 Azure DevOps Service Azure DevOps Server 計算はツールで https://azure.microsoft.com/ja-jp/pricing/calculator/ (Service) https://azure.microsoft.com/ja-jp/pricing/details/devops/server/ (Server)
  16. 16. Azure DevOpsアカウント管理 所有者は最初に作った人 人事異動、プロジェクト終了時 などにオーナーを変更可能 費用負担も変わるので、事前 に相談しておきましょう Azure DevOps Service https://dev.azure.com/{アカウント}/_settings/organizationOverview https://docs.microsoft.com/ja-jp/azure/devops/organizations/billing/set-up- billing-for-your-organization-vs?view=vsts
  17. 17. Azure ADのグループ参照 Azure DevOps Service Azureポータルで作ったAADグループを Azure DevOpsで利用可能 ライセンス一括割り当てで使用できる ※:ただし、同期には時間がかかる(1h間隔) https://dev.azure.com/{account}/_settings/users Azure AD 必須
  18. 18. クライアントで多要素認証を強制したい MSアカウントでは個人に依頼する https://support.microsoft.com/ja-jp/help/4028586/microsoft-account-turning- two-step-verification-on-or-off Azure ADベースではCAPを設定する https://docs.microsoft.com/en- us/azure/devops/organizations/accounts/manage- conditional-access?view=vsts Azure DevOps Service
  19. 19. Azure DevOps Server での認証と暗号化 必ずActive Directory(ADDS)を使 用する 可能ならば暗号化する ADCSの認証局でお安く https://docs.microsoft.com/ja-jp/windows- server/networking/core-network-guide/cncg/server- certs/install-the-certification-authority NTLMよりもKerberosを使う (TFS2017以降推奨) https://blogs.msdn.microsoft.com/devops/2 017/01/24/team-foundation-server-2017- and-kerberos-authentication/ Azure DevOps Server
  20. 20. アカウント設定で外部接続を制限する 接続ポリシー 説明 Alternate authentication credentials 以前、MSアカウントしかサポートしていなかった頃の名残。Windows 以外の環境でAzure DevOpsに接続するために使用。現在は非推奨 Third-party application access via OAuth OAuthで認可する他社提供のアプリケーションを許可するか。 SSH authentication SSHでの接続を許可するか External guest access 外部組織のゲストユーザーを許可するか Allow public projects プロジェクトを一般公開できるようにするか。仕事であればオフ推奨 Enable Azure Active Directory Conditional Access Policy Validation Azure ADのCAPを適用する。特定のIPから、証明書、MFA必須と いったアクセス制御ができるようになる。 Azure DevOps Service Azure DevOps Server https://dev.azure.com/{アカウント}/_settings/policyhttp://{server}/tfs/{Collection}/_usersSettings/
  21. 21. Azure Active Directory or MS Account Azure DevOps Serviceの構成 Azure AD内に複数の Azure DevOpsを作成可 能 アカウント内に複数の Team Projectを作成可 能(上限は未確認) 現在は複数のアカウントを またいで作業項目の参照、 検索ができるようになりつ つある Azure DevOps Account Team Project Azure DevOps Service Team Security Group Azure DevOps Account Team Project Team Project Team Project Team Project Team Project Team Project Team Project Team Team Security Group Team
  22. 22. Active Directory Azure DevOps Serverでの構成  クラウドサービスにはない Collectionという単位がある  Collection内に複数のTeam Projectが作成できる  CollectionはSQL Serverの データベース単位で分割される  容量はSQL Serverに依存  それでも不足する要件があれば、 別サーバーを計画する Azure DevOps Server Azure DevOps Server Collection Collection Azure DevOps Server Azure DevOps Server Azure DevOps Server Team Project Team Security Group Team Project Team Project Team Project Collection Collection Collection Team
  23. 23. プロジェクトの設定 チームプロジェクトごとに Public/Private(既定)を設定 可能 公開されたくない場合はアカウ ント単位で不可設定にする 使用しない機能はOffに 例:レポジトリをGitHub使って いればReposは不要 Azure DevOps Service Azure DevOps Server
  24. 24. Azure DevOpsのユーザー管理 Azure DevOps Service https://dev.azure.com/{account}/_settings/users • Azure DevOpsを 作った管理者がアク セス可能なユーザー を追加 • 組織で運用する場合、 ユーザー単位ではな く、グループ単位で の追加を推奨 ライセンスも自動割 り当て(P17参照)
  25. 25. Azure DevOps Serverのユーザー管理1 Azure DevOps Server • Azure DevOps Serverの場合、管理コンソールから有効なユーザーを追加も可能 • 通常Active Directoryのグループを使って管理すると楽 • 「プロジェクトコレクションの有効なユーザー」に追加しないとアクセス不可
  26. 26. Azure DevOps Serverのユーザー管理2 Azure DevOps Server • Azure DevOps Serverの場合、管理コンソールから有効なユーザーを追加も可能 • 通常Active Directoryのグループを使って管理すると楽 • 「プロジェクトコレクションの有効なユーザー」に追加しないとアクセス不可
  27. 27. Azure DevOps Server権限管理 Azure DevOps Server • Azure DevOps Serverのグループに対す る権限を管理する。 • ほかのMicrosoft製品同様、拒否が最優先 で評価されるので、注意
  28. 28. Azure DevOps ServerのCollection Azure DevOps Server SQL Server Default Collection New Collection Team Project Team Project Team Project Team Project • Collection単位にSQL Serverの データベースが作成される • Worker Processは共有 IIS Worker Process
  29. 29. Collectionを分割する方針 バックアップポリシーが異なる場合 Azure DevOps ServerはデータはSQL Server セキュリティポリシーが異なる場合 データベースに異なる照合順序を使いたい場合 Azure DevOps Server
  30. 30. チームプロジェクトの考え方 Team Project Azure DevOps Service Azure DevOps Server Azure Repo Security Group Team Team Team Team Security Group Team Team拒否 許可 追加 追加 Teamの一部を Security Groupに 追加
  31. 31. チームプロジェクトを分割する方針 リリースするプロダクト単位 外部接続(AzureをはじめとするWeb連携) Service Hook GitHub(Azure Boardsを連携) SVN, GitHub, Docker Hubなどの連携範囲 (OAuth, パスワード) Azure DevOps Service Azure DevOps Server
  32. 32. 外部サービス接続 Azure DevOps Service Azure DevOps Server • チームプロ ジェクト単位と なるので、コラ ボレーション ツールへの連 携は慎重に
  33. 33. プロジェクト内の”Team” 作業を一緒に実施する人たち の集まり。 TeamごとにIterationや Areaを設定して、プロダクトの スケジュールを調整する Teamごとにセキュリティを設 定できるので、チームプロジェ クトの管理者というグループと まとめられる Azure DevOps Service Azure DevOps Server Team Project Team-A Team-B Team-C Team-D
  34. 34. TeamのArea Area(区分)で作業の種類 を設定する 自由に設計可能。Webや バッチ、モジュール名など 大きなプロジェクトだと、 Areaがたくさんできる チームが担当するAreaだけ 指定すると使いやすい Azure DevOps Service Azure DevOps Server
  35. 35. TeamのIteration ScrumのSprint, Agileの Iteration 長期間にわたるプロジェクトだと Iterationが多くなり選択しづら くなる Teamで使用するIterationを選 択すると使いやすくなる バックログにIterationが出ない なと思ったら、ここ確認 Azure DevOps Service Azure DevOps Server
  36. 36. 隣の人は何する人ぞ? Azure DevOps Service Azure DevOps Server https://docs.microsoft.com/en-us/azure/devops/boards/plans/review-team- plans?view=vsts&tabs=new-nav • Delivery Plan(計画) • チーム/プロ ジェクトを横 串で一気通 貫参照
  37. 37. Delivery Planの設計 Azure DevOps Service Azure DevOps Server 参照するチーム とプロジェクト フィルタリング 条件
  38. 38. Teamの設計 Teamを作る SecurityでTeamを登録 Git/TFVCのレポジトリにTeamを割り当てる 特定のレポジトリにアクセスされたくないTeamは 明示的にdeny設定 Azure DevOps Service Azure DevOps Server
  39. 39. チームプロジェクト内のGitアクセス 既定では高い権限のユーザー のみアクセス可能 小規模チームであれば、全員 Project Administratorに 追加でも可 大規模環境はチーム単位で権 限設計が必要 Azure DevOps Service Azure DevOps Server https://dev.azure.com/{account}/{TeamProject}/_settings/repositories
  40. 40. チームに対して権限をつける レポジトリ/一括で Team, Groupを選択 して権限を設定 Deny:拒否(最上位) Not Set:権限なし Allow:許可 https://dev.azure.com/{account}/{TeamProject}/_settings/repositories Azure DevOps Service Azure DevOps Server
  41. 41. よくあるパターン ビルド定義にレポジトリ が出てこない →レポジトリにアクセス権 をつけていない Azure DevOps Service Azure DevOps Server
  42. 42. ブランチのセキュリティ ブランチ毎のポリ シー迂回 強制push可否 更新権限 ロック解除 ポリシー編集 Azure DevOps Service Azure DevOps Server
  43. 43. ブランチポリシー Gitのブランチに対して条件 を設定して保護する。 最低レビュー人数 作業項目関連付け Pull requestのコメントが解 決しているか マージ戦略(squash/fast- forwardしない) Pull Request時にビルド実行 外部サービスを使用して検証 Azure DevOps Service Azure DevOps Server
  44. 44. Wikiの編集 特定のTeam, グルー プに対して、権限をつ ける Wikiの中身はGitなの で、Gitの権限と同じ設 定ができる Azure DevOps Service Azure DevOps Server
  45. 45. 外部連携 Azure DevOpsプロ ジェクト作成時の権限が必 要になる Azure DevOps Service
  46. 46. ビルド定義のセキュリティ ビルド定義単位で権限を設定 管理者が定義を作って、実行及 び、編集はチームに渡す、と いった運用も可能 パスワードはKeyVault, Libraryに格納して保護する Azure DevOps Server Azure DevOps Service
  47. 47. リリース機能のセキュリティ リリース定義ごとのセ キュリティもビルドと 同じ考え。 承認者(approvers) はチームに委譲という ことも可能 Azure DevOps Server Azure DevOps Service
  48. 48. REST API 原則PATを使う 30日,60日,90日,独自 Fullか特定の機能を選択 期限切れ、作成時には メール通知がある https://dev.azure.com/{account}_usersSetting s/tokens
  49. 49. まとめ Azure DevOpsのセキュリティは複雑 インフラ、アカウントの種類、Azure固有事情…etc 権限の基本はTeamを中心。 少人数で開始して、全員管理者で少しずつ慣れてい く
  50. 50. 参考 Azure DevOps Document https://docs.microsoft.com/en-us/azure/devops/?view=vsts

×