AWSアカウントの本番環境でケアレスミスを起こさないために意識していること

ケアレ・スミス
2021.07.07

こんにちは。CX事業本部MAD事業部のYui(@MayForBlue)です。

この記事では私が普段AWS環境を触るときに、ケアレスミスを起こさないために気をつけていることをまとめてみました。
あまり特別なことはしていないのですが、どなたかのご参考になれば幸いです。

普段行っていること

※ この記事ではミスしたくない/ミスできない環境を「本番環境」という表現で統一しています。

スイッチロール時に AWS Extend Switch Roles を使う

作業対象のAWSアカウントにログインする場合、IAMロールによるクロスアカウントアクセス(スイッチロール)という方法を利用しています。
スイッチロールの詳細については下記のブログで紹介しているので、スイッチロールって何?という方はご一読いただければと思います。

入社1年で変化したAWSサービスの使い方

スイッチロールを使う場合はデフォルトのマネジメントコンソールのロール履歴ではなく、下記ブログで紹介されているChrome拡張機能を利用しています。

Switch Roleの履歴が・・・消えた・・・? って焦る前に入れておくと幸せになれるAWS Extend Switch Rolesの紹介

上記ブログで紹介されているとおり、この拡張機能は設定ファイルにロール情報を記述することで利用できます。
設定ファイルはコメントアウトすることができるため、普段使わない環境の情報をコメントアウトしておくことで誤った環境にログインする/操作するリスクを減らすことができます。
私の場合は、普段は個人検証環境以外はコメントアウトしておき、その他の環境は作業直前にコメントアウトを外す、作業が終わったら再度コメントアウトするやり方で利用しています。

[xxx_dev]
role_arn = arn:aws:iam::【AWSアカウントID】:role/hogeUser

#[xxx_stg]
#role_arn = arn:aws:iam::【AWSアカウントID】:role/hogeUser

#[xxx_prd]
#role_arn = arn:aws:iam::【AWSアカウントID】:role/hogeUser

定期的にスイッチロールの履歴を削除する

デフォルトのロール履歴は利用しないと書いたのですが、それでもマネジメントコンソールのロール履歴には情報が残っています。
誤操作でこの履歴からアカウントの切り替えを行わないようにするため、気付いたタイミングでロール履歴を削除するようにしています。

ロール履歴を削除する方法は下記ブログをご参照ください。

AWSマネジメントコンソールのロール履歴を削除したい

手順書を作成する

本番環境で作業する場合は事前に必ず手順書を用意するようにしています。
慣れている作業の場合でも、勘に頼るのではなく手順書通りに作業することでケアレスミスが防ぐことができます。
また、手順書には「〜する」という内容だけでなく、実行するコマンドも全て記載して、作業時にはコマンドやパラメーターは手入力ではなくコピーアンドペーストで実行できるようにしています。

手順書通りに検証環境で検証する

手順書を用意したらそのまま本番環境で作業するのではなく、まずは作成した手順書通りに検証環境で作業を行い、想定通りの環境ができるかどうか事前に確認します。
このときに大事なのはできるだけ本番環境と同じ環境を用意して「本番環境の作業時と全く同じ手順で作業すること」です。
手慣れた作業であっても環境が違えば想定通りにいかないこともあります。失敗やエラーが許される検証環境で十分に検証・確認しておくことで本番環境で失敗するリスクを減らすことができます。

アカウントIDやパラメータの確認時にブラウザの検索機能を使う

ログイン時にアカウントIDを確認したり構築後に事前に用意したパラメータシート通りに環境が作成できているか確認するタイミングがあると思います。
このとき、ブラウザの検索機能を利用してアカウントIDや設定値を検索すると該当の値があった場合にハイライトされるため、確認作業が捗ります。

視覚的にわかりやすいため、複数人で画面共有しながらダブルチェックを行ったりする場合にもおすすめです。

指差し確認

方法として書くまでもないくらい基本的なことなのですが、指差し確認もとても大事だと思います。
私の場合は本番環境での作業時は指差し確認しながらパラメータやコマンドの内容をぶつぶつ声に出してチェックすることも多いです。

最小限の権限で作業する

公式ドキュメントの IAM でのセキュリティのベストプラクティス にも記載がありますが、最小限の権限で作業することもとても大事です。
対象でないリソースを操作したり削除したりする可能性を権限レベルで取り払っておくことでリスクを減らすことができます。
私の場合はAWS環境を実際に操作しない場合(パラメータを確認したいだけの場合など)はReadOnlyのみの権限でマネジメントコンソールにログインするということを徹底しています。

最後に

普段自分がAWS環境を触るときに意識していることを改めて振り返ってみました。
書いてみるとやっぱりごく当たり前のことしかしていなかった・・・ですが、減らせるミスはできるだけ減らしたいという気持ちで日々業務にあたっています。

他の方がミスを防ぐためにどのようなことを行っているかもとても気になるので、「こういう方法もあるよ!」や「こっちの方がおすすめだよ!」といった意見があればぜひ教えていただけると幸いです!

この記事がどなたかのお役に立てれば嬉しいです。
以上、CX事業本部MAD事業部のYui(@MayForBlue)でした!