亚马逊AWS官方博客

Okta 通用目录与 AWS 之间的单点登录

采用 AWS 云的企业希望有效管理身份。在一个集中位置管理身份更加容易实施策略、管理访问权限和降低开销,因为无需在多个身份孤岛间复制用户和用户权限。拥有唯一的身份也会简化我们所有人(用户)的访问过程。我们都对多个系统拥有访问权,而且我们全部都很难记住多个不同的密码。能够使用一个用户名和密码组合连接多个系统可增强日常安全性和提高工作效率。将一个系统中的身份与托管在另一个受信系统上的身份关联的能力称为“联合身份”,而单点登录是它的子集。联合身份能够实现是因为安全断言标记语言 (SAML)、OAuthOpenID 等等行业标准。

最近,我们宣布推出 AWS Single Sign-On 的新功能,从而使您可以将 AWS 身份与 Azure Active Directory 身份相关联。我们没有就此止步。今天,我们宣布将 AWS Single Sign-OnOkta 通用目录集成。

下面我来展示系统管理员的经验,然后再演示用户的单点登录体验。

首先,我们想象一下,我是已使用 Okta 通用目录管理劳动力身份的企业的管理员。现在,我希望我的用户能够使用其现有身份简单易用地访问我们的 AWS 环境。像大多数企业一样,我管理了多个 AWS 账户。我想要的不仅仅是一个单点登录解决方案,我希望集中管理至我的 AWS 账户的访问。我不想要手动复制我的 Okta 组和用户会员资格,也不想维护多个身份系统(Okta 通用目录和我管理的每个 AWS 账户的身份系统)。我希望在 Okta 与 AWS 之间启用自动用户同步。我的用户将按照他们在 Okta 中已经熟悉的步骤来登录 AWS 环境。

连接 Okta 作为 AWS Single Sign-On 的身份源
第一步是将 AWS Single Sign-On 添加为用户可以连接到的“应用程序”Okta。然后导航至 Okta 管理控制台并使用我的 Okta 管理员凭证登录,接着导航至应用程序选项卡。

Okta 管理控制台单击绿色的添加应用程序按钮,然后搜索 AWS SSO 应用程序。单击添加

Okta 添加应用程序在应用程序中输入名称(您可以选择您喜欢的任何名称)并单击完成

在下一个屏幕中,配置 AWS Single Sign-On 与 Okta 之间的相互协议。首先,通过单击蓝色的链接身份提供商元数据下载 Okta 生成的 SAML 元数据文件。保留此文件,稍后将需要用它配置 AWS 的单点登录端。

Okta 身份提供商元数据

既然我已经有元数据文件,那么接下来在新选项卡中打开 AWS 管理控制台。我保持 Okta 选项卡的打开状态,因为此程序在这里尚未完成。导航至 AWS Single Sign-On 并单击启用 AWS SSO

单击导航面板中的设置。首先,通过单击更改链接并从选项列表中选择外部身份提供商来设置身份源。其次,在身份提供商元数据部分浏览并选择从 Okta 下载的 XML 文件。

SSO 配置元数据

我单击下一步:查看,在提供的字段中输入 CONFIRM,最后单击更改身份源以完成流程的 AWS Single Sign-On 环节。我记下了两个值 AWS SSO ACS URL and AWS SSO Issuer URL,因为我必须将它们输入到 Okta 控制台中。

AWS SSO Save URL我返回在 Okta 控制台中保留打开状态的选项卡,并复制 AWS SSO ACS URLAWS SSO Issuer URL 的值。

OKTA ACS URL单击保存完成配置

配置自动预置功能
既然我的 Okta 已配置单一登录,我的用户可以使用 AWS Single Sign-On 进行连接,我将启用用户账户的自动预置功能。将新账户添加到 Okta 中并分配给 AWS SSO 应用程序后,系统将自动创建相应的 AWS Single Sign-On 用户。作为管理员,我无需执行任何操作即可在 AWS 中配置相应账户以映射到 Okta 用户。

AWS Single Sign-On 控制台中,导航至设置,然后单击启用身份同步链接。这将打开一个对话框,其中包含 SCIM 终端节点和 OAuth 持有者访问令牌(默认情况下隐藏)的值。我们需要在 Okta 应用程序设置中使用这两个值。

AWS SSO SCIM我切换回在 Okta 控制台上打开的选项卡,然后单击 AWS SSO 应用程序下的预置选项卡。我选择启用 API 集成。然后,我复制/粘贴值基准 URL(我粘贴在 AWS Single Sign-On 控制台 SCIM 终端节点中复制的值)和 API 令牌(我粘贴复制的 AWS Single Sign-On 控制台访问令牌的值)

Okta API 集成我单击测试 API 凭证验证一切按预期工作。然后,我单击至应用程序启用用户创建、更新和取消激活。

Okta 预置至应用程序

将预置启用后,我的最后一个任务是将我希望从 Okta 中同步的用户和组分配至 AWS Single Sign-On。我单击分配选项卡并添加 Okta 用户和组。我单击分配,然后选择我希望能够访问 AWS 的 Okta 用户和组。

OKTA 分配这些用户将同步到 AWS Single Sign-On,用户现在可以在其 Okta 门户中看到 AWS Single Sign-On 应用程序。

