通过 SSM Agent 限制对根级别命令的访问
AWS Systems Manager 代理(SSM Agent)使用 root 权限(Linux)或 SYSTEM 权限(Windows Server)在混合和多云环境中的 Amazon Elastic Compute Cloud(Amazon EC2)实例以及其他计算机类型上运行。由于存在最高级别的系统访问权限,有权向 SSM Agent 发送命令的任何可信实例均具有根或系统权限。(在 AWS 中,可以在 AWS 中执行操作并访问资源的可信实体称为主体。主体可以是 AWS 账户根用户、用户或角色。)
主体需要此访问级别才能向 SSM Agent 发送授权的 Systems Manager 命令,主体还可以利用 SSM Agent 中的任何潜在漏洞来运行恶意代码。
特别是,应小心地限制运行命令 SendCommand 和 StartSession 的权限。第一步应为每个命令授予仅选择组织中的委托人的权限。但是,建议通过限制委托人可在其上运行这些命令的托管式节点来进一步巩固安保状况。可以在分配给主体的 IAM policy 中执行此操作。在 IAM policy 中,您可以包括一个条件,用于将用户限制为仅在使用特定标签或标签组合进行标记的托管式节点上运行命令。
例如,假设您有两队服务器,一个用于测试,一个用于生产。在应用于初级工程师的 IAM policy 中,可以指定他们只能在使用 ssm:resourceTag/testServer
标记的实例上运行命令。但对于应有权访问所有实例的一小群首席工程师,可授予对使用 ssm:resourceTag/testServer
和 ssm:resourceTag/productionServer
标记的实例的访问权限。
使用此方法,如果初级工程师尝试在生产实例上运行命令,则其访问将遭拒,因为其分配的 IAM policy 不提供对使用 ssm:resourceTag/productionServer
标记的实例的显式访问权限。
有关更多信息及示例,请参阅以下主题: