问题描述
背景:我们已经开发了Active Directory企业应用程序。开发此应用程序是为了从活动目录中用户的Outlook日历中读取忙/闲信息。该应用程序使用Get Schedule Graph API来获取用户的忙/闲信息。认证机制是通过管理员同意的。
问题:我们有一个打算使用此应用程序并将其安装在其活动目录中的客户端。他们希望自己查看使用Graph API的此应用程序正在执行的活动/操作。我不确定是否可以使每个已安装的应用程序执行活动。我知道有一种方法可以知道谁安装/授权了实际的应用程序,但是除此之外,我没有在Azure门户上看到查看每个API调用日志的方法。
简而言之,客户端希望了解企业应用程序正在进行的每个API调用,并验证其是否未获取敏感数据。
在这里欣赏任何指导。
更新-2020年11月17日
通过各种渠道获得Microsoft支持之后,我们终于得到一个答案,提到无法获得我们正在寻找的信息。无法审计上述图形API的使用情况。
关于, 巴维克
解决方法
至少从Azure AD的角度来看,Microsoft尚未提供实现此目的的工具或方法。
您的客户似乎非常担心其他租户(例如,您的租户)中的人将通过此企业应用程序访问其公司的数据。我认为您的客户不了解企业应用程序的工作原理。
通过管理员同意将企业应用程序安装到其租户中时,这意味着他们可以使用此企业应用程序访问此应用程序范围内的自己的数据。但是作为开发人员,您无权访问他们的数据。使用企业应用程序的任何其他租户也将无法访问其他租户的数据。
多租户应用程序用于向许多组织提供软件即服务(SaaS)应用程序。客户的数据在其自己的租户中访问。了解更多信息here。
此外,企业应用程序应遵循“最低特权原则”,因此,如果仅基于Permissions为您的应用程序分配Calendars.Read
,则它将无法获取日历数据以外的数据
您可以通过使用令牌回复 URL 将从图形 api 收到的答案限制为仅客户租户来保护流程。 这样,答案只会被接受来自客户域的请求。 关于审计,还不是很完善,但是可以通过curl或者3rd party tool来监控对api地址的http请求,并记录相关的api请求。 这会让他们了解幕后发生的事情。