本文介绍如何为Amazon Workmail启用IAM Identity Center并开启MFA多因素认证。
一、背景
Amazon Workmail邮件系统自身有内部的目录服务,可用于用户数量较少的快速部署和使用。在此时登录界面上是不支持配置MFA的。即便点击Workmail的设置图标,在其中也无法找到开启MFA的选项。这是由于Amazon Workmail内置的目录认证服务是不支持MFA的。
为了开启MFA,需要将Amazon Workmail配置为使用IAM Identity Center服务(以前叫做AWS Single Sign-On即SSO,以下简称IdC服务),并在IdC服务中管理用户和分组。此时在IdC服务中,可以设置用户第一次登录时候必须强制绑定MFA,即可满足安全合规要求。IdC服务支持主流的软件MFA,例如Microsoft Authenticator,Google Authenticator等手机APP,也支持硬件形式的USB Token。
下面开始配置。
二、Workmail服务初始化
本文假设当前用户已经有一个配置好的Workmail邮件系统,使用Workmail内置的用户目录进行认证。在配置完毕后,添加第一个邮箱用户,并确认这个邮箱登录正常。
其配置的全过程可以参考这篇博客。
三、开启本AWS账户的IAM Identity Center服务
IAM Identity Center服务(以前叫做AWS Single Sign-On即SSO,以下简称IdC服务),是一个全局性的服务。在本账号内只能在一个Region内创建。如果某个Region已经有了,在其他Region配置的时候,会提示:
AWS Organizations supports IAM Identity Center in only one AWS Region at a time.
To enable IAM Identity Center in this Region.
这时候需要删除原来Region内的IdC服务,并在使用Workmail的Region重新创建一个。如果您之前的应用已经在别的Region使用了IdC服务无法删除,那么建议您注册一个全新的AWS账号,在新的AWS账号内运行Workmail邮件服务,并开启IdC服务。
删除方法如下截图。注意,删除将丢失所有IdC现有用户和分组。

删除后到Workmail所在的Region,创建IdC服务。如下截图。

确认Region正确。点击启用。如下截图。

创建成功。如下截图。

四、修改Workmail设置开启IAM Identity Center服务
1、启用IAM Identity Center
进入Workmail服务。点击左侧的Organization
,在左侧菜单找到Identity Center
,在右侧下方的设置中点击Enable
按钮。如下截图。

在弹出的提示中,点击Enable
按钮开启。

启用完成。
2、确认IAM Identity Center和Workmail的用户名映射关系
IAM Identity Center也就是IdC服务和Workmail两个服务的配置界面中,都有Users、Groups的菜单。两个服务是两套独立的系统,IdC是用户认证登录名,Workmail负责实际接受邮件的邮箱名。由此,可以建立如下的一个mapping关系。以张三Zhang San、李四Li Si为例,映射关系如下。
用户编号 | Workmail邮箱名 | IdC登录用户名 |
---|---|---|
#1 | zhangsan@xxxx.com | user01 |
#2 | lisi@xxxx.com | user02 |
接下来分别配置IdC服务和Workmkail服务。
五、在IAM Identity Center服务和Workmail服务中分别添加用户
1、在IAM Identity Center服务中添加用户
进入IdC服务,点击左侧的Users
菜单,在右侧点击创建用户按钮。如下截图。

输入登录名是user01
,这将用于单点登录。在密码生成位置,选择生成一次性密码。输入邮箱名例如zhangsan@xxxx.com
。这里使用的zhangsan与上一步映射表保持一致。如下截图。

在分组界面,跳过。如下截图。

点击创建按钮,完成创建。

在生成一次性使用密码位置,把密码复制下来。注意这里仅显示一次,一旦忘记,就只能重置一个新密码。如下截图。

创建用户完成。
2、在Workmail服务中添加新邮箱
进入Workmail服务,在左侧的Users
菜单下,点击Add users
按钮,创建新用户。如下截图。

