見出し画像

cloudformation~IAMの書き方1

早速cloudformationでの1本目の記事となりますが、cloudformationでIAMを書こうとするときによく陥りがちなのが、結構いろいろな項目をハードコーディング(直接書いてしまう)してしまう点だと思っています。

今回IAMのコードをやり玉に挙げてみますが、特にユーザーを作成するときにユーザーのパスワードってマネジメントコンソール(以下マネコン)から、ちゃっちゃっと入力して終わりーみたいな感じで済ませるケースがほとんどだと思うんですが、IaCだとそうも行かなくてこのパスワードもしっかり書いてあげないとAWS側だと認識してくれないんですよ。

参考までにAWS側が公開しているIAMのサンプルをこちらに貼り付けしてみます。


対象のセクションは、LoginProfileになりますが具体的な書き方は

LoginProile:
Password: XXXX
PasswordResetRequired: XXX(true or false)

というような書き方をします。

ここで悪い例は、こんな感じの書き方になります。

Password欄を見てほしいですが、パスワードがハードコーディング(直接記載)されているのがわかりますね?(testtestという箇所)
なぜ、この書き方がNGかというとこうしてしまうことでcloudformationでスタックを作成した際にコードを確認するタブでパスワードがほかの第三者(ここでは完全な第三者というよりかは、例えば社内の誰か)に見られてしまうという危険性があり、セキュアではないことが問題となります。※cloudformationの閲覧含めてIAMやSCPで絞ればという話は一旦置いておいて

なので、無難な書き方またコード自体の汎用性を高めるための書き方として下記のようなコーディングをおススメします。

敢えて、Resourceセクションとは別にParametersセクションを設けること、加えてその中身がパスワードをハードコードではなく、NoEcho: true という形で明記させないという方法をとり、実際のResourceセクションのPassword欄では、!Ref XXX という形で記載することでスタックを流す際に初めてパスワードをマネコン上でタイピングすることができ、加えてスタック作成後のコードでもパスワードが書かれていないので漏れる心配もないというのが大きなポイントとなります。

基本的に今回IAMでこのような書き方をしましたが、これってIAMだけでなくパスワードの項目がマストのAWSサービスであればどれでも利用可能なため、使いまわしてより良いcloudformationライフを過ごしましょう!

2021年10月09日

以下、宣伝です。
仲間も募集中なので、気になる方は連絡くださいませ。
いい会社だと思いますよ。


この記事が気に入ったらサポートをしてみませんか?