こんにちは、Azure Identity サポート チームの竜です。
本記事は、2022 年 1 月 18 日に米国の Azure Active Directory Identity Blog で公開された Achieving Zero Trust readiness in your apps #2: Designing for Least Privilege を意訳したものになります。
こんにちは、Jeff Sakowicz です。Microsoft Identity チームで、Application Platform Security の Principal Program Management Lead をしています。私たちのチームの目標は、安全で信頼性が高く、発展的なアプリのエコシステムを作っていくことです。この目標を達成する一環として、アプリがゼロ トラストのセキュリティ モデルをサポートできるようにすることがあげられます。
前回に続き、今回は「なぜ開発者にとってゼロ トラストが重要なのか」についての二つ目の記事となります。前回 は、ゼロ トラスト の原則およびゼロ トラストが ID とアクセス管理にどのように適用されるかをご紹介しました。今回は、Microsoft の ID プラットフォームにおいて、「最小限の特権アクセスの原則を使用してアプリケーションを設計する方法」についてご説明します。
なぜ最小特権アクセスの使用にこだわる必要があるのでしょうか?
端的に言うと、アプリケーションの許可を制限することで、攻撃された場合に影響を受ける範囲を減らし、アプリを利用する顧客を増やすことができるからます。実際のところ、IT 管理者はアプリから要求される権限を確認する際やアプリに権限を付与するかどうかを決定する際に、以前より厳しく精査を行うようになっています。たくさんの権限を要求するアプリを作成した場合、アプリが承認される可能性が低くなり、時にはアプリの利用が完全に拒否される場合もあります。
過剰な特権とは何でしょうか?過剰な特権が与えられているアプリとはどんなものでしょうか?
ある主体が必要以上の特権を要求し、場合によってはそのアクセス許可が付与されることを、私たちは「過剰な特権」と呼んでいます。この記事では、Microsoft Graph API を呼び出すクライアント アプリのシナリオを例に、Microsoft ID プラットフォーム上で使用される OAuth 2.0 のアクセス許可において「過剰な権限が与えられているアプリ」に特に着目して説明します。この記事に記載されている原則は、他のアクセス許可のモデルや API にも適用可能なため、より詳細については今後の記事でも説明していく予定です。
過剰な特権は、アプリが「未使用の」または「削減可能な」アクセス許可を要求し、そのアクセス許可を付与された場合に発生します。
- 「未使用のアクセス許可」とは、目的の作業には全く必要のないアクセス許可を指します。例えば、カレンダー アプリが、”Files.ReadWrite.All” アクセス許可を取得しているにもかかわらず、Files API を利用していない場合は、未使用のアクセス許可が存在することになります。
- 「削減可能なアクセス許可」とは、必要な作業を実行するためのアクセスを満たす、より低い特権を持つアクセス許可を指します。例えば、サインインしたユーザーの OneDrive からファイルを読み込む必要があるが、新しいファイルの作成や既存のファイルの変更は必要としないアプリを考えてみましょう。このアプリが “Files.ReadWrite.All” アクセス許可を要求し付与された場合は、アプリは削減可能なアクセス許可を持つことになります。このアプリは 、”Files.ReadWrite.All” ではなく、”Files.Read.All” を要求することが適切です。
過剰な特権が付与されているアプリに対応するうえでの最終的な目標は何でしょうか?
MMicrosoft ID チームは、過剰な特権を付与されているアプリへの対応を進めるために、3 つの主要な目標を掲げています。
- 開発者が、過剰なアクセス許可を要求せず、スムーズに採用されるような信頼できるアプリを構築できるように支援します。不必要な権限を要求すると、アプリが利用される環境において、ユーザーおよび IT 部門、さらには組織で設定された アプリの同意ポリシー の間で不和が生じます。
- IT 管理者やその他の意思決定者が過剰な特権を持つアプリを制限できるよう、組織内で必要な最小限のアクセス許可を特定する方法や、最小限のアクセス許可を要求および付与する方法について支援します。
- 侵害の範囲を拡大したり、組織内での別マシンへのさらなる乗っ取を防止したりするような特権を攻撃者が取得できないように防止します。
アプリを確実に最小特権化するにはどうすれば良いのでしょうか?
ここでは、開発者と IT 管理者が、「アプリケーションの最小特権の原則を遵守すること」を考える際に、念頭に置くべき 3 つのベスト プラクティスをざっくりとご紹介します。
- 未使用のアクセス許可や削減可能なアクセス許可を避け、過剰な特権を防止しましょう。アプリケーションが API の呼び出しに必要とするアクセス許可を確認し、お客様のシナリオを実現するために必要なものだけを要求しましょう。
- お手持ちのアプリに対して既に付与されたアクセス許可を定期的に監査し、アクセス許可を削減もしくは削除できないか確認しましょう。つまり、IT 管理者においてはテナント内のアプリに付与されたアクセス許可を監査し、開発者はアプリが要求しているアクセス許可を確認しましょう。
- アプリをアップデートして、未使用のアクセス許可や削減可能なアクセス許可を要求しないようにし、また以前付与されたアクセス許可の中でも不要になったものを取り消しましょう。
マイクロソフトは、このプロセスを支援するツールを用意しています。例えば、Graph Explorer を使用することで、お客様のシナリオを実現するためにどのような Microsoft Graph API の呼び出しが必要か確認いただけます。その後、Microsoft Graph のアクセス許可のリファレンス を使用し、Microsoft Graph の最小限の特権から最大限の特権の中で、適切なアクセス許可を見つけることができます。
具体的な手順については、こちらの資料をご参照ください: 最小限の特権の原則でセキュリティを高める
ゼロ トラストへ対応した開発を始める方法
さらに詳しく知りたい方は、Zero Trust Guidance Center に公開された開発者向けの新しいガイダンスをご覧ください。このガイダンスには、Zero Trust に対応したアプリケーションを開発するための 新しい開発および統合リソース が含まれています。
詳細については、こちらからダウンロードできる開発者向けホワイトペーパーをご覧ください: Zero Trust for the Microsoft Identity developer
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。