无法通过MS Graph API加密邮件消息

时间:2020-02-28 01:37:43

标签: powershell email microsoft-graph-api

我想向邮件中添加加密或“不转发”选项,例如在Outlook中,以便使用发送邮件图形API模块发送邮件。这是针对短期分阶段迁移的,我们需要将敏感信息分发给特定的收件人。我本质上是在寻找一种实现电子邮件加密方法described here之一的方法。

我已经设置了具有mail.send的应用程序级别API权限的应用程序注册。我在PowerShell中使用主体/ MIME参数的哈希表并将其转换为JSON。我还使用Invoke-Restmethod来调用API。我已经查看了Messages MS Graph模块中所有受支持的参数,并且那里没有为添加此参数提供解决方案。

本质上,我正在尝试将Outlook中可用的端到端加密解决方案作为参数添加到正文中(因为我不知道还有其他方法可以实现)。我尝试添加扩展属性,但是找不到正确的属性来键入。还有另一个可以添加此功能的API模块吗?

$message = @{
    "message" = @{
        "subject"= "Confidential Information: $($adUser.userprincipalname)"
        "body" = @{
            "contentType"= "html"
            "content"= "
                <p>Listed below is the confidential information.</p>
                <table>
                    <tr>
                        <td>UserPrincipalName: </td>
                        <td>$($adUser.UserPrincipalName)</td>
                    </tr>
                    <tr>
                        <td>Confidential Information</td>
                        <td>$($Confidential)</td>
                    </tr>
                </table>
            "
        }
        "toRecipients"= @(
            $formatRecipients
        )
    }
}
$jsonMessage = $message | ConvertTo-Json -Depth 10

$mailuri = "https://graph.microsoft.com/v1.0/users/automated.mail@company.com/sendMail"

# send mail with MS Graph send.mail permissions
$mailSend = Invoke-RestMethod -Uri $mailuri -Headers $headerParams -Method Post -Body $jsonMessage -ContentType application/json

此示例将邮件发送到送给脚本的给定收件人,但仅使用Exchange中的默认邮件协议将邮件发送给用户。我想进行设置,以使邮件在被拦截时无法转发或阅读。

1 个答案:

答案 0 :(得分:0)

至此...

'我想设置它,以便在以下情况下无法转发或阅读消息 被拦截。'

...这就是为什么存在Exchange RMS和O365加密规则和策略设置以及MIP(又名AIP)的原因。您不能在Outlook客户端上强制执行Exchange Server / O365服务未下推的此类策略。在那里执行执法。这就是所谓的DLP。因此,控制静态数据,使用中的数据和传输中的数据。您可以保护管道或数据,或同时保护两者。

Microsoft Information Protection and Unified Labeling

Office 365 compliance controls: Data Loss Prevention

Unifying Data Loss Prevention in Office 365

根据发件人/收件人/内容,Outlook中没有适当的加密邮件流的方法,Exchange / O365适当的设置/规则/加密的方法则没有。所有来自Outlook的邮件以及要通过Exchange发送连接器的邮件均受邮件流/传输规则控制。

这不是PowerShell问题或焦点。您可以使用Exchange / O365 EMC,管理控制台或Exchange cmdlet在Exchange / O365中正确设置加密设置。这是一种传输/邮件流规则/设置,基于Exchange / O365进行的邮件检查。

这是针对O365的,但相同的项目适用于Exchange内部部署或混合O365部署。

Define mail flow rules to encrypt email messages in Office 365

您无法加密来自外部发件人的入站邮件 组织。

New-TransportRule -Name "Encrypt rule for Dr Toni Ramos" -SentTo "DrToniRamos@hotmail.com" -SentToScope "NotinOrganization" -ApplyOME $true

其他用于邮件加密用例的方法就是这样的项目...

How to sign and encrypt a message using S/MIME in PowerShell