公開:2021.08.23 10:00 | 更新: 2022.08.16 02:50
「aws アクセスキー 漏洩」でWeb検索してみると、アクセスキーが不正利用されてしまい、EC2インスタンスが不正に作成され仮想通貨のマイニングに利用されたり、システム上に保管していたユーザー情報が流出してしまうインシデントが発生している事が分かります。
AWS(Amazon Web Services)経験の浅い私も、最近アクセスキーを使用し、EC2リソースを制御する必要があった事から、AWS初心者でもできるアクセスキーの不正利用軽減策について考えてみました。
アクセスキー利用時の注意点について考えるにあたり、まずAWSのユーザーについて整理したいと思います。
AWSのユーザー作成方法には以下の通り2種類あります。
AWSアカウント作成時に作成するアカウント所持者としてのユーザーです。
AWSで提供されるサービス及びリソースに対してフルアクセスの権限を要します。
AWSの公式サイトでは『ルートユーザー(root user)』、もしくは『AWS アカウントルートユーザー』と明記されています。
このアカウントでAWSへサインインするには、AWSサービス開始時(AWSアカウント作成時)に登録したEメールアドレスとパスワードが必要となります。
AWSアカウント作成後に作成できるユーザーです。
ルートユーザーもしくは作成権限を要するIAMユーザーにより作成されます。
AWSの公式サイトでは『IAMユーザー』と明記されています。
このアカウントは、IAMユーザー名とパスワードでサインインする事ができます。
なお、IAMとは「AWS Identity and Access Management」の略称で、仮想サーバを提供するEC2やストレージサービスを提供するS3などサービスへのアクセスを管理するためのサービスです。その機能には、アクセス権限の管理、多要素認証(MFA)やIDフェデレーションに関するもの等が挙げられます。
IAMユーザー作成時には、サービス及びリソースへのアクセス方法を設定する事ができます。
・プログラムによるアクセス
AWS CLIなどプログラムからリソースへアクセスする方法
・AWS Management Consoleによるアクセス
Webブラウザよりリソースへアクセスする方法
また、IAMユーザーは、AWSのサービス及びリソースに対するアクセス権をレベル別に設定する事ができます。
さらにアクセスレベルと合わせ利用する際の送信元IPアドレスを制限する事も可能です。
次にアクセスキーについてですが、AWSの場合だと、以下がAWSへのアクセスに必要なクレデンシャル(認証に用いられる情報の総称)となります。
・AWS Management Consoleへのログインに必要なユーザー名とパスワード
・プログラムよりアクセス時に必要なアクセスキー
アクセスキーはアクセスキーIDとシークレットアクセスキーから構成されており、ランダムな文字列になっております。
特に、プログラムによるアクセスで作成したIAMユーザーの場合、IAMユーザー作成時に自動生成されたアクセスキーを使用し、サービス及びリソースへアクセスしますが、シークレットアクセスキーは、IAMユーザー作成時しかキー(文字列)を確認できない仕様となっています。
冒頭に挙げたインシデントは、アクセスキーが書かれたソースコードからの流出が主な原因となりますが、AWS CLIからのサービスやリソースへアクセスする場合、AWS CLIを操作するPC/サーバ上にアクセスキーが記載されたファイルが必要となるため、AWS CLIを操作するPC/サーバに内在する脆弱性によっては、そこからアクセスキーを流出させてしまう可能性もあります。
これまでに説明した点を踏まえAWS初心者がアクセスキーを利用する場合には
などの不正利用のリスクを下げる対策が必要と考えられますが、
など、不正利用が発生する事を想定した対策を実施する事がベストかと思います。
以下へアクセスキー/AWSアカウントをセキュアに利用するためのベストプラクティスおよびCloudTrailとCloudWatchによるアラートメールの参考例を記載いたしますので、上記以外の対策/具体的な設定方法の参考として頂ければと思います。
Best practices for managing AWS access keys(英語サイト)
自分の AWS アカウントとそのリソースをセキュアにするためのベストプラクティスについて教えてください。
CloudTrailとCloudWatchによるアラートメールの参考例(英語サイト)
LOADING...