はじめに
これはAzure DevOpsアドベントカレンダー2019 9日目の記事です。
Ignite The Tour Tokyo 2019でAzure DevOpsを運用する際のセキュリティについてお話してきました。資料はまだ公開されていないのですが、そのうち公開されるはずです。
録画は公開されないと聞いています。会場の都合やスライド見えるようにということで、あまりきつきつにせず、喋りで結構補ったので、参考URLも見てください。
それでも会場ではスライドの下の部分が見えなかったという声をいただいています。すいません…。
Azure DevOpsのセキュリティはAzure ADで運用するとき、結構高度な機能が使えるようになります(お金もかかります)。お金かかるポイントがそれなりにあるので、あらかじめ決めておく必要があります。
Azure ADとAzure DevOps
Azure DevOpsはAzure ADベースで作ることができます。ある程度の組織で使っていて、IDの統合管理するならば、MSアカウントではなく、Azure ADベースにするのがおすすめです。
Office 365あればそのAzure ADを使うのがいいでしょう。ただし、お客さまに提供するSIの環境であれば相手方に作ってもらったほうがいいです。
この例ではB2Bで作ってお互いがゲスト参加ですがこれで作るったケースでいいところはAzure AD消せば全部消えてしまうところですね。
ただし、Teamsを使う場合、TeamsのBoardsアプリは使えるのですが、タブに統合はできませんので、注意してください。
あと、Azure ADを別に立てて、B2Bで入るとき、管理0だと所属元のIT部門がたいていいい顔しません。開発したいから作っているだけなので、あまり高度なことはやりたくないんですね。それもわかりますが、抜け穴作っていると思われるとお互いいいことないので、そこは注意しましょう。
権限について
Azure ADのグループとAzure DevOpsのローカルで使うAzure DevOpsグループの二種類あります。基本的なおすすめはAzure DevOpsグループです。
Azure ADのグループは規定値で50万という上限がある(MSに言えば増やせます)のと、業務単位やOffice 365でもどかどかグループ作ることになるので、結構大変です。
基本的にはライセンス周りや、Azure ADのセキュリティに依存するところをAzure ADグループにしたほうがいいでしょう。
Azure DevOpsを作っているサブスクリプションの権限は制限しますが、デプロイ先のサブスクリプションはプロジェクトごとに管理も可能です。
これをどうやって管理するかいろいろ方法はありますが、サブスクリプション単位でチームプロジェクトを分割する、というのも一つの方法です。
Organization 管理
公開される資料では"Organization作成を止める権限はない"と書いていますが、12/6付でAzure ADにOrganization作成権限を設定できるようになりました。
危ないですね。これだからクラウドサービスは(笑)。
ほかに大きいところでは、Azure ADのゲストユーザー自身を秘匿したい、ですね。Organization 内ではユーザーの検索ができてしまうので、検索で出てきては困るという場合、分割します。
接続経路
Express RouteかPublic Internetかです。Azure AD P1の条件付きアクセスポリシーは高いので買えないけど、どうしてもFirewallで頑張りたいというときはIPアドレスが明示されているので、ここを使ってください。
前は「Azureのサービスですよ」としか明示されていなかったので、大きく変わりました。
グループ管理について
所属グループとかつい作りたがるのですが、混乱するのでお勧めしません。プロダクトチーム、ロール単位(コードレビュー、ビルドAdmin、レポジトリ管理者、etc)といった、役割でのチームをまず検討してみてください。