[AWS利用者必読] アクセスキー漏洩による不正利用について
AWSアクセスキーセキュリティ意識向上委員会って何?
昨今、AWSのアクセスキーを漏洩させてしまうことが原因でアカウントへの侵入を受け、 多額の利用費発生・情報漏洩疑いなど重大なセキュリティ事案が発生するケースが実際に多々起きています。
そこで、アクセスキー運用に関する安全向上の取組みをブログでご紹介する企画をはじめました。
アクセスキーを利用する場合は利用する上でのリスクを正しく理解し、 セキュリティ対策を事前に適用した上で適切にご利用ください。
【はじめに】
昨今、アクセスキーの漏洩を契機とした不正利用の発生が多発しております。AWS 利用のお客様へのビジネスリスクが非常に大きく、弊社としても憂慮する状況です。
そのため、以下をお読み頂き AWS 利用のお客様は環境の見直しをお願い致します。
【この記事で伝えたいこと】
- 多額の費用発生リスクをなくすために、可能な限りアクセスキーの利用を停止して下さい。
- できない場合は、アクセスキーを持つ IAM ユーザの権限を絞ったり、MFA の導入をしてください。(必須)
【ビジネスリスク】
《多額の利用費請求》
アクセスキーが漏洩した後に発生する事例として、巨大かつ大量の GPU インスタンスが、複数リージョンに渡って起動され、仮想通貨のマイニングに利用される恐れがあります。
- 深夜帯に攻撃が発生し気がつくことができなければ多額の利用費がお客様に請求されます。
《情報漏洩》
広範な権限を持つアクセスキーが漏洩した場合、お客様の AWS 環境にあるデータは攻撃者により取得されます。S3 上のデータは簡単にダウンロードされます。RDS のデータもバックアップから新規インスタンスを立てられれば容易に奪取されます。EC2 も EBS をデタッチ/アタッチされデータは奪取されます。
顧客情報が奪取された場合、大きなビジネスリスクとなります。
また、どのデータが流出したのか、他に侵害された部分はないかといった調査にも多額の費用が発生することが見込まれます。
「侵害されたアカウントが安全になったこと」を証明することは非常に骨が折れます。このような状況に陥らないことが最も肝心です。
《脅迫》
「データを戻したければ仮想通貨を払え」でお馴染みの攻撃です。脆弱性を持つサーバがなくとも、権限を持つアクセスキーが流出すれば同様の攻撃が可能です。
なお、お支払いをしてもデータが復元されることはありません。
《攻撃の加害者》
お客様アカウントに不正に起動された EC2 が、外部システムへの攻撃に使われ、攻撃を受けた側から訴えられる可能性もあります。
万一、係争となれば費用と手間は軽いものではありません。また、不正攻撃をホストしていることが理由で、AWS からアカウントの停止やネットワーク遮断を受ける可能性もあります。
こうなると、お客様のシステムが完全に停止してしまうことになります。
【アクセスキーはどういった場合に使うものか】
アクセスキーは AWS 外部から AWS リソースを操作するために利用するものです。
お客様のローカルマシンから AWS 環境を操作する用途が考えられますが、なくても運用できますので廃止を検討してください。
プライベートサブネットに管理用サーバを作成して作業することでアクセスキー自体の利用が不要になりますのでこちらを推奨します。
または、AWS CloudShell をご利用ください。
万一、利用する場合でも、MFA 認証を必ず有効にし、必要な権限を絞ってください。
プログラムにキーを記載したり、EC2 等から AWS リソースを操作するためにインスタンス内に記載してはいけません。
root ユーザのアクセスキーを使っている場合は、その危険度の高さから早急に廃止するべきです。
【何をするべきか】
IAM でのセキュリティのベストプラクティスに従ってください。
《アクセスキーを極力使わないで下さい》
アクセスキーを払い出さなければ流出しません。以下にユースケースごとに解説します。
『アプリケーションやEC2からリソース操作をしたい場合』
IAM ロールや一時的な権限を使用することが標準です。アクセスキーを使う理由は一切ありません。
『AWSアカウントを管理したい場合』
ローカルで CLI を実行するのではなく、プライベートサブネットに管理用の EC2 を作成し、そこでCLI作業を行なって下さい。
または、AWS CloudShell をご利用ください。
管理用 EC2 には必要な権限のみを適用したIAMロールを割り当てて、アクセスキーを EC2 内に残さないで下さい。MFA の設定も実施して下さい。
《アクセスキーを使う場合は権限を絞ってください》
以下のような広い権限を持つ IAM ユーザではアクセスキーを発行しないで下さい。
- AccessAdmin
- PowerUser
- 〜Admin と付くサービスごとの Admin ロール
- IAM 系の変更権限を持ったもの
運用の簡便さから作成されることがありますが、AWS 環境では非常にリスクが大きくなります。
AWS 外部から永続的に EC2 を作る権限は必要はないはずです。ある場合は早急に運用を見直して下さい。
《git-secretsを導入する》
公開リポジトリに誤ってプッシュすることで漏洩するパターンが非常に多いです。
GitHub 等を対象にこういったミスを見つける bot が常時稼働しており、キーをプッシュ後、数十分でアカウントが侵害されます。人間である以上、ミスは避けられません。
アクセスキーを使うのであれば、導入を検討してください。
また、secretlint を使うこともご検討くださいませ。
《アクセスキーは絶対に共有しない》
複数人で持ち回ると漏洩リスクが跳ね上がります。個人のスコープ以外では使わないでください。
【AWS利用のお客様を守るために】
弊社は AWS 利用のお客様に安全に AWS を使って頂きたいと考えています。
そのために情報のご提供やサポートをさせて頂きますが、最終的にご判断をされるのはお客様となります。お客様自身の安全はお客様でしか守ることができません。
特に権限周りはインシデントに繋がりやすい部分であるため、ベストプラクティスに従って頂くことを強く強くお願いさせて頂きます。
Tips.
AWS CloudShell を長期的にご利用になる際には、S3 や CodeCommit 等でのバックアップのご利用をご検討くださいませ。