labunix's blog

labunixのラボUnix

ユーザやグループに適用する前にAWSが用意するポリシー名を検索してみる。

■ユーザやグループに適用する前に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
#!/bin/bash

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