这篇文章尚未完成. 可能会出现错字 / 错句以及表述逻辑冲突.

更新记录

导言

文章内容将会集中于 "管理配置组织使其更加易于使用的建议" 从组织管理员的角度描述所有博主目前能够知道的关于 Microsoft 365 的知识.

本文所有内容均以 Microsoft 365 全球(Global)为实例介绍, 其他版本诸如世纪互联(中国) / T-Systems International(德国) / 美国政府版 等区域版可能会存在不适用的情况.

前言

为什么要写这篇文章?

作为 Microsoft 365 个人版和商业版的用户, 深知很多人将个人版与商业版混淆的现实, 并且也不断有人从个人版转向使用商业版, 比较典型的一个例子就是微软提供的 "Microsoft 365 开发人员计划":

开发人员计划 - Microsoft 365: https://developer.microsoft.com/zh-cn/microsoft-365/dev-program

Microsoft 开发人员计划

其中包含的 "Microsoft 365 E5 开发人员订阅" 就是商业版的订阅:

Microsoft 365 E5 开发人员订阅


以及面向教育机构的 "适用于学校的 Office 365":

教育版 Office 365

其中只需验证教育机构资格就能获得的 "Office 365 A1" 订阅也属于商业版.(不知为何微软还没有将这个订阅也统一命名为 Microsoft 365)

或者是直接到各种方式都能购买到 Microsoft 365 商业版订阅.

大量的开发者、学生、老师等等通过以上三个方式直接或间接使用了商业版, 且不少的还是作为 "组织" 的全局管理员, 而这些大量加入的新商业用户或全局管理员并不知道商业版与个人版的区别与优势, 与个人版一同对待, 一直在使用微软为组织设置的默认策略运行着订阅, 对于其中大量需要按照实际去配置和管理的 Microsoft 365 策略不太了解.


当然, 博主也是从个人用户向商业版逐渐过渡的, 很多及接下来要讲到的内容都是通过查找微软支持中心的文档和搜索引擎甚至联系到微软技术支持人员才掌握些许, Microsoft 365 是一个非常庞大的服务系统, 单靠从零开始摸索异常费时费力, 按照我的经验文档与搜索引擎只能解决 70% 的问题, 官方技术支持人员能够解决 90% 的问题, 而剩下的 10% 就是不断发生的服务故障和错误🤣.

综上所述我希望这篇文章能够给计划或正在使用商业版的用户和管理员知道:

  • 对于用户: 组织以及组织管理员能对你的组内账户做什么 / 哪些问题应该由全局管理员解决或协助解决 / 个人版与商业版的区别 ......
  • 对于管理员: 管理员应该以及能做的事情 / 管理配置组织使其更加易于使用的建议 / 为管理组织应该知道的事情 ......

关于 Microsoft 365 或 Office 365

"Microsoft 365" 原称为 "Office 365", 2020 年 3 月 31 日微软决定将"Office 365" 更名为 "Microsoft 365" , 是作为微软从软件到网络服务转型的一个具体表现, 主观来看就是将原 Office 365 中以 Office 套件为主的服务转向互联网服务, 包括 Office 但不限于 Office.

什么是Microsoft 365? 和Office 365区别-办公软件-Microsoft 365: https://www.microsoft.com/zh-cn/microsoft-365/what-is-microsoft-365

升级后的 Microsoft 365 作为一套完整行业解决方案也变得越来越强大, 包含的服务也越来越多, 只要是目前行业中所需要的任何网络服务几乎都能在 Microsoft 365 中找到对应的产品, 并且面向消费市场也有个人和家庭适用的类型, 比如:

  • 文字创作与办公: Office

  • 即时通讯与协作: Teams

  • 文件储存与共享: OneDrive

  • 电子邮件与日历: Outlook

    ......

目前 Microsoft 365 服务分为个人版和商业版, 使用订阅制服务, 订阅之下对应每个服务的称之为许可证, 所以可以整套购买订阅而获得许可证, 也可以单独购买许可证成为新的订阅.

商业版为方便管理而使用 "组织" 管理所有订阅与相关联的人员, 一般来说不同组代表不同的公司或者团体.

Microsoft 365 分为个人版与商业版, 而这两者提供的服务并不是完全相同的, 相较于商业版, 微软淡化了 "组织" 这个概念, 由于个人用户并没有需要大量定制的服务需要, 所以在个人版服务中只保留了个人用户常用到的功能, 由微软作为服务提供者提前已经设置好各项服务机制和策略, 方便个人用户使用, 常见的为最多可达 6 人的家庭版套餐:

微软官网Microsoft 365家庭版个人版订阅 | 微软官方商城: https://www.microsoftstore.com.cn/microsoft365/microsoft-365-personal

而商业版则是可由组织管理员去设置几乎所有服务的功能策略从而保证最大程度符合商业使用需要, 并会分配专门面对商业版用户的技术支持和客户服务, 并且商业版和个人版的数据不互通.

关于 Microsoft 365 更多详细可参阅以下站点或文章:

Microsoft 365官网 - Microsoft 365: https://www.microsoft.com/zh-cn/microsoft-365

从 Microsoft 365 家庭版切换到商业版订阅 - Office 365: https://support.microsoft.com/zh-cn/office/从-microsoft-365-家庭版切换到商业版订阅-9322ffb8-a35d-4407-8ebe-ed6ea0859b9f

Microsoft 365 - 维基百科: https://zh.wikipedia.org/wiki/Microsoft_365

组织信息与安全选项

Microsoft 365 所有服务都具有为保护组织信息安全而特别设置的 "安全策略", 以下是针对整个组织和用户全局使用的安全选项.

谨慎设置组织信息

更改组织的地址、技术联系人和其他信息 - Microsoft 365 admin | Microsoft Docs: https://docs.microsoft.com/zh-CN/microsoft-365/admin/manage/change-address-contact-and-more?WT.mc_id=365AdminCSH_inproduct&view=o365-worldwide

在创建组织时会要求提供未来组织的详细信息, 其中就包括了 "组织名称" / “国家地区” / "技术联系人" 等选项.

这些设置将会影响以后使用 Microsoft 365 的各个方面, 包括与组织的网络连通性 / 服务策略和技术支持.

你可以通过 **(侧边栏)设置 - 组织设置 - 组织简介 打开组织信息设置

找到组织信息

或者直接点击 Admin center 主页左上角的组织名称直接进入组织信息设置.

直接进入

组织名称

组织名称影响到用户在使用组织服务时看到的信息, 部分服务会为此设置服务名称, 如 OneDrive 在登录组织账号后在本地设置的 OneDrive 同步目录均为 "OneDrive - 组织名称":

同步文件夹名称

如果你更改了组织名称但以及提前设置好了旧组织名称 OneDrive 的目录并不会受到即时影响, 当组织账户断开与此本地磁盘的链接之后在此链接磁盘才会设置新的组织名的 OneDrive 同步目录.

而用户也可以将此目录断开链接后将以旧名称为文件名的文件夹修改为新的组织名称文件夹, 再去链接 OneDrive 即可实现迁移.


有关更多组织名称的影响可参阅微软支持中心文档:

更改组织的地址、技术联系人和其他信息 - Microsoft 365 admin | Microsoft Docs: https://docs.microsoft.com/zh-CN/microsoft-365/admin/manage/change-address-contact-and-more?WT.mc_id=365AdminCSH_inproduct&view=o365-worldwide#what-do-these-fields-mean

组织位置

由于 Microsoft 365 要为全世界多个国家地区服务, 为了保证其服务符合所对应国家地区的法律甚至文化需要, 所以不同的国家地区可能会出现不同的服务策略区别, 并且组织地区在选定后无法更改:

国家与地区

因此在创建组织时选择好你的用户及业务面对的主要用户群体的国家地区位置极为重要.


除了服务策略的区别, 组织位置的选择对于其储存在微软的数据位置也有重要影响, 例如选择的国家地区在亚太地区那么数据中心位置就极有可能位于新加坡或者日本, 而选择北美地区则会在美国.

对于选择为 "中国" 的组织微软在早期会将其数据中心设置在香港特别行政区, 而现在由于世纪互联逐渐接管在中国的微软云服务, 现在国际商业版用户在选择为 "中国" 时数据中心大部分会设置在新加坡或日本.

值得注意的是, 国家与地区的选择不会影响技术支持时的技术人员分配和技术支持语言选择, 你可以使用位置为 "美国" 的组织发起时区为 "UTC+08:00" 和语言为 "简体中文" 的服务请求, 在分配技术人员的时候就会将技术请求分配至中国地区的技术支持团队并由中国的技术人员联系到你.

设置自助密码重置

自助密码重置能够让启用这个安全策略的组织内用户通过 Azure Active Directory 重置账户的密码而无需管理员协助. 开启之后会在账户启用时让用户配置用于身份验证的方式, 包括手机 / 邮箱 / OATH 软件 / Windows Hello 等...

