2022/12/19第36回 Office 365 勉強会での、政岡の登壇資料になります。
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定1Exchange Online の基本認証が廃止された今こそ学んでおきたいサービスプリンシパル利用株式会社リクルート政岡 裕士2022年12月19日第36回 Office 365 勉強会© Recruit Co., Ltd. All rights reserved.
View Slide
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定2 2(C) Recruit □□□□□□□□ Co., Ltd. All rights reserved.• Yuji Masaoka | まっぴぃ• Twitter: @mappie_kochi• Zenn: ymasaoka• 株式会社リクルート(2019/5 ~ )• リクルートグループ従業員向け Microsoft 365 / Microsoft Azure 関連の管理運用• コミュニティ活動• Japan Azure Cosmos DB User Group – Organizer• Japan SQL Server User Group – Staff• 趣味• Perfume / Disney / Gym(Anytime Fitness)/ SwitchBot自己紹介
会社紹介
リクルートグループについて4創業 1960年3月31日 「大学新聞広告社」としてスタートグループ従業員数51,757名 (2022年3月31日時点)連結売上収益 28,717億円 (2021年4月1日~2022年3月31日)連結営業利益 3,789億円 (2021年4月1日~2022年3月31日)グループ企業数連結子会社 351社 関連会社8社 (2022年3月31日時点)ビジョン・ミッション
リクルートグループのうちメディア&ソリューション事業を推進する会社※2012/10 中核事業会社・機能会社に分社 → 2021/4「リクルート」として統合リクルートについて5リクルートホールディングスリクルートキャリアリクルート住まいカンパニーリクルートライフスタイルリクルートジョブズリクルートマーケティングパートナーズリクルートスタッフィングスタッフサービス・ホールディングス人材派遣事業RGF Staffing B.V.HRテクノロジ― 事業RGF OHR USA, Inc.その他海外派遣グループ会社Indeed,Inc.Glassdoor,Inc.リクルートテクノロジーズリクルートコミュニケーションズ事業会社機能会社マッチング &ソリューション事業(株)リクルート
リクルートの事業内容について(主なサービス)6選択・意思決定を支援する情報サービスを提供し、「まだ、ここにない、出会い。より速く、シンプルに、もっと近くに」を実現するメディア&ソリューションSBU HRテクノロジーSBU 人材派遣SBU国内派遣 海外派遣
リクルートのビジネスモデルについて7リクルートには、ユーザーとクライアントという2つのお客様が存在します。企業と人(B to C)、企業と企業(B to B)、人と人(C to C)、すべての間に立ち双方にとって最適なマッチングを図る「場」を提供しています。ユーザーとクライアントを新しい接点で結び、「まだ、ここにない、出会い。より速く、シンプルに、もっと近くに」の場を創造する
本題
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定9 9Exchange Online は多要素必須の時代へ突入POP/IMAP、EWS、MAPI などは単一要素認証を無効化(SMTP Auth もいずれ無効化予定)■日本語Exchange Online における基本認証の廃止 – 2022 年 9月の更新■英語Basic AuthenticationDeprecation in ExchangeOnline – September 2022Update
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定10 10• 有効化された後、管理者権限で明示的にオフにすることも可能ではある(が、このご時世に多要素オフ=セキュリティ意識が怪しいと見られる可能性あり)補足)Azure AD も多要素がデフォルトの時代へ10■日本語2022 年 6 月末から「セキュリティの既定値群」の有効化が促されます (対象 : 一部のテナント)■英語Raising the BaselineSecurity for allOrganizations in the World条件付きアクセスで多要素条件を細かく設定することも可能多要素認証は、企業として必要最低限のセキュリティ施策の1つ(海外では当たり前)
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定11 11• 2020 年に PJ 発足、2021/5 から段階的に多要素を適用開始• 多要素適用によって発生する業務影響についての相談窓口を設置サービスプリンシパルや OAuth への切替対応を支援• 2022/10 以降は、すべての Microsoft 組織アカウントは多要素必須リクルートはどのように多要素対応をしたか
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定12 12• わかったこと=日本はまだまだセキュリティへの意識が弱い続々と寄せられる、多要素に対するさまざまな声社員多要素入れたら業務影響しかないから無効化しろまっぴぃ会社のセキュリティ規程で必須だから無理なんです…社員プログラムで自動化してるけど、コードのメンテができない(工数もない)から適用期限を来年にしてほしいまっぴぃMS 側で期限が決まっているのでなんとかそれまでに頑張って...(ちなみに参考コードはここ / VBA だったら... etc.)セキュリティ = 企業の最優先するべき事項 の意識を!
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定13 13• MSAL:Microsoft Authentication Library の略• 対応言語もさまざま存在(.NET / Java / JavaScript / Python etc.)• MSAL 経由でサービスプリンシパルから Microsoft Graph API を実行プログラムは MSAL + サービスプリンシパルに移行■詳細は Microsoft Docs を参照Microsoft Authentication Library (MSAL) の概要ADAL や EWS は Graph API に移行が必要になっている
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定14 14• ローカル表現とグローバル表現• サービスプリンシパル = 自テナント内専用の識別子• エンタープライズアプリ(アプリケーション)= 全テナントで共通の識別子• サービスプリンシパルとエンタープライズアプリは 1 vs 1 の関係• 実際に Microsoft Graph の権限許可はサービスプリンシパル側で指定補足)サービスプリンシパル と エンタープライズアプリ■詳細は Microsoft Docs を参照Azure Active Directory のアプリケーションオブジェクトとサービス プリンシパル オブジェクト
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定15 15• 「バッチ処理 = とりあえずアプリケーションの許可を付与」は非常に危険!「アクセス許可の種類 - アプリケーションの許可」 の罠ちゃんと見て付与をしていますか?意味を理解して付与をしていますか?例)Mail.Send の場合
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定16 16• 委任されたアクセス許可• 原則、承諾されたアカウント分だけしか実行できないようになっている• 委任されたアクセス許可であっても、「管理者の同意」ボタンには注意• アプリケーションの許可• Microsoft Graph API のアクセス許可だけ設定している状態は危険• メールが有効なセキュリティグループ & アプリケーションのアクセス許可ポリシーを使用して、利用できる対象に制限を付与Mail.Send や Mail.Read は限られた ID だけ OK に縛る
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定17 17• Exchange Online PowerShell v3 などを使用し作成• サービスプリンシパルでメールの送受信を行うことを許可するユーザーアカウントをグループメンバーとして追加• 実際のコマンドについては、公開済みのブログ記事を参照• Exchange Online 管理センターなどでも作成可能• なぜメールが有効なセキュリティグループを使うのか• 後の運用が楽だから(対象の追加/除外は、グループメンバーの操作だけで完結)メールが有効なセキュリティグループの作成
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定18 18• サービスプリンシパルとメールが有効なセキュリティグループを紐づける• アプリケーションのアクセス許可ポリシーで紐づけることで、許可したユーザー以外のGraph API 利用を拒否• 実際のコマンドについては、公開済みのブログ記事を参照アプリケーションのアクセス許可ポリシー
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定19 19• 可能な限り、証明書利用が好ましい(個人的意見です)• クライアントシークレットは、値が流出しただけで危険• 証明書の場合、公開鍵 + 秘密鍵 の組み合わせで流出しないと意味がない• 証明書は利用者側で発行したもののうち、公開鍵だけを AAD に登録するのみ• SaaS 製品などによっては証明書に対応していない例もあり• できる限り、他社に流出しないような取り扱いを心がける(裏側の仕様を完全に把握することは難しいが)• 数年間にわたって同じ値を使わせるような Docs には要注意(流出した際のリスクが大きい)余談)証明書 と クライアントシークレット どっちを利用?
DEMO
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定21 21• メール同様、アプリケーションの許可には注意• Sites.Selected 以外は基本使わないこと余談)SPO / OneDrive でのアクセス制限21
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定22 22• Exchange Online の基本認証はもう利用できない(廃止)• SMTP Auth は影響の大きさから適用が見送られているが、いずれ実施• Azure AD もデフォルトで多要素認証が必須になっている• 海外では多要素認証は当たり前• 条件付きアクセスで条件を細かく設定したい、などの目的以外で、機能をオフにしない• これまで ID/PASS でやっていた処理はサービスプリンシパルへ移行• サービスプリンシパル = アプリ用の ID のようなもの• サービスプリンシパルに Graph API のアクセス許可を付与• プログラムからは MSAL を通してリソースにアクセスまとめ1:多要素認証は導入が当たり前の時代
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定23 23• 利用単位に制限を設けられるかをしっかり確認して付与をしましょう• メール系 (Mail) の場合は、アカウント制限をかける• SharePoint や OneDrive の場合は、サイト制限をかける• 制限ができない Graph API の利用には、制限を設ける(一般ユーザーは NG など)• わからない時は Microsoft サポートをうまく活用する• サービスプリンシパルは、必要最小限の権限で定期的な棚卸を行うこと• システムや利用目的が別であるなら、サービスプリンシパルもそれぞれ分ける• 証明書やシークレットは年単位での切り替えを推奨(切り替え時に棚卸ができる)• 証明書やシークレットの流出に気をつけること• 部外者への流出 = 不正アクセスのリスク• シークレットや証明書は適切な場所で管理(証明書ストア / Azure Key Vault など)• シークレットをソースコードにベタ書きするのは絶対に NGまとめ2:アプリケーションの許可を使用する際の注意
• マスター テキストの書式設定• 第 2 レベル• 第 3 レベル• 第 4 レベル• 第 5 レベルマスタ タイトルの書式設定24 24• Microsoft 公式ブログ• Exchange Online における基本認証の廃止 – 2022 年 9 月の更新• 2022 年 6 月末から「セキュリティの既定値群」の有効化が促されます (対象 : 一部のテナント)• Microsoft Docs• Microsoft Authentication Library (MSAL) の概要• Azure Active Directory のアプリケーション オブジェクトとサービス プリンシパル オブジェクト• その他• サービスプリンシパルのアプリケーション許可による Mail.Send や Mail.Read にアカウント制限を適用する -Zenn.dev参考情報