きっかけ
AWS上のセキュリティについて調べるきっかけとなったのは、github上へのアクセスキーの流出です。
ポートフォリオ作成途中、Docker環境上でいろいろ試行錯誤するためにアクセスキーをベタ打ちしてしまっていたのを忘れてローカルリポジトリにpushしてしまいました。
即座に、AWSから警告のメールが届きよくよく調べてみるとそのままでは、不正利用されてしまい高額請求がくる恐れがあることがわかりました。
そこで以下に流出した際のとるべき対応と対策をまとめます。
流出してしまったら
以下、AWSから指示された対応手順に沿って記載します。
①アクセスキー無効化、削除する
まずは、一番にアクセスキーを使用できない状態にしましょう。(これが一番大事です)
たとえ公開リポジトリを削除したとしても、すでにアクセスキーが漏洩してしまっていたら悪用されてしまいます。
すでにアプリケーション等で使用している場合は、交換する必要があるのでまずは削除せずに以下の手順で無効化します。
①二つ目のアクセスキーを作成する
②流出したキーを無効化する
③アプリケーションに新しい鍵を設定
ここまで行い問題がなければ元のキーは削除、問題があれば再度有効にして対応します。
また、ここでAWS初心者の人はrootアクセスキーとIAMユーザーのアクセスキーでこんがらがることもあるかもしれません。
②承認されていないアクティビティがないか確認する
アクセスキーを無効化する前に、すでに不正使用されている場合もあります。
その場合、CloudTrailのログを確認し、見覚えのないものを発見したらアカウントを保護するために、未承認のIAMユーザー、ロール、ポリシーを削除し、一時的な認証情報を失効させます。
③不正なEC2インスタンス、Lambda関数、EC2 Spotの入札など、不正なAWS利用がないかAWSアカウントを確認
こちらも②と同様にCloudTrailのログを確認します。
またそれと合わせて、マネジメントコンソールからも直接それぞれのサービスについて不正な利用がないか確認します。
注意事項としては、コンソール上で表示されているのは設定されている一つのリージョンに関してのみなので、リージョンを適宜切り替えて確認しましょう。
不正に起動されているものがあれば削除しておきましょう。
対策
今回キーの流出を起こしてしまったのは、人為的なミスとシステム上で対策ができていなかったことが原因だと考えています。
今後同じようなことを起こさないために、以下の対策を取り入れます。
システム上の対策
①git-secretsの導入
導入することでソースにアクセスキーを含んだままcommitできなくなります
今回の原因がうっかりということもあり、事前に秘密情報が含まれているコミットをリジェクトできるようにしておきます。
pushの際には気をつけていても、うっかりcommitしてしまっていたなんてことも考えられるので、、、
②IAMのベストプラクティス
・IAMベストプラクティスに沿って、個々のユーザーに必要となるポリシーのみのアタッチとします。(かなり勉強が必要そうですが頑張ります)
・必要な時以外はアクセスキーの発行は控えます。
・定期的にアクセスキーを変更します
まとめ
今回、アクセスキーが流出してしまった際は非常に焦りました。
しかしながら、今後エンジニアになる上で必要となる知識であることを実体験で体感できた良い経験だとも感じております。
これを機にセキュリティ面に関しても力を入れて勉強します。