"Azure Active Directory" 简称 "ADD", 在 Microsoft 365 场景中的 "ADD 管理中心" 就是指 "Azure Active Directory 管理中心".

身份验证方法和功能 - Azure Active Directory | Microsoft Docs: https://docs.microsoft.com/zh-cn/azure/active-directory/authentication/concept-authentication-methods

启用 Azure Active Directory 自助式密码重置 | Microsoft Docs: https://docs.microsoft.com/zh-cn/azure/active-directory/authentication/tutorial-enable-sspr

要启用自助密码重置, 需要进入 Azure Active Directory 管理中心:

Microsoft Azure: https://portal.azure.com/

或是从 Admin Center 进入:

Azure Active Directory 管理中心


侧边栏中找到 "Azure Active Directory" 并进入:

Azure Active Directory

在 Azure Active Directory 中的侧边栏找到 "密码重置":

找到密码重置

进入之后即可看到自助密码重置启用情况与启用范围:

启用范围

如果为组织下的用户提前配置好了用户组, 可以使用 "选定" 指定用户组启用自助密码重置;

如: 将所有重要用户加入到单独的用户组, 并为他们开启自助密码重置.

身份验证方法

请查看上一小节 设置自助密码重置 中的流程进入到 Azure Active Directory 的 "密码重置" 页面.

选择身份验证方法栏目进入到配置页面:

验证方法

其中:

  • 重置所需的方法数: 指在通过多少项指定的身份验证即可重置密码.

    为了保证安全性建议开启两项.

  • 用户可以使用的方法: 用户可以设置的用于验证账户所有权的方法.

    • 移动应用通知: 基于 Microsoft Authenticator 的验证方式, 通过对已绑定的移动应用发送一条通知推送, 由设备持有者点击 "验证" 或 "拒绝" 实现验证.

      注意 : 此服务依赖于 GMS , 因此在部分国家或地区可能不可用!
    • 移动应用代码 推荐 : 基于 Microsoft Authenticator 的验证方式, 通过输入已绑定的移动应用的设备中显示的临时代码实现身份验证.

    • 电子邮件 推荐 : 向预先设置的邮箱发送验证代码后使用代码验证.

    • 移动电话 推荐 : 向预先设置的手机号发送验证代码后使用代码验证.

      可使用全球号码包括来自中国以及附属地区的所有号码, 以及支持 VoIP 号码.

    • 办公室电话: 向预先设置的办公室电话发送验证代码后使用代码验证.

    • 安全问题 推荐 : 使用预先设置的特定安全问题的答案验证.

设置用户自助服务

这里的用户自助服务指:

  1. 用户可以通过电子邮件验证注册账号加入到组织(租户).
  2. 用户可以对组织未经授权的应用程序或服务进行自授权让这些服务注册成为组织 "应用程序", 从而使用这些程序或服务.

对于其一:

  • 在组织中托管有多个域名时, 用户只需拥有其中一个域名对应的邮箱即可通过常规微软账户的注册流程加入组织成为普通用户; 这在大多教育机构与企业机构中常用, 因为电子邮局与 Microsoft 365 可以是分离的(即不使用 Exchange 服务的邮局), 组织只要通过验证的域名即可成为此种自助注册验证账号有效性的的凭证, 之后用户也可通过其拥有的域名邮箱来进行凭据验证加入.

    默认为开启状态.

对于其二:

  • 在要使用到 Microsoft 账号的所有非订阅自有应用与服务都要经过用户验证许可访问其账号下的资源与信息, 组织可以控制这种第三方服务的授权行为是否被允许, 如果组织开启则表示用户可以对这些服务进行自我账号权限授权, 如果关闭则被禁止自我授权需要管理员进行对此服务的授权请求许可.

    而管理员账号在注册这些应用与服务时可以选择 "代表组织同意", 当用户账号需要使用同样的服务时即可无需再次授权.

    默认为开启状态.


要控制这两个自助服务的启闭, 管理员可以通过 PowerShell 连接到 ADD 进行配置, 其中要使用到命令 Set-MsolCompanySettings 以下两个命令参数:

请参阅本文章章节 #Azure Active Directory PowerShell学习如何通过 PowerShell 连接到 ADD.

  1. AllowEmailVerifiedUsers: 控制用户可以通过电子邮件验证注册账号加入到组织(租户).
    可选选项为: $true / $false.
  2. AllowAdHocSubscriptions: 用户可以对组织未经授权的应用程序或服务进行自授权从而使用这些程序或服务.
    可选选项为: $true / $false.

一组命令参数组合示例:

1
Set-MsolCompanySettings -AllowEmailVerifiedUsers $false -AllowAdHocSubscriptions $true

以上设置为禁止用户自助注册账户, 允许已有账户的用户自助授权应用注册.

输入以下命令查询目前组织中这两项的配置状态:

1
Get-MsolCompanyInformation | Select AllowEmailVerifiedUsers, AllowAdHocSubscriptions

通过参数组合指定这些服务的开启与关闭可以实现以下的流程:

参数进行流程

自助注册经电子邮件验证的用户 - Azure AD | Microsoft Docs: https://docs.microsoft.com/zh-cn/azure/active-directory/enterprise-users/directory-self-service-signup

订阅与许可信息查询

除了在 Web 管理中心中查询组织的许可证和订阅信息, 还可以通过 PowerShell 管理员工具查询订阅和许可信息, 在命令行操作组织订阅及许可证时需要先了解组织中的订阅及许可信息.

获取订阅或许可的 SKU 名称

在 Microsoft 365 服务中, 订阅和许可是最重要的组成要素, 但是实际上在管理中心看到的订阅名称诸如 "Microsoft 365 企业版 E3" 实际上只是方便人类辨别的一种 "代号", 在微软的系统中供计算机识别订阅和许可的名称被称为 "SKU" 以及与更具唯一性的 "SKU ID", 在 PowerShell 管理工具中如果要对组织中的许可证进行操作都需要使用对应订阅的 SKU.

以下介绍两种 ADD 管理模块中实现的办法, 建议使用 Microsoft Azure Active Directory Module.

使用 Microsoft Azure Active Directory Module 查询

请参阅本文小节 Microsoft Azure Active Directory Module 学习如何安装模块并连接到 ADD.

输入以下命令查询组织可用订阅的的摘要信息:

1
Get-MsolAccountSku

查询成功会返回如下格式的表格:

1
2
3
4
5
AccountSkuId                ActiveUnits WarningUnits ConsumedUnits
------------ ----------- ------------ -------------
domain:WINDOWS_STORE 25 0 0
domain:D365_MARKETING_USER 5 0 0
domain:SHAREPOINTENTERPRISE 0 0 0

其中 "AccountSkuId" 对应的列及是组织中可用的的订阅 SKU 名称; 但值得注意的是其数据是包含了组织名的 SKU, 即形如 domain:SKU 格式, 这种格式被称为 "组织 SKU", 因为其domain对应了指定组织, 在组合单独的 SKU 便形成了指向一个唯一组织的指定订阅.

详细参数释义
  • AccountSkuId: 使用 语法 显示组织的可用许可计划 <CompanyName>:<LicensingPlan> 是当你在组织中注册时Microsoft 365的值,并且对于你的组织是唯一的。 该值对于每个人都是相同的。

    例如, 公司名称为litwareinc ,许可计划名称为 litwareinc:ENTERPRISEPACK ,这是 E3 Office 365 企业版的 SKU ID。

  • ActiveUnits: 你为特定许可计划购买的许可证数量。

  • WarningUnits: 未续订且将在 30 天宽限期后过期的许可计划中许可证数量。

  • ConsumedUnits: 从特定许可计划向用户分配的许可证数。


以上获得了组织中的订阅信息后就可以对其订阅中包含的许可证进一步查询 详细信息.

输入以下命令查询组织中所有 Microsoft 365 可用服务(许可)的详细信息:

1
Get-MsolAccountSku | Select -ExpandProperty ServiceStatus

查询成功你会获得如下格式的结果:

1
2
3
4
5
ServicePlan                  ProvisioningStatus
----------- ------------------
EXCHANGE_S_FOUNDATION Success
WINDOWS_STORE Success
Forms_Pro_Marketing Success

其中:

  • ServicePlan: 表示服务(许可)的 SKU.
  • ProvisioningStatus: 表示该服务(许可)的开启状态.

当然你的组织中可能有很多个许可证重叠的订阅, 可分别查询对应订阅的许可状态;
输入以下命令查询对应订阅的许可状态:

1
(Get-MsolAccountSku | where {$_.AccountSkuId -eq "组织 SKU"}).ServiceStatus

