AWS CLIを使ってOrganizations環境のIAM Access Analyzerを有効化する
みなさんこんにちは、杉金です。
Organizations環境のIAM Access Analyzer有効化をAWS CLIでやってみようと思います。GUIで実施する場合は以下の記事をご覧下さい。
Access Analyzerはリージョン毎に設定する必要があります。リージョンで繰り返し設定する作業をAWS CLIを使って楽しちゃおうというものです。非Organizations環境の場合は以下の記事が参考になります。
1.Organizationsの「信頼されたアクセス」を編集する
管理アカウントでの作業です。信頼されたアクセスからAccessAnalyzerを有効化にします。AWS CloudShell もしくはローカルから AWS CLI を実行します。
私が確認した環境ではCloudShell(aws-cli/2.7.0 Python/3.9.11
)で実行しました。
有効化コマンド
aws organizations enable-aws-service-access --service-principal access-analyzer.amazonaws.com
確認コマンド
aws organizations list-aws-service-access-for-organization --output text | grep access-analyzer # 有効化になっていると以下のように出力されます # # ENABLEDSERVICEPRINCIPALS [日付時間] access-analyzer.amazonaws.com
注)GUIからAccessAnalyzerを設定すると信頼されたアクセス編集も自動的に有効になります。
2.(必要な場合)委任管理者の設定
引き続き管理アカウントでの作業です。IAM Access Anlyzerの管理をメンバーアカウントに委任する場合にこのコマンドを実行します。委任させない場合はこの手順はスキップして下さい。
メンバーアカウントへの委任コマンド
aws organizations register-delegated-administrator --account-id ${委任管理者アカウントID} --service-principal access-analyzer.amazonaws.com
確認コマンド
aws organizations list-delegated-services-for-account --account-id ${委任管理者アカウントID} --output text | grep access-analyzer # 以下のようにaccess-analyzerが「DELEGATEDSERVICES」となっている一行が出力されたらOKです。 # # DELEGATEDSERVICES [日付時間] access-analyzer.amazonaws.com
3.各リージョンのIAM Access Anlyzerを有効化
委任管理者を指定してない場合は管理アカウント、委任管理者を指定している場合は委任先のメンバーアカウントからコマンドを実行します。コマンド冒頭にAccessAnalyzer名の変数を用意していますので、任意の名前を入力して実行下さい。
IAM Access Anlyzerを有効化コマンド
accessanalyzer_name=(AccessAnalyzerの名前) aws --output text ec2 describe-regions --query "Regions[].[RegionName]" \ | while read region; do echo "## enable iam access analyer in ${region}" aws --region ${region} --output json \ accessanalyzer create-analyzer \ --analyzer-name ${accessanalyzer_name} \ --type ORGANIZATION done
設定後に以下の確認コマンドから設定されたかを確認します。
確認コマンド
aws --output text ec2 describe-regions --query "Regions[].[RegionName]" \ | while read region; do echo "## list analyers in ${region}" aws --region ${region} --output table \ accessanalyzer list-analyzers \ --query "analyzers[].{NAME:name, STATUS:status}" done # 以下のように出力されます # ### list analyers in eu-north-1 # ---------------------------------- # | ListAnalyzers | # +---------------------+----------+ # | NAME | STATUS | # +---------------------+----------+ # | access-analyzer-01 | ACTIVE | # +---------------------+----------+ ### list analyers in ap-south-1 # ---------------------------------- # | ListAnalyzers | # +---------------------+----------+ # | NAME | STATUS | # +---------------------+----------+ # | access-analyzer-01 | ACTIVE | # +---------------------+----------+ ### list analyers in eu-west-3 # ---------------------------------- # | ListAnalyzers | # +---------------------+----------+ # | NAME | STATUS | # +---------------------+----------+ # | access-analyzer-01 | ACTIVE | # +---------------------+----------+ # (略)
4.おわりに
以上で有効化の設定は終わりです。後作業としては「通知の有効化」と「アーカイブ設定」がありますので参考情報を記載いたします。