Okta 门户用户视图为了验证用户同步在正常工作,我切换回 AWS Single Sign-On 控制台并选择用户选项卡。我在 Okta 控制台中分配的用户存在。

AWS SSO 用户视图

配置完单一登录后,我现在该做什么?
Okta 现在是您的用户身份及其分组分配的唯一事实来源,且定期同步会在 AWS Single Sign-On 中自动创建相应的身份。我的用户使用其 Okta 凭证和经验登录其 AWS 账户和应用程序,不需要记住其他的用户名或密码。不过,就目前的情况来看,我的用户只具备登录权限。要对用户登录 AWS 后可以访问哪些内容方面的权限进行管理,我必须在 AWS Single Sign-On 中设置权限。

返回 AWS SSO 控制台,单击左侧选项卡栏上的 AWS 账户,然后从我向其授予访问权的 AWS Organizations 中选择账户。对于在多个应用程序或环境中使用多个账户的企业,它可让您精细授予对您的 AWS 账户子集的访问权。

AWS SSO 特色级 AWS 账户单击分配用户以向 SSO 用户或组分配一组 IAM 权限。在此示例中,我只分配了一个用户,即具有 @example.com 电子邮件地址的用户。

分配 SSO 用户单击下一步:权限集创建新权限集来创建一组 IAM 策略,以描述我向这些 Okta 用户授予的权限集。在此示例中,我向所有 AWS 服务授予了只读权限。SSO 权限集现在,我已经准备好测试此设置。

控制台的 SSO 用户体验
既然我已经向您展示系统管理员配置集成所采取的步骤,接下来我将展示用户体验。

作为一个 AWS 账户用户,我可以登录 Okta 并获取对我的 AWS 管理控制台的访问权。我可以从 AWS Single Sign-On 用户门户(AWS Single Sign-On 设置页面上的 URL)或 Okta 用户门户页面中开始,然后选择 AWS SSO 应用程序。

我选择从 AWS SSO 用户门户中开始。系统会将我重定向到 Okta 登录页面。我输入 Okta 凭证并登陆 AWS 账户和角色选择页面。我单击 AWS 账户,选择我想要登录的账户,然后单击管理控制台。经过几次额外的重定向后,我登陆了 AWS 控制台页面。

SSO 用户体验

CLI 的 SSO 用户体验
系统管理员、开发运营工程师、开发人员和您的自动化脚本都没有使用 AWS 控制台。他们使用 AWS 命令行界面 (CLI) 替代之。要为命令行配置 SSO,打开终端并键入 aws configure sso。输入 AWS SSO 用户门户 URL 和区域。

$aws configure sso
SSO 启动 URL [无]:https://d-0123456789.awsapps.com/start
SSO 区域 [无]:eu-west-1
尝试在您的默认浏览器中自动打开 SSO 授权页面。
如果浏览器没有打开或者您想要使用另一个设备来授权此请求,请打开以下 URL:

https://device.sso.eu-west-1.amazonaws.com/

然后输入代码:

AAAA-BBBB

在此阶段,我的默认浏览器弹出,然后我在 Okta 登录页面上输入我的 Okta 凭证。我确认我想要为 CLI 启用 SSO。

适用于 CLI 的 SSO我在接收此消息时关闭浏览器:

AWS SSO CLI 关闭浏览器消息

CLI 将自动恢复配置,然后我输入默认区域、默认输出格式和我想要使用的 CLI 配置文件的名称。

可供您使用的唯一一个 AWS 账户为:012345678901
使用账户 ID 012345678901
可供您使用的唯一角色为:ViewOnlyAccess
使用角色名称“ViewOnlyAccess”
CLI 默认客户端区域 [eu-west-1]:
CLI 默认输出格式 [无]:
CLI 配置文件名称 [okta]:

要使用此配置文件,请使用 --profile 指定配置文件名称,如下所示:

aws s3 ls --profile okta

我现在已经准备好将 CLI 与 SSO 结合使用。我在终端中键入:

aws --profile okta s3 ls
2020-05-04 23:14:49 do-not-delete-gatedgarden-audit-012345678901
2015-09-24 16:46:30 elasticbeanstalk-eu-west-1-012345678901
2015-06-11 08:23:17 elasticbeanstalk-us-west-2-012345678901

如果您想要配置 CLI SSO 的机器没有图形用户界面,您可以使用 URL 和 CLI 提供的代码(以上示例中的 https://device.sso.eu-west-1.amazonaws.com/AAAA-BBBB)在无标头模式中配置 SSO

在此博客文章中,我展示了如何利用新的 AWS Single Sign-On 功能将 Okta 身份与 AWS 账户关联以进行用户单点登录。我还使用自动预置支持在管理和使用身份时降低复杂性。管理员现可使用单一事实来源来管理其用户,并且用户无需再管理其他身份和密码即可登录其 AWS 账户和应用程序。

采用 Okta 的 AWS Single Sign-On 可免费使用,并且在提供 AWS Single Sign-On 的所有区域推出。完整列表见此处

要查看传输中的所有列表,您可以查看以下演示视频,以了解有关开始使用的更多详细信息。

— seb