其中, 组织 SKU 即为 "组织(域)名 + SKU", 列如你的组织默认域为 "example", 指定的订阅 SKU 为 "SHAREPOINTENTERPRISE", 则组合后为 "example:SHAREPOINTENTERPRISE".

查询后会输出以下格式的信息:

1
2
3
4
5
ServicePlan           ProvisioningStatus
----------- ------------------
Nucleus Success
MICROSOFT_SEARCH Success
EXCHANGE_S_FOUNDATION Success

同样的:

  • ServicePlan: 表示服务(许可)的 SKU.
  • ProvisioningStatus: 表示该服务(许可)的状态.
使用 Azure Active Directory PowerShell for Graph 查询

使用该模块之前请先阅读本文小节 Azure Active Directory PowerShell for Graph 学习使用该模块连接到 ADD.

连接成功后输入以下命令查询组织中所有订阅的摘要信息:

1
Get-AzureADSubscribedSku | Select -Property Sku*,ConsumedUnits -ExpandProperty PrepaidUnits

查询成功后会输出以下格式的信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SkuId         : 6470687e-a428-4b7a-bef2-8a291ad947c9
SkuPartNumber : WINDOWS_STORE
ConsumedUnits : 0
Enabled : 25
Suspended : 0
Warning : 0

SkuId : 4b32a493-9a67-4649-8eb9-9fc5a5f75c12
SkuPartNumber : D365_MARKETING_USER
ConsumedUnits : 0
Enabled : 5
Suspended : 0
Warning : 0

SkuId : a9732ec9-17d9-494c-a51c-d6b45b384dcb
SkuPartNumber : SHAREPOINTENTERPRISE
ConsumedUnits : 0
Enabled : 0
Suspended : 5
Warning : 0

其中:

  • SkuId: 对于订阅的一个唯一 ID, 因此被称为 "SKU ID".
  • SkuPartNumber: 即为订阅名称 SKU.
  • ConsumedUnits: 已使用(分配)许可证的数量.
  • Enabled: 许可证可用数量.
  • Suspended: 停用的许可数量.
  • Warning: 即将过期或禁用的许可数量.

如果要查询订阅中服务的详细状态, 则需要先查询订阅列表;
输入以下命令查询组织可用订阅列表:

1
Get-AzureADSubscribedSku | Select SkuPartNumber

查询成功后会输出一个只包含订阅 SKU 的结果. 如下:

1
2
3
4
5
SkuPartNumber
-------------
WINDOWS_STORE
D365_MARKETING_USER
SHAREPOINTENTERPRISE

SkuPartNumber 列即为订阅 SKU.

接下来输入以下命令将上面的结果保存在一个变量 $licenses 里:

1
$licenses = Get-AzureADSubscribedSku

然后使用以下命令引用以上变量查询预先查询到的 SKU 列表中指定行的订阅信息:

1
$licenses[行数].ServicePlans

列如我要查询上面上面列表中 "D365_MARKETING_USER" 订阅的详细信息, 由于此订阅位于列表正表中的第二行, 所以应该输入 $licenses[2].ServicePlans.

查询成功后, 会输出以下格式的结果:

1
2
3
4
5
AppliesTo ProvisioningStatus ServicePlanId                        ServicePlanName
--------- ------------------ ------------- ---------------
Company Success xxxxxxxx-b514-490b-b7ef-8885eee514de Nucleus
Company Success xxxxxxxx-bc8e-4e8b-89e5-5138d471eaff MICROSOFT_SEARCH
Company Success xxxxxxxx-3fe4-4440-bddc-54d774bf0318 EXCHANGE_S_FOUNDATION

其中:

  • AppliesTo: 服务适用范围.
  • ProvisioningStatus: 服务状态.
  • ServicePlanId: 服务 ID.
  • ServicePlanName: 服务名称.

SKU 信息检索

对于 SKU 及 ID 所对应的订阅名称可在微软提供的文档中检索:

用于许可的产品名称和服务计划标识符 - Azure AD | Microsoft Docs:

https://docs.microsoft.com/zh-cn/azure/active-directory/enterprise-users/licensing-service-plan-reference

