-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrotate_iam_access_keys.sh
executable file
·77 lines (68 loc) · 1.92 KB
/
rotate_iam_access_keys.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
usage() {
cat <<EOF
usage: $0 [ OPTION ]
Options
-u AWS IAM user name (Required)
-p AWS Profile, leave blank for none
-r AWS Region leave blank for default us-east-1
EOF
}
if ( ! getopts ":u:p:r:h" opt); then
echo ""
echo " $0 requries an argument!"
usage
exit 1
fi
while getopts ":u:p:r:h" opt; do
case $opt in
u)
AWS_IAM_USER="$OPTARG" >&2
;;
p)
AWS_DEFAULT_PROFILE="$OPTARG" >&2
;;
r)
AWS_DEFAULT_REGION="$OPTARG" >&2
;;
h)
echo "Invalid option: -$OPTARG" >&2
usage
exit 1
;;
\?)
echo "Invalid option: -$OPTARG" >&2
usage
exit 1
;;
:)
echo "$0 Requires an argument" >&2
usage
exit 1
;;
esac
done
if [ -z "$AWS_IAM_USER" ]; then
usage
fi
if [ -z "$AWS_DEFAULT_REGION" ]; then
export AWS_DEFAULT_REGION="us-east-1"
else
export AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION
fi
if ! [ -z "$AWS_DEFAULT_REGION" ]; then
export AWS_PROFILE=$AWS_DEFAULT_PROFILE
fi
#cat staging1new-accounts-list.json | jq -r --arg AWS_ACCOUNT_ID_ARG "$ACC_ID" '.Accounts[] | select(.Id==$AWS_ACCOUNT_ID_ARG)'
IAM_USER=$(aws iam list-users | jq --arg AWS_IAM_USER "$AWS_IAM_USER" '.Users[] | select(.UserName==$AWS_IAM_USER) | .UserName' | tr -d '"' )
if [ "$IAM_USER" = "$AWS_IAM_USER" ]; then
echo "User $IAM_USER exists deleting access keys"
for access_key in $(aws iam list-access-keys --user-name "$IAM_USER" | jq -r '.AccessKeyMetadata[].AccessKeyId')
do
aws iam delete-access-key --user-name "$IAM_USER" --access-key "$access_key"
done
aws iam create-access-key --user-name "$IAM_USER"
echo "Rotated access keys for $IAM_USER"
else
echo "Can't find IAM user: $AWS_IAM_USER"
fi