■ユーザやグループに適用する前にAWSが用意するポリシー名を検索してみる。
以下のようなコマンドを想定。
$ ./aws-policy-search cloudshell
AWSCloudShellFullAccess
■githubに置いた。
https://raw.githubusercontent.com/labunix/aws/main/aws-policy-search
■bashとawkのスクリプト
引数が無ければ使い方を表示して終了する。
$ w3m -dump https://raw.githubusercontent.com/labunix/aws/main/aws-policy-search
if [ $# -lt 1 ];then
echo "Usage: $0 [search-word]"
exit 1
fi
aws iam list-policies --scope AWS | jq -r '.Policies[].PolicyName' | awk -v word="$@" 'BEGIN{IGNORECASE=1}$0 ~ word'
■メインは以下の行で、jqでポリシー名だけに整形している。
$ aws iam list-policies --scope AWS | jq -r '.Policies[].PolicyName'
■大文字小文字を無視するIGNORECASEを設定して、引数すべてを検索用に渡してる。
スペース区切りになることはないはずだけど。
■AWSコンソールで既存のポリシーを検索するのと変わらないのだけど、
正規表現が使える点が異なる。
正規表現が使えるので、「.」の1文字マッチで一覧の取得が出来る。
$ ./aws-policy-search . | wc -l
783
■ReadOnlyAccessで終わるポリシーの検索
$ ./aws-policy-search readonlyaccess$ | wc -l
123
■SNS、SQSをまとめて検索
$ ./aws-policy-search s[nq]s
AmazonSQSFullAccess
AmazonSQSReadOnlyAccess
AmazonSNSReadOnlyAccess
AWSLambdaSQSQueueExecutionRole
AmazonSNSRole
AmazonSNSFullAccess
AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction
AWSElasticBeanstalkRoleSNS
■EC2で始まるポリシーを検索
$ ./aws-policy-search ^EC2
EC2InstanceProfileForImageBuilderECRContainerBuilds
EC2InstanceProfileForImageBuilder
EC2FleetTimeShiftableServiceRolePolicy
EC2InstanceConnect
Ec2ImageBuilderCrossAccountDistributionAccess
■AWS CloudShellに配置。
隠す必要はないので、普通にパスの通った場所に配置する。
「aws configure」が不要なのは良いかも。
$ echo $PATH | awk -F\: '{for(a=1;a<=NF;a++){if($a ~ /hom/){print $a}}}'
/home/cloudshell-user/.local/bin
/home/cloudshell-user/bin
$ wget https://raw.githubusercontent.com/labunix/aws/main/aws-policy-search
$ chmod +x aws-policy-search
$ test -d ~/bin || mkdir ~/bin
$ mv aws-policy-search ~/bin
$ aws-policy-search cloudshell
AWSCloudShellFullAccess
■OR条件はパイプと認識しないようにエスケープしたり、
並べ替えはしないとかは、自分でする必要がある。
$ aws-policy-search "^AWSC.*servicerolepolicy$|^iam" | sort -V
AWSCloud9ServiceRolePolicy
AWSCodeStarNotificationsServiceRolePolicy
AWSConfigRemediationServiceRolePolicy
AWSConfigServiceRolePolicy
AWSControlTowerServiceRolePolicy
IAMAccessAdvisorReadOnly
IAMAccessAnalyzerFullAccess
IAMAccessAnalyzerReadOnlyAccess
IAMFullAccess
IAMReadOnlyAccess
IAMSelfManageServiceSpecificCredentials
IAMUserChangePassword
IAMUserSSHKeys