IAM ロールに複数のポリシーを同時に付与したい

IAM ロールに複数のポリシーを同時に付与したい

はじめに

こんにちは、パオの人ことさすけです!
みなさん、IAM ポリシーを用途ごとにしっかり管理していますか??もし細分化して管理されている場合、新しい IAM エンティティを作成した際に、アタッチするポリシーが多すぎて、マネジメントコンソールでぽちぽちするのも面倒ですよね。

本記事では、IAM ロールを例に挙げてそんな時の対処法を考えていこうかと思います。

CLI コマンドで実現可能なの??

まず、「CLI コマンドでできるのでは?」と考えた方も多いかと思います。
IAM ロールにポリシーをアタッチする CLI コマンドは以下の通りです。

aws iam attach-role-policy --role-name ロール名 --policy-arn ポリシーARN

この CLI コマンドを利用して、複数のポリシーを 1 回のコマンド実行で同時にアタッチが可能かという話ですが、結論としては できません!

当該 CLI コマンドの 公式ドキュメント を確認しましたが、単一のポリシー ARN を指定するオプション --policy-arn は存在するものの、複数のポリシー ARN を指定するオプションが記載されていないため、できないものと思われます。

代替案

じゃあ、どうしたらいいのって話ですが、結論から申し上げますと シェルスクリプトの for ループ を使用することで実現可能です。

それでは早速、スクリプトファイルの作成からやってみましょうか。
今回は検証用として、attach_policies.sh 形式のファイルを作成します。

私は検証用として、「なんでもテキトー箱」という名前のフォルダに当該ファイルを作成しました。(名前の通りめちゃくちゃテキトーにいろんなファイルが入ってます、、笑)

スクリプトファイルの中には以下のような内容を記載します。
概要としては、試しに AWS マネージドポリシーから、AmazonS3FullAccessAWSCloudTrail_FullAccess、カスタマー管理ポリシーから test_pao のアタッチを行ってみましょう。

ロール名は test_role_pao としておきます。(検証する際は自身の検証ロール名に置き換えてください)

attach_policies.sh
#!/bin/bash

# 配列としてポリシー ARN を設定(policy_arns)
policy_arns=(
    "arn:aws:iam::aws:policy/AmazonS3FullAccess"
    "arn:aws:iam::aws:policy/AWSCloudTrail_FullAccess"
    "arn:aws:iam::アカウントID:policy/test_pao"
)

# 設定した policy_arns を参照して当該 CLI コマンドをループ実行
for arn in "${policy_arns[@]}"; do
    aws iam attach-role-policy \
        --role-name "test_role_pao" \
        --policy-arn "$arn"
done

さて、次に実際にスクリプトを実行していきます。
実行前の検証ロール(test_role_pao)を確認してみましょう。

image-25

何もアタッチされていませんね。
それでは、この状態から以下コマンドを順に実行して、スクリプトを実行してみます。

まずは、当該スクリプト(attach_policies.sh)を実行する権限を付与します。
下記コマンドを実行してください。

# スクリプト実行権限を付与(ご自身のパスに置き換えてください)
chmod +x ./なんでもテキトー箱/attach_policies.sh

次に、実際にスクリプトを実行してみます。
下記コマンドを実行してください。

# スクリプトを実行(こちらもご自身のパスに置き換えてください)
./なんでもテキトー箱/attach_policies.sh

さて、実行完了したのでマネジメントコンソールを確認してみましょうか。
すると以下のように配列に設定した、ポリシー 3 つがアタッチされていることを確認できました。

image-26

まとめ

今回は、特定のロールに対して複数のロールを簡単にアタッチする方法について検証してみました。
実際、IAM ポリシーは用途ごとに細分化して管理すると「アタッチすべきポリシーが多くて大変」となることもあるかと思います。
そんな時、シェルスクリプトを使用した本記事の方法では、マネジメントコンソールでぽちぽちしたり、一つ一つ CLI コマンドを実行するのに比べてだいぶ楽になるのではないかと思います!

アノテーション株式会社

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.