如何检查 EC2 实例中的密钥对是否仍在使用?

7

我们之前的DevOps在EC2中创建了几个密钥对。看起来有些已经不再使用了,所以我想删除它们。我该如何查找这些密钥对是何时创建的以及它们是否当前正在使用(最好在控制台中)?

我们之前的 DevOps 在 EC2 中创建了几个密钥对。看起来有些已经不再使用了,所以我想删除它们。我该如何查找这些密钥对是何时创建的以及它们是否当前正在使用(最好在控制台中)?


1
你所说的“使用”,是指用户正在使用它们进行登录吗?还是仅指部署在某个地方? - kichik
3个回答

8

这将提供正在使用的 AWS KeyPairs 列表。

aws ec2 --profile default describe-key-pairs --query KeyPairs[].[KeyName] --output text |xargs -I {} aws ec2 --profile default describe-instances --filters Name=key-name,Values={} --query Reservations[].Instances[].[KeyName,InstanceId] --output text| uniq

该程序获取一个KeyPairs列表,并使用该输出匹配使用这些Keys的服务器。如果未使用KeyPair,则不会出现在列表中。

输出:

fake_key
second-fake-key

这将匹配那些关闭的服务器。

我想看看这在Python中的样子,所以给你代码。这将获取一个密钥列表并输出未使用的密钥。

#! /usr/bin/env python

import boto3

region = 'us-east-1'
session = boto3.Session(profile_name='default')

ec2 = session.client('ec2')
response = ec2.describe_key_pairs()['KeyPairs']
for key in response:
    found_instance = ec2.describe_instances(
        Filters=[
            {
                'Name': 'key-name',
                'Values': [key['KeyName']]
            }
        ]
    )['Reservations']
    if len(found_instance) == 0:
        print (key['KeyName'] + " is unused")

输出结果:

fake-key 未被使用


1
我必须用引号包装查询,否则完美无缺。 aws ec2 --profile default describe-key-pairs --query "KeyPairs[].[KeyName]" --output text |xargs -I {} aws ec2 --profile default describe-instances --filters Name=key-name,Values={} --query "Reservations[].Instances[].[KeyName,InstanceId]" --output text| uniq - Adam Labi

2

Keypairs是Linux的一个功能,而不是AWS。

当从Amazon Linux AMI启动Amazon EC2实例时,实例上有一些代码将指定的密钥对复制到/users/ec2-user/.ssh/authorized_keys文件中。此后,它就是普通的Linux。

因此,了解实例是否允许通过特定的密钥对登录的唯一方法是在每个实例上,在每个用户的.ssh/authorized_keys文件中查找该密钥对。

需要提到的是,AWS生成的密钥对不是管理长期登录EC2实例的推荐方式。您的组织可能会有Active Directory或LDAP服务器,因此应配置实例以使用这些身份验证服务,而不是AWS密钥对。这样,可以非常简单地在中央位置停用用户,而无需逐个访问每个实例。

底线:在Amazon EC2和本地遵循您的正常安全程序。


这似乎可以工作:aws ec2 describe-instances --query Reservations[].Instances[].[KeyName,InstanceId] - Carl G

0

目前,AWS没有提供任何检索密钥对创建日期和时间的方法。在您的情况下,您可以在EC2控制台中检查为实例创建的密钥对,并删除未使用的其余密钥对。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接