创建新用户的界面上,这里输入的用户名请参考上述映射表格中Workmail的用户名。在用户名位置输入zhangsan
,在Display name
友好显示名称位置,输入Zhang San
,便于后期友好信息查询。在邮箱位置,输入要使用的邮箱名字,本例中也是zhangsan
。在下方的Map with Identity Center user
位置,留空不输入。最后填写上密码。这里需要填写一个足够复杂的密码。注意:本密码将不会被使用,稍后仅会使用IdC服务中的用户密码。如下截图。

注意:这里设置的用户密码是Workmail本地User的密码,以后将不会被使用,稍后仅会使用IdC服务中的用户密码。即便如此,请依然设置一个足够复杂的密码,长度达到12位以上,包含数字、字母大小写、特殊字符等。
配置完成,可看到用户添加完毕。如下截图。

至此添加Workmail用户完成。
六、配置映射关系、并强制用户IdC方式认证
1、将Workmail邮箱用户添加到IdC的认证User清单中(Assign操作)
进入Workmail服务界面,从左侧菜单找到Identity Center
,点击进入,从右侧菜单找到Assign users and groups
按钮,点击进入。如下截图。

在新建用户
或者选择现有用户
的对话框中,选择现有用户。如下截图。

在搜索框中,输入上一步在Workmail服务中配置时候,录入的友好显示名称。请注意这里只支持查询友好显示名称,输入别的ID是无法检索获得结果的。前文创建Workmail用户时候,使用的友好显示名称是Zhang San
,输入后选中搜索结果。如下截图。

在对话框中点击Assign
按钮,完成分配。如下截图。

2、将Workmail真实邮箱与IdC用户绑定(Associate操作)
在上一步完成了Assign分配操作后,页面下方的Assigned users
里边可以看到用户id和邮箱名字,复制其ID。然后点击Associate
按钮。如下截图。

在Associate对话框中,从下拉框中选择出来Workmail用户名和邮箱,在下方的ID位置输入上一步复制的ID,然后点击Associate users
按钮完成操作。如下截图。

3、设置Workmail强制采用IdC服务用户认证
前文分别在IdC服务和Workmail服务中各自创建了用户和密码,上一步也完成了二者映射和绑定。现在要关闭Workmail自己的用户认证,强制使用IdC用户的认证机制。又因为IdC用户认证是使用MFA的,因此就可以强制MFA认证了。
首先进入Workmail服务,从左侧菜单找到Identity Center
,点击进入,从右侧菜单中找到Authentication mode
按钮。点击Edit
按钮。如下截图。

在配置对话框中,修改认证类型,改成IdC Only方式。如下截图。

至此配置完成。
七、最终邮箱用户登录效果
1、首次登录绑定MFA并修改密码
现在登录Workmail。登录入口可以是Workmail服务上显示的登录入口,也可以是IdC服务上显示的登录入口。二者都将跳转到IdC入口。跳转完成后,输入IdC上的用户名,即user01
,在输入创建用户时候的一次性密码。如下截图。

用于本用户在创建后第一次登录,之前并未使用过,因此这里会强制绑定MFA双因素认证,并重新修改密码。选择类型是认证APP。如下截图。

选择认证方式是手机APP后,在手机上安装例如Microsoft Authenticor
,Google Auth
等手机MFA,用摄像头扫描中间的二维码。二维码默认是不显示的,准备就绪后点击就可以刷新获得二维码。扫描后,手机上将新增一个认证条目,将其中的数字填写到认证码位置,点击添加。如下截图。

用户第一次登录还强制改掉创建用户时候的一次性密码。这里输入新的密码,注意满足复杂度要求,包含大小写、特殊字符,并且不要是类似888888这种容易破解的密码。如下截图。

至此用户第一次登录的初始化完成。
2、跳转到Workmail
在设置好新密码后,页面跳转到IdC认证界面,下编显示出来Workmail图标,已经可以使用了。点击进入。如下截图。

使用MFA登录到Workmail成功成功。

