了解 AWS SSO 登录配置
TL;DR
AWS SSO 让您轻松切换配置文件。在本文中,您将学习如何轻松设置 AWS 配置文件、在配置文件之间切换以及如何使用自动 SSO 登录!此外,我们将重点介绍新的 SSO 会话参数。
什么是 SSO?
AWS Single Sign-On (SSO) 是 AWS 提供的一项服务,可简化用户对多个 AWS 账户和应用程序的访问的管理。
通过提供一组凭证来访问多个 AWS 账户和服务。用户只需使用其组织的身份提供商 (IdP) 凭证登录一次,即可访问多个 AWS 账户,而无需每次都输入单独的凭证。
在 SSO 之前我们做得怎么样?
在使用 SSO 之前,您可以使用由用户/密码(在管理控制台中)或 access_key/secret_key(使用 CLI 或不同的 SDK 和 API)组成的凭证登录 AWS。
这些方法要求用户为不同的 AWS 账户和区域管理单独的凭证集。每次访问不同的账户或区域时,他们都必须提供相应的凭证。
aws-cli
AWS Single Sign-On (SSO) 通过支持集中式用户管理简化了此流程。它已随V2 版本推出。
我们为什么使用 SSO?
主要优点有:
- 简化的访问管理:管理员可以集中定义用户权限并将其应用于多个帐户,从而更容易根据需要授予或撤销访问权限。
- 集中用户管理:管理员可以从单一位置管理用户身份、角色和权限,从而高效处理用户入职、离职和角色变更。
- 与身份提供商 (IdP) 集成:它允许组织利用其现有的身份系统,并允许用户使用其熟悉的公司凭据登录。(IdP:Microsoft Active Directory、Okta、Azure Active Directory 等)。
- 单点登录体验:一旦通过组织的 IdP 进行身份验证,用户就可以访问各种 AWS 账户和应用程序,而无需重新输入凭证,从而提高工作效率并减少身份验证疲劳。
- 增强安全性:降低密码相关问题的风险。用户无需记住多个密码,从而降低了密码强度低或重复使用的可能性。集中式访问管理还能确保安全策略的一致性应用,并更轻松地审计和监控用户活动。
总体而言,AWS SSO 通过启用单点登录功能简化了用户对 AWS 账户和应用程序的访问管理,增强了安全性,并提供了更好的用户体验。
如何配置个人资料?
您需要拥有一个组织内的用户帐户。前往访问门户的起始网址并登录。(网址如下:)https://sso-portal.awsapps.com/start
。使用您的唯一标识符登录后,您将可以访问组织为您设置的所有帐户。
现在,您可以在本地配置您的配置文件。最常用的方法是使用aws-cli
命令
aws configure sso
它会将您的配置文件保存在~/.aws/config
文件中。
有哪些不同的参数?
AWS 已通过 CLI v2 添加了对 SSO 的支持。配置文件如下所示:
[profile dev]
sso_account_id = 123456789011
sso_role_name = FullAccess
sso_region = eu-west-2
sso_start_url = https://sso-portal.awsapps.com/start
region = west-1
output = json
您可以拥有指向同一帐户的不同配置文件。但是,这些参数会赋予配置文件不同的用例:
sso_account_id
:您在组织中的帐户 ID。(1 个帐户 ID = 访问门户上的 1 行)sso_role_name
:定义具有此配置文件的用户将拥有的权限的 IAM 角色。sso_region
:访问门户所在的区域。sso_start_url
:您组织的访问门户的 URL(您可以在邀请邮件中或者控制台中的 IAM 身份中心服务中获取)。region
:通过此配置文件发出的所有命令都将发送到此区域。output
:命令的默认输出格式。
如果您使用过之前的旧配置,您可能已经习惯了这一点。让我们看看有什么变化。
新配置:SSO 引入 sso-sessions
在 aws-cli 2.90 版本中,AWS 引入了会话功能来管理我们的 SSO 配置文件。现在,我们的会话只需一组凭证(而不是每个配置文件一组),并且无需在令牌过期时定期刷新。刷新后的令牌将由我们的 SDK 或工具(即AWS SDK)自动获取。
新配置中有哪些变化:sso-sessions
我们现在可以在 SSO 配置文件中添加会话。会话与起始 URL 以及起始 URL 所在的区域(与您的帐户所在的 URL 不同)相关联。
然后,对于一个会话,您可以拥有多个配置文件。我可以为我的项目启动 URL 设置一个会话,并将不同的配置文件链接到该会话(因此我只需配置一次会话详细信息)。
凭证现在存储在会话级别,而不是每个配置文件有一组凭证。
会话的另一个功能是您可以限制配置文件的访问范围。对于相同的起始网址,您可以设置一个会话允许配置文件默认访问您的帐户,以及一个会话将其配置文件限制为仅具有读取权限(例如)。默认配置是授予配置文件对起始网址上列出的帐户的访问权限。
新的配置文件中有什么
现在,在您的配置文件中,除了上面列出的常规属性外,您还可以将会话链接到配置文件。起始 URL、区域和注册范围已链接到会话,以便更好地反映 AWS 中正在发生的事情。
[profile dev-profile]
sso_session = devto-article
sso_account_id = 123456789011
sso_role_name = FullAccess
region = eu-west-1
output = json
[sso-session devto-article]
sso_region = eu-west-2
sso_start_url = https://sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
让我们分解一下:
- 在个人资料中,我们现在有
sso_session
指向与此个人资料关联的会话的点 - 字段
sso_region
和sso_start_url
被移动到会话的配置,因为它们不依赖于配置文件而是依赖于访问门户。 - 新增了一个参数,
sso_registration_scopes
用于授予应用程序允许的范围。这是账户检索访问令牌所需的最低访问权限。关于它的文档仍然很少,以下是 AWS 提供的文档。
让我们添加一个带有会话的新配置文件
这次,我们将添加一个仅具有该帐户读取权限的配置文件。
$ aws configure sso
SSO session name (Recommended): devto-article
SSO start URL [None]: https://sso-portal.awsapps.com/start
SSO region [None]: eu-west-2
SSO registration scopes [sso:account:access]:
Using the account ID: 123456789011
There are 2 roles available to you.
> ReadOnly
FullAccess
Using the role name "ReadOnly"
CLI default client region [eu-west-1]: eu-west-1
CLI default output format [json]: json
CLI profile name [123456789011_ReadOnly]: test-profile
我们的配置文件现在如下所示:
[profile dev-profile]
sso_session = devto-article
sso_account_id = 123456789011
sso_role_name = FullAccess
region = eu-west-1
output = json
[profile test-profile]
sso_session = devto-article
sso_account_id = 123456789012
sso_role_name = ReadOnly
region = eu-west-1
output = json
[sso-session devto-article]
sso_region = eu-west-2
sso_start_url = https://sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
尖端
您可以通过运行来使用此配置文件。该命令将自动在您的浏览器中打开授权页面并填写授权码。
aws sso login --profile test-profile
要注销:
aws sso logout
要知道您正在使用哪个配置文件,您可以运行:
aws sts get-caller-identity
外卖
- AWS SSO 让您能够轻松地在配置文件之间切换,并充分利用起始 URL 功能。您无需再处理访问密钥!
- SSO 会话增加了一个抽象级别,以便对同一组织拥有不同的访问模式。
- 总体而言,设置配置文件和会话的命令不会有太大变化,但如果您决定使用 sso 会话,请确保您使用的非原生 AWS 工具得到维护并已集成更改。
- 一个支持 SSO 来管理您的个人资料的简单工具是Granted,我将撰写一篇关于它的后续文章!