注意: 此信息的最后更新时间为 2021 年 10 月 6 日。还可以在[此处](https://download.microsoft.com/download/e/3/e/e3e9faf2-f28b-490a-9ada-c6089a1fc5b0/Product names and service plan identifiers for licensing.csv)下载此表的 CSV 版本。


使用 PowerShell Microsoft 365许可证和服务 - Microsoft 365 Enterprise | Microsoft Docs:

https://docs.microsoft.com/zh-cn/microsoft-365/enterprise/view-licenses-and-services-with-microsoft-365-powershell?view=o365-worldwide

控制第三方应用程序访问组织

微软提供了数量庞大的 API 库以便开发者们开发应用程序, 通过 API 访问用户的数据和组织的数据提供生产力工具, 亦可为微软用户带来更好的 Microsoft 365 使用体验;
但是, 依旧有一些使用 Microsoft 365 中的 API 来生成的恶意程序, 可能会导致组织信息和用户数据泄露造成信息安全事故, 对于注重安全性的 Microsoft 365 商业组织来说, 控制第三方程序的授权许可和批复审查后可允许访问组织信息的用户程序是管理员的必要工作之一, 在保护好组织信息安全的同时也能保障组织内用户信息免遭未经许可的程序读取、泄露.

打开 ADD 管理中心, 进入 "企业应用程序" 管理: 企业应用程序
在 "所有应用程序" 选项卡里可以查看目前组织里面所有可以访问组织数据的应用程序. 可以访问组织数据的应用程序
具体应用程序的权限访问可以点击对应程序进入查看他们需要访问的 API 类别. API 类别

打开管理员批复

在设置所有应用程序访问权限之前, 应该去打开管理员批复选线, 以便用户在遇到自身无法获得许可的程序的时候可以选择向管理员申请批复许可.

打开 "用户设置" 选项卡就能看到 "管理员同意请求" 的设置项目: 管理员同意请求
默认情况下这里是关闭状态, 如果要设置批复, 可以参考 CXPLAY 的上图设置.

在设置 "审阅者" 部分, 建议将作为全局管理员的你单独加入到用户中去, 而下面的 "组" 和 "角色" 选项由于提示还在预览阶段, 所以并不推荐立即使用, 根据权限设置, 可以通过这两个预览中的功能设置对未拥有管理员权限但是已经添加到审阅者中的组合角色们进行应用程序的权限批复.

设置应用程序权限许可范围

打开 "许可和权限" 选项卡: 许可和权限
自动进入 "用户同意设置": 用户同意设置
在这里, 可以设置是否允许用户自助许可应用程序访问, 默认是 "允许用户同意应用访问", 而对于组所有者, 还可单独设定他们的批复条件, 默认是 "允许全部组所有者的组所有者同意".

如果选择了不允许, 会在用户在使用组织账号登录一些应用程序(如第三方 OneDrive 管理程序 / 可链接到微软账户储存数据的软件 / 通过注册应用程序来获得账号访问权限的应用程序等)时, 用户将会无法登陆这些没有在组织目录中的应用程序, 如果再上一步设置了管理员批复, 就会额外显示一个管理员批复通道, 请求作为批复员的同意之后才能登录这个应用程序.

但是对于一些由微软认证过的应用, 以及仅需要低风险权限(如访问用户资料 / 读取用户邮箱地址等)或者相对于你的组织内的风险较常规来说更低的权限, 这样的应用程序则不必让管理员重复审批, 可以将他们单独列外.

因此, 这里可以选择 "允许用户同意来自经过验证的发布者的应用具有所选权限" 选项, 可以对微软认证应用程序和包含在 "权限分类" 列表中的程序允许用户自助同意应用程序访问. 设置为此选项之后, 需要在 "权限分类" 中设定组织内允许的 "低影响权限": 在此添加相对于组织的低影响权限
默认会提示分配一些推荐的低风险权限: 一些低风险权限
设置了此处的低风险权限清单并开启 "允许用户同意来自经过验证的发布者的应用具有所选权限" 选项之后, 对于请求的权限全部命中低风险权限的清单的应用则会直接允许用户同意访问, 而不再低风险权限清单里的权限会禁止访问授权.

SharePoint 与 OneDrive 存储服务

SharePoint 是微软开发的一款门户与内网软件, 包含门户页面、团队站点、文档库以及项目子站点,带有版本控制的文档存储空间、以及基本的搜索功能; 现在微软将 Sharepoint 并入 Microsoft 365 商业版中, 作为一项云服务运营.

OneDrive 是微软运营的网络硬盘服务, 区别于个人版, 商业版 OneDrive (OneDrive for Business)能够与同组下的 SharePoint 实现互联, 按照功能实现划分 OneDrive 商业版应该属于 SharePoint 的一部分.

本文中 "OneDrive" 一般指 "OneDrive for Business".

SharePoint - 维基百科: https://zh.wikipedia.org/wiki/SharePoint

SharePoint 2019 授权许可-Microsoft 365: https://www.microsoft.com/zh-cn/microsoft-365/sharepoint/sharepoint-licensing-overview

我应该将文件保存到 OneDrive 还是 SharePoint? - Office 支持: https://support.microsoft.com/zh-cn/office/我应该将文件保存到-onedrive-还是-sharepoint?-d18d21a0-1f9f-4f6c-ac45-d52afa0a4a2e

目前 OneDrive 管理中心已经和 SharePoint 管理中心合并.

侧边栏中或者打开所有管理中心即可找到 SharePoint 管理中心:

找到 SharePoint 管理中心

配置共享策略

外部共享权限是用户在使用 SharePoint 与 OneDrive 分享服务时最常触发的机制, 其中重要的一点就是 "外部来兵访问", 这一点主要是指没有本组权限的用户(包括未登录与其他组账户).

这里的权限设置为 "全局设置", 由 SharePoint 管理员管理的 SharePoint 站点或共享库可以为站点内容单独设置外部共享权限, 从而不受全局设置影响.


打开 SharePoint 管理中心从 **(侧边栏)策略 - 共享 中找到共享策略设置页面:

共享策略

外部共享

外部共享权限

这里的设置项目决定 SharePoint 和 OneDrive 在使用过程中对于 "共享" 操作的控制, 按照滑动条指可分别控制;

OneDrive 共享

SharePoint 共享

  • 任何人: 则表示用户分享的的链接无需任何权限即可被所有访问链接者查看.
  • 新来宾和现有来宾: 表示获取的链接能被已有权限的用户和新的组织外部用户访问, 所有访问链接的用户必须登录账号通过验证.(包括微软个人账户)
  • 现有来宾: 获取的连接只能被预先设置的用户访问*(包括微软个人账户)*.
  • 仅限组织中的人员: 表示只有用有本组内的账号的人员才能够访问链接.

如上所述, 如果你希望你分享的 OneDrive 或 SharePoint 链接能够被所有访问者直接访问那么就设置为 "任何人". 另外, 由于访问者 Cookie 原因可能导致账户权限不允许的问题, 表现为允许任何人访问的链接出现权限不足无法访问资源的问题, 要解决此问题目前只能建议访问者清除 SharePoint 相关的 Cookie 或者以浏览器隐私模式访问链接.

更多外部共享设置

待更新

文件和文件夹链接

文件与文件夹链接

  • 选择用户在 SharePoint 和 OneDrive 中共享文件和文件夹时默认选择的链接类型。

    特定人员(仅用户指定的人员): 指在获取连接中默认选择的权限选项, 默认选择的选项依旧可以更改.

  • 选择默认情况下为共享链接选择的权限。重要 : 此项控制用户获取链接的访问者权限.

    编辑权限

    由于获取连接时此项 "允许编辑" 权限位于二级页面连接设置内, 导致绝大部分用户不会看到此权限被开启, 而 SharePoint 管理中心的默认选项设置是 "编辑", 如果组织全局权限设置为 "任何人", 那么就会造成用户分享链接的访问者默认拥有修改文件内容的风险, 建议将此选择调整为 "查看".

  • 选择“任何人”链接的过期和权限选项。: 如各选项描述, 控制最大访问权限时链接可以授予访问者权限.

其他设置

其他设置

这里需要进一步了解的是 "使用较短的链接共享文件和文件夹", 这项作用内容可参考微软支持中心文档:

OneDrive 和 SharePoint 中的已缩短共享链接格式 | Microsoft Docs: https://docs.microsoft.com/zh-cn/sharepoint/dev/spfx/shorter-share-link-format

旧链接与新链接格式比较:

1
2
https://contoso-my.sharepoint.com/personal/john_contoso_com/_layouts/15/guestaccess.aspx?share=ERGZUIZ8E0pAuC1oJtwz4dQB23IabPgbMtiVe0OLPtMybw
https://contoso-my.sharepoint.com/:w:/p/john_contoso_com/ERGZUIZ8E0pAuC1oJtwz4dQB23IabPgbMtiVe0OLPtMybw

值得注意的是, 目前新旧链接均可正常访问内容不管你是否开启此选项, 这个选项只会影响使用 OneDrive 或 SharePoint "分享" 操作中生成的链接格式, 只要获得连接中的 "Share Key" 就可以通过链接拼凑来访问对应 Key 值的分享链接.

配置储存容量

打开 SharePoint 管理中心找到 **(侧边栏)设置:

储存容量

即可通过 "SharePoint | 站点储存限制""OneDrive | 储存空间上限" 改变两个服务的全局储存容量策略.

对于 SharePoint, 建议使用自动容量限制, 但由于许可证分配时不能决定每个用户可对 SharePoint 储存使用的量, 可以在此开启手动设置为 SharePoint 站点分配容量合理使用许可证资源:

站点储存限制

对于 OneDrive, 微软默认分配的容量若许可证与订阅允许那么默认容量一般为 1024 GB, 可以修改为最大值为 5120 GB:

默认储存上限

另外可以在管理中心的用户详情页针对每个用户修改其 OneDrive 的最大储存空间, 请参阅本文章节 用户管理 - 管理用户 OneDrive

微软在 SharePoint Online 计划 2 中提到可以将将 OneDrive 储存空间限制提升至最大 25T, 如果此 25T 再次不足可为用户再分配 25T 的 SharePoint 专用空间, 具体方法参见本文下一节 提升 OneDrive 最大容量限制.

提升 OneDrive 最大容量限制

在微软的定价中宣称 SharePoint 计划 2 具有无限的储存空间, 而实际上在其定价页页脚注释中提到这种 "无限" 最多允许 25T 的 OneDrive 容量以及额外增补的 SharePoint 25T 容量.
而实际上能由管理员直接支配的初始空间最多每用户 5T, 如需要提升至 25T 则需要向微软技术支持提交服务请求, 由微软技术人员为你的组织开启提升至 25T 的资格.

定价计划中的注释

比较 SharePoint Online 计划和定价 | Microsoft 365: https://www.microsoft.com/zh-cn/microsoft-365/sharepoint/compare-sharepoint-plans#coreui-contentrichblock-lz10guo


取得提升资格

获取容量提升资格需要一名用户 OneDrive 容量已经达到使用了 5TB 的 90%.

如下在 "用户信息" 的 "OneDrive" 栏可以查看用户的使用情况.

用户 OneDrive 信息

自助获取

从 Admin center 登录管理员账号, 点击服务与支持按钮弹出支持对话框:

找到服务与支持

在弹出的对话框中输入 OneDrive limit 后回车运行检索, 直到出现 "运行诊断" 的自助工具:

对话框

鉴于微软在此前曾关闭过此自助诊断工具, 如果你的搜索后出现以下的提示, 那么就只能使用下一节中的方法向微软技术支持发起服务请求.

运行诊断

在自助工具的信息栏中依照示例格式填入该需要提升的用户邮件地址, 然后 "运行测试".

检查OneDrive增加存储的网站资格 - SharePoint | Microsoft Docs: https://docs.microsoft.com/zh-cn/sharepoint/troubleshoot/storage/check-storage-increase-eligibility?WT.mc_id=365AdminCSH_SupportCentral

疑难解答

除了官方提供的文档, 由于各种原因产生的问题如果通过用户报告后被解答, 将会被记录在以下这个 SharePoint 支持文档中:

列出 SharePoint Online 的一些问题 - SharePoint | Microsoft Docs: https://docs.microsoft.com/zh-cn/sharepoint/troubleshoot/sharepoint-online-welcome

其中包含了 SharePoint 与 OneDrive 从服务端到客户端的所有记录在案的疑难问题, 如果在使用 OneDrive 和 SharePoint 的途中遇到了官方技术文档中从未提到的问题, 可以到这里来检索问题概要查找解决办法.

限制

储存限制

SharePoint 作为储存站点, 除了由微软指定许可证的容量大小, 由于技术以及物理储存限制等原因会存在一些无法控制的限制, 可参照微软支持中心的文档:

SharePoint 限制 - Service Descriptions | Microsoft Docs: https://docs.microsoft.com/zh-cn/office365/servicedescriptions/sharepoint-online-service-description/sharepoint-online-limits#service-limits-for-all-plans

其中对于用户影响最大的几个限制:

  • 最大支持上传到 OneDrive 与 SharePoint 的单个文件体积: 250GB

    这个限制会随着微软的总体而改变, 比如在此之前 OneDrive for Business 最大只支持上传单个体积为 150GB 的文件. (建议实时参照上文中引用的文档)

  • 单个 OneDrive 或 SharePoint 中储存的文件数量不超过 30 万个(最佳性能建议).

    SharePoint Online 理论上可在每个储存库中储存三千万个文件, 但是受限于性能表现, 微软建议最多存储 30 万个.

  • 跨账户或网站移动与复制文件总量最大不超过 100GB / 不超过 3 万个文件 / 单文件体积不超过 15GB.

    跨站复制是组织内很重要的文件共享方式, 对于同组织下的账户可利用复制功能快速转存文件副本.

API 与流量限制

可以通过利用 Microsoft Graph 来调用 OneDrive REST API 进行访问用户的 OneDrive 与 SharePoint 目录与文件, 但是在此微软为了 "个人和应用不会对其他用户的体验造成不利影响" 设置了限制, 可以参照微软支持中心的文档:

通过 Microsoft Graph API 访问 OneDrive 和 SharePoint - OneDrive dev center | Microsoft Docs: https://docs.microsoft.com/zh-cn/onedrive/developer/rest-api/?view=odsp-graph-online#throttling

为了确保个人和应用不会对其他用户的体验造成不利影响,OneDrive 设定了限制。 当活动超出 OneDrive 设定的限制时,API 请求将在一段时间内遭拒。 OneDrive 可能还会返回 Retry-After 头,其中包含应用在发送更多请求前应等待的秒数。

1
2
HTTP/1.1 429 Too Many Requests
Retry-After: 3600

关于流量限制我在早期管理组织的时候为这个问题专门向微软技术支持提交了服务请求, 当时我对组内的用户写了一份 PDF 解释结果, 如果你有兴趣可以查看:

支持人员提到了微软对于流量限制给出的官方解释:

避免在 SharePoint Online 中受限或遭屏蔽 | Microsoft Docs: https://docs.microsoft.com/zh-cn/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

在文档中说 "设置和发布确切的限制上限听起来很简单,但事实上它会导致更严格的限制。", 所以微软对此的限制完全是动态的. 并且由于通过 API 调用的方式还要被加上一层上节提到的 "API 限制", 所以总体来说使用 OneDrive 内共享的文件而造成的传输流量限制远比 API 直接调用文件造成的限制要宽. 在面对需要大量下载和访问的场景, OneDrive 的表现并不会那么稳定.

OneDrive 客户端 0x8004de40 错误问题

2021年 5 月 27 日微软发布疑难解答文档描述了解决办法:

从 7 或 8 SharePoint OneDrive身份验证Windows身份验证错误 - SharePoint | Microsoft Docs: https://docs.microsoft.com/zh-cn/sharepoint/troubleshoot/administration/authentication-errors-windows7?WT.mc_id=365AdminCSH_support

这个问题是由于 Microsoft 365 弃用 TLS 1.0 与 TLS 1.1, 而出现问题的 Windows 系统(如 Windows 7)默认只支持 TLS 1.0 和 TLS 1.1 导致.

"由于这些协议版本在 Windows 7 中默认未启用,因此必须配置注册表设置,以确保 Office 应用程序可以成功使用 TLS 1.1 和 1.2。"

form 更新了 以在 Windows 中的 WinHTTP 中启用 TLS 1.1 和 TLS 1.2 作为默认安全协议


所以通过下载并安装微软提供的 KB 3140245 系统更新包可以解决这个问题;

适用于 Windows Server 2012、Windows 7 Service Pack 1 (SP1) 和 Windows Server 2008 R2 SP1.

KB 3140245 更新包: https://www.catalog.update.microsoft.com/search.aspx?q=kb3140245

由博主备份的 KB 3140245 更新包:

对于 Windows 7 系统, 还可以下载微软提供的 Easy Fix 小工具快速添加注册表值:

由微软提供的下载链接: https://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi

由博主备份的此 Easy Fix 小工具:


这个问题于 2021 年 5 月 20 日博主组内成员的 OneDrive 客户端遇到, 相同描述的问题在微软社区中也出现过(由这位成员自行查找解决办法时找到):

OneDrive for Business 無法登入 (錯誤碼 0x8004de40) (Solved by - Microsoft 社群: https://answers.microsoft.com/zh-hant/msoffice/forum/msoffice_onedrivefb-mso_win10-mso_o365b/onedrive-for-business/59f7960f-9433-4d6c-b708-c012578216f8?auth=1

具体表现为在 Windows 7 系统下使用 OneDrive 客户端登录账号失败, 错误代码为 0x8004de40

当时这位成员位于香港特别行政区, 不知为什么博主使用宽带连接远程协助的时候异常卡顿(然而这位成员的宽带是上下对等的千兆宽带, 博主的宽带则是中国电信 300M 宽带)

由成员描述为当天前本来没有任何问题, 自从他的 Windows 7 系统更新重启后就出现这个问题, 通过网络代理 / 修改 DNS / 重装 OneDrive 均无效. 前后经过近一星期的反复也没有解决, 由于这位成员并不想重装系统以及升级 WIndows 10, 我束手无策打算选择联系微软技术支持, 然后在 5 月 28 日计划去微软支持中心选择联系技术支持的时候描述问题输入 "OneDrive 0x8004de40" 居然查找到了一篇支持文档(便是本小节开头引用到的那篇文档的英文原文).

而这篇文档恰好就在当天前一天 (5 月 27 日)发布:

文档发布时间

当时就十分感叹, 微软的客户支持效率之迅速xx微软.


Exchange 与 Outlook 邮件服务

Exchange 是微软开发的一套电子邮件服务软件, 而 Outlook 正是运作在 Exchange 上的邮件服务, Microsoft 365 提供了一整套从组件策略到服务策略的完整邮件管理系统.

Microsoft Exchange Server 许可和常见问题解答 - 企业电子邮件: https://www.microsoft.com/zh-cn/microsoft-365/exchange/microsoft-exchange-server-licensing-licensing-overview

外部邮件转发设置

Microaoft 365 订阅中的许可证开启的 Outlook 邮件服务中本是允许邮件转发的:

邮件转发

但是如果按照默认的组织策略配置直接去用户的 Outlook 邮件设置中使用这个 "邮件转发"那么会出现一些问题, 比如:

那么最终会有很大概率无法实现这个自动邮件转发的操作. 如果用户没有选择开启 "保留已转发邮件的副本" 那么这个邮箱可能就再也不会有新邮件, 因为没有保留副本所以到达用户的邮件不会显示在任何一个文件夹中, 并且默认组织策略配置会将用于接收转发而来邮件的邮箱 [email protected] 被禁止邮件出站的规则屏蔽.

管理员最终会在邮件流 - 邮件追踪 - 我的主要域在最近一天接收的邮件中查询到这个邮件转发最终发生错误而导致转发失败:

邮件流信息

错误提示为:

Access denied, Your organization does not allow external forwarding. Please contact your administrator for further assistance.(拒绝访问,你的组织不允许外部转发。 请联系你的管理员以获得进一步的帮助。)

因此如果组织中有用户需要使用这个邮件转发功能, 那么务必要去配置邮件转发策略.

总结以上邮件转发失败的原因无非只有一点:

  • 用于接收转发邮件的邮箱地址被默认组织策略命中导致邮件转发失败.

下面是两种开启外部邮件转发的方法:

使用安全与合规性中心配置

Microsoft 365 admin center - (侧边栏) 所有管理中心 - 安全 中检查组织策略.

微软在最近的更新中将安全与合规中心拆分成了两个管理中心, 如果你在管理员面板看到如下: 图 1
则本节进行的操作, 指的是第一个 "安全" 管理中心.

找到安全与合规性中心

跳转到 Office 365 安全与合规性管理中心之后找到 (侧边栏) 威胁管理 - 策略 - 反垃圾邮件出站策略(默认)

反垃圾邮件出站策略

打开这个默认策略, 然后点击 "添加保护设置"

添加保护设置

"自动转发规则" 切换到 "打开 - 已启用转发":

启用转发

然后点击 "保存" 按钮进行策略修改, 如果提示 "你的组织设置需要进行更新, 是否继续?" 选择 "是":

进行组织设置更新

到此如果你的设置在更新进度完成后就设置成功, 那么就到此就完成了外部邮件转发的配置.


但是, 如果你的设置后弹出如下提示:
"贵组织目前不允许您尝试运行的命令。若要启用此命令,您首先需要运行命令: Enable-OrganizationCustomization。"

客户端错误

那么就需要使用 PowerShell 进行配置.

使用 PowerShell 配置

如果你在上一节中的配置方法遇到了问题, 那么可以选择使用 PowerShell 进行配置.

如果不支持网页配置, 需要在 PowerShell 命令行中先开启组织自定义才能继续设置, 可参照微软帮助中心的文档:

Enable-OrganizationCustomization | Microsoft Docs: https://docs.microsoft.com/zh-cn/powershell/module/exchange/enable-organizationcustomization?view=exchange-ps

请参照本文章节 # Exchange Online PowerShell 学习如何链接到Exchange Online PowerShell.

链接成功 Exchange Online PowerShell 后输入以下命令查看组织中的反垃圾邮件策略:

1
Get-HostedOutboundSpamFilterPolicy

自动转发策略

请把终端界面最大化显示, 否则处于末尾的 "AutoForwardingMode" 将无法显示.

如上图标注的区域 "AutoForwardingMode" 的对应值不是 On 而是 "Automatic" 或者 "Off" 则表示需要手动开启转发, 但由于微软设置了不能修改组织则需要允许 "组织自定义" 才能打开外部邮件转发.

接下来输入以下命令开启组织自定义:

1
Enable-OrganizationCustomization

等待进度条完成后即可进行下一步:

由于我已经开启过组织自定义所以图片中显示 "此操作不是不是必须的".

错误提示

接下来输入以下命令设置默认外部邮件转发为 "On", 命令参考微软支持中心文档:

Set-HostedOutboundSpamFilterPolicy (ExchangePowerShell) | Microsoft Docs: https://docs.microsoft.com/en-us/powershell/module/exchange/set-hostedoutboundspamfilterpolicy?view=exchange-ps

1
Set-HostedOutboundSpamFilterPolicy -Identity "Default" -AutoForwardingMode On

此时如果成功执行那么终端不会有任何输出显示才为正常, 使用上文提到的命令在此查看组织中的反垃圾邮件策略:

自动转发策略

此时 "AutoForwardingMode" 的对应值已经变为 "On", 表示外部邮件转发已开启.


检查配置

此时打开 Office 365 安全与合规性中的 "反垃圾策略" 即可看到 "自动转发规则" 已经为开启状态.

自动转发状态

向使用邮件转发的用户邮箱发送一封测试邮件, 并再次检查邮件流:

邮件流信息

邮件已经能够正常转发到 [email protected] 中.

配置 DKIM

"DKIM" 全称 "域名密钥识别邮件标准", 属于现有的常用三大邮件身份验证方法之一(SPF, DKIM和 DMARC), 是通过验证邮件签名与域名签名而防止电子邮件伪造的一种重要方法.

以上摘自微软支持中心文档:

"DKIM 是三种身份验证方法(SPF、DKIM 和 DMARC)之一,可帮助防止攻击者发送看起来像来自你的域的邮件。

DKIM 允许你在邮件头中为出站电子邮件添加数字签名。配置 DKIM 时,你授权域使用加密身份验证将其名称与电子邮件关联或签名。从你的域获取电子邮件的电子邮件系统可以使用此数字签名来帮助验证传入的电子邮件是否合法。

基本来说,私钥对域的传出电子邮件的邮件头进行加密。 公钥在域的 DNS 记录中发布,接收服务器可以使用该密钥解码签名。 DKIM 验证帮助接收服务器确认邮件确实来自你的域,而非 欺骗 分子。"

from 如何在自定义域中使用 DKIM 发送电子邮件 - Office 365 | Microsoft Docs: https://docs.microsoft.com/zh-cn/microsoft-365/security/office-365-security/use-dkim-to-validate-outbound-email?view=o365-worldwide

简单来说这是一种加强电子邮件服务安全性的办法, 如果你设置了自定义域名那么就会设置 SPF 记录作为邮件身份验证的基本保证, 而 DKIM 的作用就是加强验证邮件的来源是否与域名中的数字签名一致.

使用安全与合规性中心配置

到 **Microsoft 365 admin center - (侧边栏)所有管理中心 - 安全 中进入安全与合规性中心:

找到安全与合规性中心

进入安全与合规性中心后从 **(侧边栏)威胁管理 - 策略 - DKIM 进入 DKIM 配置界面

DKIM管理

分域名配置

点击你需要配置 DKIM 的自定义域, 弹出 DKIM 菜单点击 "创建 DKIM 秘钥":

创建 DKIM 秘钥

由微软提供的默认域名 example.onmicrosoft.com 默认已经启用 DKIM.

此时会弹出添加 CNAME 解析值的提示:

CNAME 解析提示

此时根据提供的解析值到你的域名解析托管商添加解析:

  • Host Name: 主机名
  • Points to address or value: 记录值

解析配置示例:

添加 CNAME 解析

CNAME 解析提示只会提示一次, 如果查看提示提后没有记住并配置解析, 第二次开启域名配置菜单就不会出现 "创建 DKIM 秘钥", 如有必要请使用 PowerShell 再次获取秘钥.

配置完成后稍等片刻再进入 DKIM 配置界面点击对应域名开启 "为此域的邮件签上 DKIM 签名":

启用DKIM 签名

等待切换完成, 它会提示你 "可能需要几分钟时间来同步状态更改。"表示成功开启:

开启中

如有必要, 还可以在域名配置菜单里面 "轮换 DKIM 秘钥":

轮换 DKIM 秘钥

使用 PowerShell 配置

请参照本文章节 [Exchange Online PowerShell](#Exchange Online PowerShell) 学习如何链接到Exchange Online PowerShell.

使用 PowerShell 连接到 Exchange Online 后, 输入以下命令创建 CNAME 记录:

1
New-DkimSigningConfig -DomainName <domain> -Enabled $false

输入以下命令获取 CNAME 记录:

1
Get-DkimSigningConfig -Identity <domain> | Format-List Selector1CNAME, Selector2CNAME

或得到的 CNAME 解析记录值应为如下所示的格式:

解析值格式

其中两条对应解析主机名应为:

1
2
主机名: selector1._domainkey
记录值: selector1-<domainGUID>._domainkey.<initialDomain>
1
2
主机名: selector2._domainkey
记录值: selector2-<domainGUID>._domainkey.<initialDomain>

其中对于记录值:

  • <domainGUID>: 自定义域的 GUID, 如 example.com 域名的 GUID 即为 example-com
  • <initialDomain>: 微软默认分配的域名, 一般都以 onmicrosoft.com 结尾.

将以上两条主机名与记录值 CNAME 解析到域名, 稍后等待解析生效再进行下一步:

输入以下指令为指定自定义域名的启用 DKIM:

1
Set-DkimSigningConfig -Identity <Domain> -Enabled $true

其中:

  • <Domain>: 要启用 DKIM 的指定自定义域名.

列如要启用域名 example.com 的 DKIM, 则输入指令:

1
Set-DkimSigningConfig -Identity example.com -Enabled $true

若成功启用则终端不会有任何输出为正常.

检查配置

  1. 可在安全与合规性中心中 DKIM 配置页查看对应域名的启用状态:

    DKIM 状态

  2. 可使用已配置 DKIM 的域名为邮件账户的 Outlook 账号发送一封测试邮件到任一邮箱地址, 然后以原文(源代码)模式查看这封测试邮件的邮件头或者直接搜索关键词DKIM-Signature即可看到 DKIM 签名:

    DKIM 签名

配置 DMARC

"DMARC" 全称 "Domain-based Message Authentication, Reporting and Conformance", 是由众多行业机构领导发起的一项基于 SPF 和 DKIM 的新电子邮件安全协议.

DMARC 官方站点: https://dmarc.org/

其核心思想是在邮件收发双方建立邮件反馈机制,便于邮件发送方和邮件接收方共同对域名的管理进行完善和监督。

DMARC 要求域名所有者设置 SPF 记录和DKIM记录, 并明确声明对验证失败邮件的处理策略; 邮件接收方接收邮件时, 首先通过 DNS 获取 DMARC 记录, 再对邮件来源进行 SPF 验证和 DKIM验证, 对验证失败的邮件根据 DMARC 记录进行处理, 并将处理结果反馈给发送方.

作为第三份电子邮件安全协议, 起步尚早目前仍然有大量电子邮局不使用此协议, 但是对于加强互联网信息安全和治理垃圾信息应当为邮件域名配置此 DMARC 解析.

由微软提供的默认域名已经启用 DMARC, 无需再为此进行配置.

配置域名解析

使用 DMARC 验证电子邮件,设置步骤 - Office 365 | Microsoft Docs: https://docs.microsoft.com/zh-cn/microsoft-365/security/office-365-security/use-dmarc-to-validate-email?view=o365-worldwide#step-4-form-the-dmarc-txt-record-for-your-domain

对于 DMARC 协议, 需要在域名解析一个 TXT 记录, 其一般为:

1
2
3
4
主机名: _dmarc
记录类型: TXT
记录值: v=DMARC1; p=none
TTL: 3600

其中对于记录值中的标签常用语法一般有:

Overview – dmarc.org: https://dmarc.org/overview/

  • v: (必选) 指定版本, 值为 DMARC1, 必须为第一个标签.

  • pct: (可选)域名所有邮件流中使用 DMARC 协议策略的比例, 值为0 - 100默认为 100.

  • ruf: (可选)用于发送邮件故障的邮箱地址, 值为mailto: [email protected] 使用逗号,分隔多个地址.

  • rua: (可选) 用于发送邮件综合反馈的邮箱地址, 值为mailto: [email protected] 使用逗号,分隔多个地址.

  • p: (必选) 要求邮件接收方对 DMARC 验证失败的邮件进行的操作, 值有:

    • none:不采取措施.

    • quarantine:标记为垃圾邮件(可疑邮件).

    • reject:拒绝接收.

  • sp: (可选)要求邮件接收方对 DMARC 验证失败的所有子域邮件进行的操作, 值同 p 项.

  • adkim: (可选)域名所有者要求使用的 DKIM 校验模式, 值为:

    • r: relaxed mode (宽松模式)
    • s: strict mode (严格模式)
  • aspf: (可选)域名所有者要求使用的 SPF 校验模式, 值同 adkim.

以上只列举了部分常用语法格式, 完整语法格式请参照 dmarc.org 技术规范.

一般情况下只需选择必要和需要执行的几个策略的选项即可, 如下是两个记录值示例:

1
v=DMARC1; p=none
1
v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]

若只需要配置 DMARC 而不想因此对今后邮件流受到影响并不想接收反馈报告那么就选择配置第一个示例即可; 第二个示例需要将 ruaruf 值配置为你接收反馈报告的邮箱地址即可.

如下图是一个解析记录配置示例:

配置解析

建议为组织分配专用于接收反馈报告的一个或者两个邮箱, 然后将其配置邮件转发到 Exchange 管理员或全局管理员邮箱及时接收反馈邮件.

用户管理

添加用户

在管理员中心添加用户的方法很清晰易懂因此不再赘述, 这里主要介绍使用 PowerShell 管理员工具通过命令行添加或批量添加用户.

请参阅本文章节 Microsoft Azure Active Directory Module 学习使用 AAD 模块连接到 Azure Active Directory.

目前用于连接到 AAD 的模块实际上有两个, 两个模块用于实现当前小节 "添加用户" 的操作命令也有对应两类, 但是只有 Microsoft Azure Active Directory Module 模块同时支持单个添加和批量添加, 所以这里不演示使用 Azure Active Directory PowerShell for Graph 模块的实现过程.

在此之前, 需要了解添加时需要用到的变量属性和必要性:

属性名称 是否必需? 说明
DisplayName 登录 Microsoft 365 服务时显示的名称.
UserPrincipalName 登录 Microsoft 365 要使用到的邮箱地址, 可使用微软默认域或已绑定的域.
如: [email protected]
FirstName 姓氏
LastName 姓名
LicenseAssignment 组织 SKU, 即对应订阅, 用于分配许可证给用户.
获得组织 SKU: 获取订阅或许可的 SKU 名称
密码 密码, 如果没有预先指定则会自动生成.
UsageLocation 由两位字母组成的 ISO 3166-1 国家/地区代码.
如 : US

单个添加

连接到 AAD 之后, 在终端输入以下命令创建单个用户:

1
2
3
$PasswordProfile=New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password="预设密码"
New-AzureADUser -DisplayName "显示名称" -GivenName "姓氏" -SurName "姓名" -UserPrincipalName 用户名称 -UsageLocation 国家地区 -MailNickName 显示名称 -PasswordProfile $PasswordProfile -AccountEnabled $true

实际上以上命令包含三条子命令, 为了方便一次性定义变量后执行也可以每一行命令单独写入执行.

批量添加

在批量添加之前, 需要创建一个包含必要用户信息的 CSV 文件, 用于 PowerShell 模块读取进行批处理;

CSV 分隔符必须为半角逗号即 ,.

该 CSV 的格式如下:

NewUser.csv
1
2
3
4
UserPrincipalName,FirstName,LastName,DisplayName,UsageLocation,AccountSkuId
[email protected],张,三,张三,US,example:ENTERPRISEPACK
[email protected],李,四,李四,US,example:ENTERPRISEPACK
[email protected],王,二,王二,US,example:ENTERPRISEPACK

这个 CSV 的首行也就是表头在这个数据表中只是起到便于编辑者识别的作用, 顺序可自定, 但是必须要在命令行中被争取引用到变量中.

将上面的 CSV 以表格显示就是如下效果:

UserPrincipalName FirstName LastName DisplayName UsageLocation AccountSkuId
[email protected] 张三 US example:ENTERPRISEPACK
[email protected] 李四 US example:ENTERPRISEPACK
[email protected] 王二 US example:ENTERPRISEPACK

编写完成后, 使用以下命令导入上面创建的 "NewUser.csv" CSV 数据并创建用户, 并将生成用户的数据导出到 "NewUser-done.csv" CSV 数据表:

1
Import-Csv -Path "C:\NewUser.csv" | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -UsageLocation $_.UsageLocation -LicenseAssignment $_.AccountSkuId} | Export-Csv -Path "C:\NewUser-done.csv"

以上命令参数选项 -Path 分别为预设的用户数据表和添加完成后自动生成的用户数据表的路径.

命令执行的时候终端并不会有任何输出, 当执行完成后会自动返回终端新行.

使用 PowerShell Microsoft 365用户帐户 - Microsoft 365 Enterprise | Microsoft Docs:

https://docs.microsoft.com/zh-cn/microsoft-365/enterprise/create-user-accounts-with-microsoft-365-powershell?view=o365-worldwide

OneDrive 管理

修改 OneDrive 空间大小

除了在管理中心的用户信息页的 OneDrive 栏目进行修改之外, 还可以使用 PowerShell 管理员工具继续修改, 适用于某些特殊情况.

用户 OneDrive 设置

要使用 PowerShell 修改用户 OneDrive 容量, 需要先连接到 SharePoint Online, 请参阅本文小节 连接到 SharePoint Online 学习.

连接成功后, 以以下格式设置指定用户的 OneDrive 容量:

1
Set-SPOSite -Identity <用户 OneDrive 地址> -StorageQuota <空间大小(单位:MB)>

其中:

  • <用户 OneDrive 地址>: 即为要修改用户的 OneDrive 地址, 形如 https://domain-my.sharepoint.com/personal/admin_example_com 的格式, 可在网页版 OneDrive for Business 登录后主页浏览器地址栏找到, 亦可手动拼接参数.
  • <空间大小(单位:MB)>: 要修改的空间大小, 单位为 MB, 如: 要修改为 1 GB 则为 1024.

示例:

1
Set-SPOSite -Identity https://domain-my.sharepoint.com/personal/admin_example_com -StorageQuota 1024

执行完成会直接返回新命令行.


如果要查看修改结果可使用以下命令查看指定用户 OneDrive 的空间大小:

1
get-SPOSite -Identity <用户 OneDrive 地址>

示例:

1
get-SPOSite -Identity https://domain-my.sharepoint.com/personal/admin_example_com

查询结果格式如下:

1
2
3
Url                                                            Owner                Storage Quota
--- ----- -----------
https://domain-my.sharepoint.com/personal/admin_example_com [email protected] 1024

Storage Quota 既是查询用户的 OneDrive 空间大小.

预加载 OneDrive

一般来说, OneDrive 会自动在用户首次成功登录 OneDrive 时进行设置, 也就是说它并不会在添加用户并分配许可证后自动为用户开启 OneDrive 的功能, 如果一些时候需要将添加并授权许可证后的用户预先加载好他们的 OneDrive, 那么需要管理员进行操作.

请参阅本文小节 连接到 SharePoint Online 使用 PowerShell 管理员工具链接到 SharePoint 管理中心.

连接成功 SharePoint Online 之前应该先准备一个 TXT 文本文件, 其中写入要预先加载 OneDrive 的用户的用户名(邮箱), 一行一个, 列如:

UserName.txt
1
2
3
[email protected]
[email protected]
[email protected]

一个 TXT 中建议写入最多两百行, 也就是两百个用户名, 因为用于批量预载 OneDrive 的指令只支持最多两百名用户批处理.

然后在 Powershell 终端中输入以下命令定义一个变量 $users:

1
$users = Get-Content -path "C:\UserName.txt"

这里的 "C:\UserName.txt" 即为在第一步预先编辑好的包含用户名的 TXT 文件的路径.

然后再输入以下命令将以上变量中引用到的 TXT 中的用户进行预加载 OneDrive:

1
Request-SPOPersonalSite -UserEmails $users

运行时终端不会出现任何记录, 等待直到命令运行完毕自动开始新的一行即表示命令运行完毕.

另外由于大量进行预载时如果在管理员中心观察用户的 OneDrive 信息栏并不会立即完成, 因为以上命令只是向 SharePoint 下达加载 OneDrive 的信息, 仍然受制于微软的服务速度, 因此会有延迟.

为组织内的用户预设置 OneDrive - OneDrive | Microsoft Docs:

https://docs.microsoft.com/zh-cn/onedrive/pre-provision-accounts

PowerShell 管理员工具

PowerShell 管理员工具一般是指微软以 PowerShell 为基础而开发用于管理 Microsoft 365 服务的模块, 虽然大多数的管理操作都能在 Web 管理中心中完成, 但命令行具有的精准高效是常规的 Web 管理员中心无法比拟的.

Exchange Online PowerShell

ExchangeOnlineManagement

"ExchangeOnlineManagement" 主要指 "Exchange Online PowerShell" 模块, 现已发展到 V2, 缩写为 "EXO V2", 用于使用 PowerShell 连接并管理 Exchange Online 服务.

以上摘自微软支持中心文档:

"Exchange Online PowerShell V2 模块(缩写为 EXO V2 模块)使用新式验证,并与新式验证 (MFA) 一起用于连接到 Microsoft 365 中的所有与 Exchange 相关的 PowerShell 环境:Exchange Online PowerShell、安全与合规 PowerShell 和独立的 Exchange Online Protection (EOP) PowerShell。"

from 关于 Exchange Online PowerShell V2 模块 | Microsoft Docs: https://docs.microsoft.com/zh-cn/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps

可用的管理命令可参阅微软支持中心文档:

ExchangePowerShell Module | Microsoft Docs: https://docs.microsoft.com/en-us/powershell/module/exchange/?view=exchange-ps#active-directory


首先到 PowerShell Gallery 参照说明下载 EXO V2 模块:

ExchangeOnlineManagement | PowerShell Gallery : https://www.powershellgallery.com/packages/ExchangeOnlineManagement/2.0.5

或者直接以管理员身份运行你的 PowerShell, 然后输入以下命令安装 EXO V2 模块:

1
Install-Module -Name ExchangeOnlineManagement

出现安装质询则直接输入 "A" 选择默认同意或者 "Y" 同意并继续安装:

安装模块

安装过程中需要连接到国际互联网.

连接到 Exchange Online

可参照微软支持中心文档:

连接 Exchange Online PowerShell | Microsoft Docs: https://docs.microsoft.com/zh-cn/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps

以管理员身份运行 PowerShell, 然后输入以下命令导入 EXO V2 模块:

1
Import-Module ExchangeOnlineManagement

请先参照上一节 ExchangeOnlineManagement 安装 EXO V2 模块.

如果导入过程中遇到"此系统禁止运行脚本" 错误, 请参照微软支持中心这篇文档解决.

指令运行后允许运行此脚本, 然后根据以下指令拼接参数输入命令:

1
Connect-ExchangeOnline -UserPrincipalName <UPN>

参数解释:

  • <UPN>: 为要登录的账户名,

    建议使用 [email protected] .com 格式的默认账户名, 如果绑定了域名则使用账户默认的别名.

列如我要登录的账户名为 [email protected] 则输入:

1
Connect-ExchangeOnline -UserPrincipalName [email protected]

然后会弹出一个登录窗口然后登录你的账户

登录账户

链接完成并不会有提示, PowerShell 会自动返回命令输入状态.

链接成功

SharePoint Online PowerShell

SharePoint Online Management Shell

"SharePoint Online Management Shell" 是一个 PowerShell 模块, 用于连接并管理 SharePoint Online.

可用的管理命令可参阅微软支持中心文档:

SharePointOnlinePowerShell Module | Microsoft Docs: https://docs.microsoft.com/en-us/powershell/module/sharepoint-online/?view=sharepoint-ps


可以到 PowerShell 仓库中使用 PowerShell 下载此 "SharePoint Online Management Shell" 模块:

PowerShell Gallery | Microsoft.Online.SharePoint.PowerShell 16.0.21513.12000: https://www.powershellgallery.com/packages/Microsoft.Online.SharePoint.PowerShell/16.0.21513.12000

管理员身份运行 PowerShell 输入以下命令安装 "SharePoint Online Management Shell" 模块:

1
Install-Module -Name Microsoft.Online.SharePoint.PowerShell

出现安全质询输入 "Y" 继续安装或输入 "A" 全选是继续安装:

安装确认

安装过程中需要连接到国际互联网.


此外, 微软还提供了一个预先安装好 "SharePoint Online Management Shell" 模块的 PowerShell 客户端, 可独立运行于 PowerShell 之外, 无需配置 PowerShell 模块即可使用.

从以下站点下载这个独立版 "SharePoint Online Management Shell":

Download SharePoint Online Management Shell from Official Microsoft Download Center: https://www.microsoft.com/zh-cn/download/details.aspx?id=35588

下载完成后按照常规 Windows 可执行程序(EXE)运行安装即可.

SharePoint Online 命令行管理程序简介 | Microsoft Docs: https://docs.microsoft.com/zh-cn/powershell/sharepoint/sharepoint-online/introduction-sharepoint-online-management-shell?view=sharepoint-ps

连接到 SharePoint Online

SharePoint Online 命令行管理程序入门 | Microsoft Docs: https://docs.microsoft.com/zh-cn/powershell/sharepoint/sharepoint-online/connect-sharepoint-online?view=sharepoint-ps

使用多重身份验证 (MFA) 连接 (推荐)

在 PowerShell 终端中输入以下命令启动账户连接:

1
Connect-SPOService -Url https://contoso-admin.sharepoint.com

其中, 位于参数 -Url 后的 https://contoso-admin.sharepoint.com 应为组织 SharePoint 管理中心的主域, 可以通过参照本文章节 #SharePoint 与 OneDrive 储存服务 中流程进入 SharePoint 管理中心查看浏览器地址栏中的主域地址:

SharePoint 地址

然后会弹出一个登录窗口然后登录你的账户

登录账户

链接完成并不会有提示, PowerShell 会自动返回命令输入状态.

使用用户名和密码连接

在 PowerShell 终端中输入以下命连接账户:

1
Connect-SPOService -Url https://contoso-admin.sharepoint.com -Credential [email protected]

其中:

  • 位于参数 -Url 后的 https://contoso-admin.sharepoint.com 应为组织 SharePoint 管理中心的主域, 可以通过参照本文章节 # SharePoint 与 OneDrive 储存服务 中流程进入 SharePoint 管理中心查看浏览器地址栏中的主域地址:

    SharePoint 地址

  • 位于参数 -Credential 后的 [email protected] 应为组织全局管理员或 SharePoint 管理员的账户地址.

    建议使用 [email protected] .com 格式的默认账户名, 如果绑定了域名则使用账户默认的别名.

输入后会弹出一个密码输入窗口, 此时输入对应账号的密码即可:

账户与密码登录

链接完成并不会有提示, PowerShell 会自动返回命令输入状态.

Azure Active Directory PowerShell

目前 PowerShell 可以使用两种模块连接到 Azure Active Directory:

  1. Azure Active Directory PowerShell for Graph
  2. Microsoft Azure Active Directory Module

这两个模块功能目前作为互补使用, 建议在生产环境下两个模块都安装; 两种模块都可以连接到 ADD 但是命令稍有不同.

目前只支持 64 位的 Windows 系统.

对于 Windows 10 以下[1]版本的 Windows 系统, 需要下载并安装 Windows Management Framework 5.1.

使用 PowerShell 连接 Microsoft 365 - Microsoft 365 Enterprise | Microsoft Docs: https://docs.microsoft.com/zh-cn/microsoft-365/enterprise/connect-to-microsoft-365-powershell?view=o365-worldwide

Azure Active Directory PowerShell for Graph

安装
  1. 以管理员身份打开你的 PowerShell 命令行工具.

  2. 输入以下命令安装 "AzureAD" 模块:

    1
    Install-Module -Name AzureAD

    若出现安全质询则输入 "Y" 选择同意:

    安全质询

    下载模块需要连接到国际互联网.

安装完成会直接返回命令输入状态.

连接

输入以下命令使用多重身份验证登录并连接到 AAD:

1
Connect-AzureAD

多重身份验证

登录完成会直接返回命令输入状态.

Microsoft Azure Active Directory Module

安装
  1. 以管理员身份打开你的 PowerShell 命令行工具.

  2. 输入以下命令安装 "AzureAD" 模块:

    1
    Install-Module MSOnline

    若出现安全质询则输入 "Y" 选择同意:

    安全质询

    下载模块需要连接到国际互联网.

安装完成会直接返回命令输入状态.

连接

输入以下命令使用多重身份验证登录并连接到 AAD:

1
Connect-MsolService

多重身份验证

登录完成会直接返回命令输入状态.

注释


  1. Windows 8.1、Windows 8、Windows 7 Service Pack 1 (SP1)、Windows Server 2012 R2、Windows Server 2012 和 Windows Server 2008 R2 SP1. ↩︎