为 Linux 和 macOS 托管式节点启用“运行身份”支持
默认情况下,会话是使用在托管式节点上创建的系统生成的 ssm-user
账户的凭证来启动。(在 Linux 和 macOS 计算机上,此账户添加到 /etc/sudoers/
。) 您可以使用操作系统 (OS) 账户的凭证启动会话。操作系统级别和目录策略(如登录限制或系统资源使用限制)可能不适用于操作系统账户,因为会话经由 Amazon Identity and Access Management (IAM) 进行身份验证,并在您指定的操作系统账户上下文中运行。Amazon Systems Manager Session Manager 在启动会话之前会验证您指定的操作系统账户是否存在。如果您指定的操作系统账户不存在,会话将无法启动。Session Manager 提供了两种方法来指定要使用的操作系统账户。
方法 1:标记 IAM 用户或角色(推荐)
您可以使用 Amazon 提供的密钥名称 SSMSessionRunAs
标记 IAM 用户或关联角色并指定操作系统用户名作为其值,以指定用于启动会话的操作系统用户账户。例如,如果操作系统用户账户名为 DevRoleLogin
,则要使用的相应标签为 SSMSessionRunAs = DevRoleLogin
。
使用此方法,您可以为您标记的每个 IAM 用户或角色指定不同的操作系统账户名称,或者为它们全部使用相同的操作系统用户名。
有关标记 IAM 实体的更多信息,请参阅以下主题:
-
《IAM 用户指南》中的标记 IAM 实体
-
Amazon 安全博客上的 Add Tags to Manage Your Amazon IAM Users and Roles
方法 2:在 Session Manager 首选项中指定操作系统用户名
在控制台中或使用 Amazon Command Line Interface (Amazon CLI) 配置 Session Manager 首选项时,您可以指定要用来启动会话的操作系统用户名。
使用此方法,所有会话都由同一操作系统用户为您账户中使用 Session Manager 连接到该托管式节点的所有 IAM 用户运行。
工作方式
如果为会话启用“运行身份”支持,系统将检查访问权限,如下所示:
-
对于正在启动会话的用户,是否使用
SSMSessionRunAs =
标记了其 IAM 用户账户或角色?os-user-account-name
如果是,托管式节点上是否存在此用户名? 如果存在,启动会话。否则,不允会话启动。
如果尚未 使用
SSMSessionRunAs =
标记 IAM 用户的账户或角色,, 请继续执行步骤 2。os-user-account-name
-
如果尚未使用
SSMSessionRunAs =
标记 IAM 用户的账户或角色,是否已在 Amazon Web Services 账户的 Session Manager 首选项中指定了操作系统用户名?os-user-account-name
如果是,托管式节点上是否存在此用户名? 如果存在,启动会话。否则,不允会话启动。
此时,Session Manager 不会回退到默认的
ssm-user
账户。换句话说,允许“运行身份”支持可防止使用托管式节点上的ssm-user
账户启动会话。
为 Linux 和 macOS 托管式节点启用“运行身份”支持
访问 https://console.aws.amazon.com/systems-manager/
,打开 Amazon Systems Manager 控制台。 -
在导航窗格中,选择 Session Manager。
-
选择 Preferences (首选项) 选项卡,然后选择 Edit (编辑)。
-
选中 Enable Run As support for Linux instances (为 Linux 实例启用运行身份支持) 旁边的复选框。
-
请执行下列操作之一:
-
选项 1:对于 (Optional) Enter an operating system user name for starting sessions [(可选)输入用于启动会话的操作系统用户名],请在目标托管式节点上输入要用于启动会话的操作系统用户账户的名称。
-
选项 2:选择 IAM console (IAM 控制台) 链接。在导航窗格中,选择 Users (用户) 或 Roles (角色)。选择要将标签添加到的实体(用户或角色),然后选择 Tags (标签) 选项卡。对于密钥名称,输入
SSMSessionRunAs
。对于秘钥值,输入目标托管式节点上的用户账户名称。选择保存更改。以下是示例。
-
-
选择保存。