AWS-AWS Systems Manager Session (SSM 会话管理器)试用

Session Manager 是什么,能做什么

AWS Systems Manager 会话管理器是一个新的交互式 Shell 和 CLI,有助于提供安全、访问权限受到控制且经过审计的 Windows 和 Linux EC2 实例管理。使用会话管理器,您无需打开入站端口、管理 SSH 密钥或使用堡垒主机。并且登录的主机可以处于公有子网或者私有子网。

借助会话管理器,您可以提高安全性,集中进行访问管理并接收详细的审计。除了无需打开入站端口之外,您还可以结合使用会话管理器与 AWS NAT Gateway,以便登录处于私有子网的EC2主机。通过使用 AWS Identity and Access Management (IAM) 策略,您可以在一个中心位置授予和撤销对实例的访问权限。提供访问权限后,您可以使用 AWS CloudTrail 审计哪个用户访问了实例,并将每个命令记录到 Amazon S3 或 Amazon CloudWatch Logs。会话管理器用户只需单击并启动一个会话,然后选择一个实例,即可快速开始使用该工具。

您现在可以使用新的基于浏览器的交互式shell和命令行界面(CLI)来管理Windows和Linux实例。 使用Session Manager来管理主机,可以给您的管理带来如下好处:

  • 访问控制 – 您使用IAM策略和用户来控制对实例的访问,而不需要分发SSH密钥。您可以使用IAM的日期条件运算符限制对所需时间/维护窗口的访问。
  • 可审计性 – 可以将命令和响应记录到Amazon CloudWatch和S3存储桶。您可以安排在新会话启动时收到SNS通知。
  • 交互性 – 命令在完全交互式bash(Linux)或PowerShell(Windows)环境中同步执行
  • 编程和脚本 – 您可以从控制台以及命令行( aws ssm … )或通过会话管理器API的方式来启动会话。

在EC2实例上运行的SSM代理必须能够连接到会话管理器的公共端点。您可以设置NAT Gateway,以允许在你的VPC的私有子网中(无Internet访问或公共IP地址)中运行的实例连接到会话管理器。

以下详细试用过程:

一、赋予System Manager 对实例可执行操作的权限:

       默认情况下,Systems Manager 没有在您的实例上执行操作的权限。您必须通过使用 IAM 实例配置文件来授予访问权限。实例配置文件是一个容器,可在启动时将 IAM 角色信息传递给 Amazon EC2 实例。

1.1 创建一个EC2实例:ID:为:i-xxxxxxxxxx

1.2 创建一个角色:

   在 IAM->角色->创建角色(role-test):1. 选择受信任实体的类型:AWS产品;2. 选择将要使用此角色的服务:EC2
   -->Attach权限策略:选择 AmazonEC2RoleforSSM

1.3 把角色(role-test)附加到EC2(i-xxxxxxxxxx)中 ; 

AWS-AWS Systems Manager Session (SSM 会话管理器)试用_第1张图片

二、配置用户对 Systems Manager 的访问权限

2.1 访问资源组:您必须向您的 IAM 用户账户、组或角色添加 resource-groups:* 权限实体
      IAM->策略->创建新策略->JSON ,填入如下权限后-保存为:policy-test

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws-cn:ec2:*:*:instance/i-xxxxxxxxxx"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession"
            ],
            "Resource": [
                "arn:aws-cn:ssm:*:*:session/${aws-cn:username}-*"
            ]
        }
    ]
}

上面策略,限定只能使用 启动一个(ssm session)和终止自己启动的(ssm session) 并只能在实例(instance/i-xxxxxxxxxx,请替换为真实的instance ID)使用,如果你还需要ssm其他功能,可以相应设置其他权限;

  2.2  在IAM中创建组:group-test,IAM->选择组(group-test)->添加权限->直接附加现有策略 ->选:policy-test
  2.3  在IAM中创建用户:user-test,把你的帐号加入group-test组中(注意:你的帐号只分配凭证就行,不需要设置密码,如果需要登录web控制,才需要设置密码)。 

到目前为止,我们可以使用aws cli 启动一个session了。

三、安装aws cli 以及设置aws 凭证

需要 Python 2.6.5 或更高版本,以下使用 pip 安装。

$ sudo pip install awscli

安装最新版本的 AWS CLI。

$ sudo pip install --upgrade awscli

使用 aws --version 验证新版本。

$ aws --version
aws-cli/1.16.67 Python/3.7.1 Linux/4.14.77-81.59.amzn2.x86_64 botocore/1.12.57

配置aws cli:

$ aws configure
AWS Access Key ID [None]: xxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: cn-north-1
Default output format [None]:

四、为 AWS CLI 安装 Session Manager Plugin

LINUX 安装方法:
4.1 下载:

curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm" -o "session-manager-plugin.rpm"

4.2 安装:

sudo yum install -y session-manager-plugin.rpm

4.3 验证安装

$ session-manager-plugin 

Session-Manager-Plugin is installed successfully. Use AWSCLI to start a session.

五、启动SSM Session

# aws ssm start-session --target i-xxxxxxxxxx
Starting session with SessionId: user-test-xxxxab2b33333333
sh-4.2$ 
sh-4.2$ ls /tmp

  这样,你以及通过SSM登录上EC2(i-xxxxxxxxxx),并不需要ssh。

六、记录会话数据

你启动session后,所有对ec2执行的命令以及返回的结果,可以记录在CloudWatch Logs中。

6.1 在CloudWatch中新建日志组:session-logs

6.2 在System Manager 的会话管理器中启用日志流(日志组选择:session-logs)

  

AWS-AWS Systems Manager Session (SSM 会话管理器)试用_第2张图片

6.3 然后,你启动ssm session 后,执行的所有操作,在CloudWatch的日志组(session-logs)都可以查到:

AWS-AWS Systems Manager Session (SSM 会话管理器)试用_第3张图片

7、其他

7.1 禁用或启用 ssm-user 账户管理权限
      当支持 Session Manager 的某个 SSM 代理版本在实例上启动时,它会创建一个名为 ssm-user 的具有根或管理员权限的用户账户。在 Linux 计算机上,此账户添加到 /etc/sudoers。


使用命令行修改 ssm-user sudo 权限

7.1.1 连接到实例并运行以下命令:

sudo cd /etc/sudoers.d

7.1.2 打开名为 ssm-agent-users 的文件进行编辑。

7.1.3 要删除 sudo 访问权限,请删除以下行:    

ssm-user ALL=(ALL) NOPASSWD:ALL

    -或者-
   要恢复 sudo 访问权限,请添加以下行:

ssm-user ALL=(ALL) NOPASSWD:ALL

7.1.4 保存文件。


7.2 . 配置ec2 的安全组:
    入站:取消所有规则
    出站:
          1. 开放tcp/udp 53端口 
          2. 开放tcp/443 端口 (因为需要此端口访问aws ssm服务器)
          3. 开放tcp/6443 连接k8s的端口以及只允许k8s master IP(如果你想只允许访问k8s API);

参考:

https://amazonaws-china.com/cn/blogs/china/session-manager-register-ec2/?nc1=b_rp

https://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/session-manager.html

你可能感兴趣的:(amazon-aws)