AWS Key disabler:AWS IAM用户访问密钥安全保护工具

2024-04-18 09:04

本文主要是介绍AWS Key disabler:AWS IAM用户访问密钥安全保护工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于AWS Key disabler

AWS Key disabler是一款功能强大的AWS IAM用户访问密钥安全保护工具,该工具可以通过设置一个时间定量来禁用AWS IAM用户访问密钥,以此来降低旧访问密钥所带来的安全风险。

工具运行流程

AWS Key disabler本质上是一个Lambda函数,可以通过下列工作流来实现其功能:

工具要求

当前版本的AWS Key disabler脚本需要使用到下列组件:

1、Node.js和NPM;

2、Gruntjs;

3、AWS CLI命令行工具;

4、启用SWS、验证域名并移除沙盒模式的AWS账号;

开发者工具链

工具安装

注意,下列安装命令仅适用于macOS,Windows和*nix的安装命令可能会有一些区别。

首先,我们需要使用下列命令将该项目源码克隆至本地:

git clone https://github.com/te-papa/aws-key-disabler.git

切换到/grunt目录中,设置Grunt任务运行器,并安装相关依赖:

cd grunt/npm install

然后在/grunt/package.json文件中添加下列信息:

1、设置AWS账号的aws_account_number值;

2、设置first_warning和last_warning,即触发警报邮件(发送至report_to)的天数时间;

3、设置expiry,即密钥超时天数,如果超时,则会通过电子邮件向用户发送提醒;

4、设置serviceaccount,即需要脚本忽略的账户用户名;

5、设置exclusiongroup,即需要脚本忽略的分配给用户的组名;

6、设置send_completion_report值为True以通过SES发送通知邮件;

7、设置report_to,即用于接收警报和报告的邮件地址;

8、设置report_from,即用于发送警告邮件和报告的邮件地址;

9、设置deployment_region,即支持Lambda支持的区域;

接下来,确保命令行接口已经成功连接到了AWS,可以使用下列命令验证连接是否成功:

aws iam get-user

在命令行接口中,切换到/grunt目录中,并运行下列命令即可完成工具部署:

grunt bumpup && grunt deployLambda

工具使用

使用AWS CLI从命令行接口手动调用Lambda函数

我们可以直接使用函数名称来调用Lambda函数,并将扫描文件的输出结果存储到scan.report.log文件中:

aws lambda invoke --function-name AccessKeyRotation scan.report.log --region us-east-1
{"StatusCode": 200}

使用jq即可在命令行窗口中查看scan.report.log文件中的内容:

jq '.' scan.report.log
{"reportdate": "2016-06-26 10:37:24.071091","users": [{"username": "TestS3User","userid": "1","keys": [{"age": 72,"changed": false,"state": "key is already in an INACTIVE state","accesskeyid": "**************Q3GA1"},{"age": 12,"changed": false,"state": "key is still young","accesskeyid": "**************F3AA2"}]},{"username": "BlahUser22","userid": "2","keys": []},{"username": "LambdaFake1","userid": "3","keys": [{"age": 23,"changed": false,"state": "key is due to expire in 1 week (7 days)","accesskeyid": "**************DFG12"},{"age": 296,"changed": false,"state": "key is already in an INACTIVE state","accesskeyid": "**************4ZASD"}]},{"username": "apiuser49","userid": "4","keys": [{"age": 30,"changed": true,"state": "key is now EXPIRED! Changing key to INACTIVE state","accesskeyid": "**************ER2E2"},{"age": 107,"changed": false,"state": "key is already in an INACTIVE state","accesskeyid": "**************AWQ4K"}]},{"username": "UserEMRKinesis","userid": "5","keys": [{"age": 30,"changed": false,"state": "key is now EXPIRED! Changing key to INACTIVE state","accesskeyid": "**************MGB41A"}]},{"username": "CDN-Drupal","userid": "6","keys": [{"age": 10,"changed": false,"state": "key is still young","accesskeyid": "**************ZDSQ5A"},{"age": 5,"changed": false,"state": "key is still young","accesskeyid": "**************E3ODA"}]},{"username": "ChocDonutUser1","userid": "7","keys": [{"age": 59,"changed": false,"state": "key is already in an INACTIVE state","accesskeyid": "**************CSA123"}]},{"username": "ChocDonut2","userid": "8","keys": [{"age": 60,"changed": false,"state": "key is already in an INACTIVE state","accesskeyid": "**************FDGD2"}]},{"username": "admin.skynet@cyberdyne.systems.com","userid": "9","keys": [{"age": 45,"changed": false,"state": "key is already in an INACTIVE state","accesskeyid": "**************BLQ5GJ"},{"age": 71,"changed": false,"state": "key is already in an INACTIVE state","accesskeyid": "**************GJFF53"}]}]}

使用样例一

aws lambda list-functionsopenssl dgst -binary -sha256 ..\Releases\AccessKeyRotationPackage.1.0.18.zip | openssl base64aws lambda invoke --function-name AccessKeyRotation report.log --region us-east-1jq '.' report.logjq '.users[] | select(.username=="johndoe")' report.logjq '.' report.log | grep age | cut -d':' -f2 | sort -n

使用样例二

jq 'def maximal_by(f): (map(f) | max) as $mx | .[] | select(f == $mx); .users | maximal_by(.keys[].age)' report.logjq 'def minimal_by(f): (map(f) | min) as $mn | .[] | select(f == $mn); .users | minimal_by(.keys[].age)' report.log

终端用户输出结果

许可证协议

本项目的开发与发布遵循ISC开源许可证协议。

项目地址

AWS Key disabler:【GitHub传送门】

参考资料

Node.js — Run JavaScript Everywhere

Grunt: The JavaScript Task Runner

Command Line Interface - AWS CLI - AWS

https://portal.aws.amazon.com/gp/aws/manageYourAccount

AWS Services by Region - AWS

这篇关于AWS Key disabler:AWS IAM用户访问密钥安全保护工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914336

相关文章

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户