initial checkin of iam-keyfind.sh.
This commit is contained in:
		
							parent
							
								
									d90f201cb4
								
							
						
					
					
						commit
						d7eb1141f5
					
				
							
								
								
									
										14
									
								
								iam-keyfind/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								iam-keyfind/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					# Introduction:
 | 
				
			||||||
 | 
					iam-keyfind was created to either list all Access Keys used by IAM users or by finding a particular IAM key.
 | 
				
			||||||
 | 
					# Directions For Use:
 | 
				
			||||||
 | 
					## Example of Use, List Mode:
 | 
				
			||||||
 | 
					    iam-keyfind.sh
 | 
				
			||||||
 | 
					the above example would print a comma separated list of all users and their Access Keys.
 | 
				
			||||||
 | 
					## Example of Use, Find Mode:
 | 
				
			||||||
 | 
					    iam-keyfind.sh -f AIDAI54SVGW36XBJ3XBVA
 | 
				
			||||||
 | 
					the above example would examine all IAM Users and return the IAM User that utilizes the Access Key AIDAI54SVGW36XBJ3XBVA.
 | 
				
			||||||
 | 
					# Additional Information:
 | 
				
			||||||
 | 
					- Author: Colin Johnson / colin@cloudavail.com
 | 
				
			||||||
 | 
					- Date: 2013-07-07
 | 
				
			||||||
 | 
					- Version 0.1
 | 
				
			||||||
 | 
					- License Type: GNU GENERAL PUBLIC LICENSE, Version 3
 | 
				
			||||||
							
								
								
									
										76
									
								
								iam-keyfind/iam-keyfind.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										76
									
								
								iam-keyfind/iam-keyfind.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					#!/bin/bash -
 | 
				
			||||||
 | 
					# Author: Colin Johnson / colin@cloudavail.com
 | 
				
			||||||
 | 
					# Date: 2013-07-07
 | 
				
			||||||
 | 
					# Version 0.1
 | 
				
			||||||
 | 
					# License Type: GNU GENERAL PUBLIC LICENSE, Version 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#confirms that executables required for succesful script execution are available
 | 
				
			||||||
 | 
					prerequisite_check()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						for prerequisite in basename cut grep iam-userlistbypath iam-usergetattributes
 | 
				
			||||||
 | 
						do
 | 
				
			||||||
 | 
							#use of "hash" chosen as it is a shell builtin and will add programs to hash table, possibly speeding execution. Use of type also considered - open to suggestions.
 | 
				
			||||||
 | 
							hash $prerequisite &> /dev/null
 | 
				
			||||||
 | 
							if [[ $? == 1 ]] #has exits with exit status of 70, executable was not found
 | 
				
			||||||
 | 
								then echo "In order to use $(basename $0), the executable \"$prerequisite\" must be installed." 1>&2 ; exit 70
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return_all_keys()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						for user in $users
 | 
				
			||||||
 | 
						do
 | 
				
			||||||
 | 
							access_key=$(iam-usergetattributes -u $user | grep -v "^arn")
 | 
				
			||||||
 | 
							echo "$user,$access_key"
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return_found_key()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						key_found=false
 | 
				
			||||||
 | 
						users_examined=0
 | 
				
			||||||
 | 
						user_containing_key=""
 | 
				
			||||||
 | 
						for user in $users
 | 
				
			||||||
 | 
						do
 | 
				
			||||||
 | 
							access_key=$(iam-usergetattributes -u $user | grep -v "^arn")
 | 
				
			||||||
 | 
							if [[ "$find_access_key" == "$access_key" ]]
 | 
				
			||||||
 | 
								then key_found=true
 | 
				
			||||||
 | 
								user_containing_key=$user
 | 
				
			||||||
 | 
								break
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								users_examined=$((users_examined + 1))
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
						if $key_found
 | 
				
			||||||
 | 
							then echo "The Access Key \"$find_access_key\" belongs to the IAM user named \"$user_containing_key.\""
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							echo "The Access Key \"$find_access_key\" does not belong to any IAM users. $app_name examined a total of $users_examined users."
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#calls prerequisitecheck function to ensure that all executables required for script execution are available
 | 
				
			||||||
 | 
					prerequisite_check
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app_name=$(basename $0)
 | 
				
			||||||
 | 
					mode="all_keys"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while getopts :f: opt
 | 
				
			||||||
 | 
						do
 | 
				
			||||||
 | 
							case $opt in
 | 
				
			||||||
 | 
								f) find_access_key="$OPTARG" ; mode="find_key";;
 | 
				
			||||||
 | 
								*) echo "Error with Options Input. Cause of failure is most likely that an unsupported parameter was passed or a parameter was passed without a corresponding option." 1>&2 ; exit 64;;
 | 
				
			||||||
 | 
							esac
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#gets a list of all users for the current account
 | 
				
			||||||
 | 
					#grep "arn:aws:iam" removes return values that aren't actually IAM users. An example would be the last value returned from iam-userlistbypath which is "IsTruncated: false"
 | 
				
			||||||
 | 
					users=$(iam-userlistbypath -i 1000 | grep "arn:aws:iam" | cut -f2 -d "/")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ $mode == "find_key" ]]
 | 
				
			||||||
 | 
						then return_found_key
 | 
				
			||||||
 | 
					elif [[ $mode == "all_keys" ]]
 | 
				
			||||||
 | 
						then return_all_keys
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						echo "An error occured when running $app_name. $app_name will now exit." 1>&2 ; exit 70
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user