以上过程,可通过AWS的API服务、以脚本化方式批量操作,具体请参考AWS相关服务的API文档。
八、开启Personal access tokens在客户端上免MFA登录
1、什么是Personal access tokens
当开启了MFA后,Workmail的网页版的登录入口就从Workmail自己内置的目录服务(账号+密码)登录变成了由IAM Identity Center提供的用户名+密码+MFA Token的认证,即要多输入一个MFA Token。在网页界面上登录交互中会要求输入MFA,而在其他客户端包括手机内置的邮件服务、App、电脑上的C/S架构的客户端软件如Outlook/Thunderbird这些软件,大多是没有额外输入MFA Token的对话框,由此无法直接使用MFA完成认证。针对这种场景,Workmail提供了名为Personal access tokens(以下简称PAT)的功能。
Personal access tokens(以下简称PAT)是在用户登录到自己的邮箱后,由用户自己创建的具有一定固定期限的Key,默认是365天有效。这个PAT将直接替代原有的密码(用户名不变),即可满足仅支持固定密码输入的客户端软件的登录。
2、创建PAT
为了创建PAT,首先以邮箱用户即本例是user01的身份在网页界面完成登录,进入Workmail邮箱服务后,点击右上角的设置按钮,在左下方找到Personal access tokens
,点击右上角的创建按钮。如下截图。

创建完毕后,点击复制按钮,将PAT的值复制下来。注意这里不需要复制ID,另外PAT的值仅能复制一次,不能第二次显示。一旦忘记,就只能重新生成。如下截图。

3、使用Thunderbird客户端登录(输入PAT替代密码)
本文以安装Thunderbird这个开源客户端为例,Thunderbird支持Windows、MacOS、Linux等多个操作系统平台。安装完毕后,输入全名(即友好显示名称)、输入邮箱完整名(包含用户名和域名),最后在密码位置,输入PAT代替之前的用户单点登录密码。如下截图。

输入PAT校验正确的话,系统会提示是否要继续连接到Workmail。点击登录按钮继续。如下截图。

登录成功。如下截图。

由此就实现了用PAT替代密码在客户端登录,客户端不再需要MFA也可以正常登录。
需要注意的是:Workmail默认生成的PAT有效期是365天,到期需要重新生成,届时没有更新PAT的客户端就无法接受邮件了。关于其默认有效天数,可以在Workmail的设置中调整,最短1天,最长10年。
4、使用Outlook Auto Discover的注意事项
如果您使用Outlook作为客户端,在配置邮箱过程中,希望客户端全自动完成配置,那么需要开启Auto Discover功能。Auto Discover功能本质上是提供一个托管的WEB Server,提供如下方式的文件访问:
https://company.tld/autodiscover/autodiscover.xml
在这个连接中,company.tld
是您的企业域名。由此,Outlook客户端即可通过Auto Discover功能完成自动的配置,不再需要手动填写服务器地址。
如果希望开启这个功能,请参考本文末尾配置文档。
如果没有开启Auto Discover,一些邮件客户端会要求手工填写服务器地址,此时以本文配置在us-west-2
区域为例,其SMTP服务器地址是smtp.mail.us-west-2.awsapps.com
,IMAP服务器地址是imap.mail.us-west-2.awsapps.com
。具体地址参考本文末尾的文档。
九、参考资料
Amazon WorkMail – Working with IAM Identity Center
https://docs.aws.amazon.com/workmail/latest/adminguide/identitycenteroverview.html
Amazon WorkMail – Enabling AutoDiscover to configure endpoints
https://docs.aws.amazon.com/workmail/latest/adminguide/autodiscover.html
Improving Security in Amazon WorkMail with MFA
https://aws.amazon.com/blogs/messaging-and-targeting/improving-security-in-amazon-workmail-with-mfa
Setting up IMAP for Amazon WorkMail
https://docs.aws.amazon.com/workmail/latest/userguide/using_IMAP.html