株式会社セキュアイノベーション

    Menu

    セキュリティコラム

    • ネットワーク
    • 初心者向け

    公開:2021.08.23 10:00 | 更新: 2022.08.16 02:50

    AWS初心者ができるアクセスキー不正利用軽減策

    「aws アクセスキー 漏洩」でWeb検索してみると、アクセスキーが不正利用されてしまい、EC2インスタンスが不正に作成され仮想通貨のマイニングに利用されたり、システム上に保管していたユーザー情報が流出してしまうインシデントが発生している事が分かります。

    AWS(Amazon Web Services)経験の浅い私も、最近アクセスキーを使用し、EC2リソースを制御する必要があった事から、AWS初心者でもできるアクセスキーの不正利用軽減策について考えてみました。

    AWSユーザーとは

    アクセスキー利用時の注意点について考えるにあたり、まずAWSのユーザーについて整理したいと思います。
    AWSのユーザー作成方法には以下の通り2種類あります。

    ルートユーザー

    AWSアカウント作成時に作成するアカウント所持者としてのユーザーです。
    AWSで提供されるサービス及びリソースに対してフルアクセスの権限を要します。
    AWSの公式サイトでは『ルートユーザー(root user)』、もしくは『AWS アカウントルートユーザー』と明記されています。
    このアカウントでAWSへサインインするには、AWSサービス開始時(AWSアカウント作成時)に登録したEメールアドレスとパスワードが必要となります。

    IAMユーザー

    AWSアカウント作成後に作成できるユーザーです。
    ルートユーザーもしくは作成権限を要するIAMユーザーにより作成されます。
    AWSの公式サイトでは『IAMユーザー』と明記されています。
    このアカウントは、IAMユーザー名とパスワードでサインインする事ができます。
    なお、IAMとは「AWS Identity and Access Management」の略称で、仮想サーバを提供するEC2やストレージサービスを提供するS3などサービスへのアクセスを管理するためのサービスです。その機能には、アクセス権限の管理、多要素認証(MFA)やIDフェデレーションに関するもの等が挙げられます。

    設定方法

    IAMユーザー作成時には、サービス及びリソースへのアクセス方法を設定する事ができます。
     ・プログラムによるアクセス
       AWS CLIなどプログラムからリソースへアクセスする方法
     ・AWS Management Consoleによるアクセス
       Webブラウザよりリソースへアクセスする方法

    IAMユーザー作成画面

    また、IAMユーザーは、AWSのサービス及びリソースに対するアクセス権をレベル別に設定する事ができます。

    ポリシー画面

    さらにアクセスレベルと合わせ利用する際の送信元IPアドレスを制限する事も可能です。

    送信元IPアドレスの設定

    アクセスキーとは

    次にアクセスキーについてですが、AWSの場合だと、以下がAWSへのアクセスに必要なクレデンシャル(認証に用いられる情報の総称)となります。

    ・AWS Management Consoleへのログインに必要なユーザー名とパスワード
    ・プログラムよりアクセス時に必要なアクセスキー

    アクセスキーはアクセスキーIDとシークレットアクセスキーから構成されており、ランダムな文字列になっております。
    特に、プログラムによるアクセスで作成したIAMユーザーの場合、IAMユーザー作成時に自動生成されたアクセスキーを使用し、サービス及びリソースへアクセスしますが、シークレットアクセスキーは、IAMユーザー作成時しかキー(文字列)を確認できない仕様となっています。

    不正利用軽減策

    冒頭に挙げたインシデントは、アクセスキーが書かれたソースコードからの流出が主な原因となりますが、AWS CLIからのサービスやリソースへアクセスする場合、AWS CLIを操作するPC/サーバ上にアクセスキーが記載されたファイルが必要となるため、AWS CLIを操作するPC/サーバに内在する脆弱性によっては、そこからアクセスキーを流出させてしまう可能性もあります。

    これまでに説明した点を踏まえAWS初心者がアクセスキーを利用する場合には

    • ポリシーで送信元IPアドレスを制限する
    • ソースコードにアクセスキーを記載しない

    などの不正利用のリスクを下げる対策が必要と考えられますが、

    • 目的に応じた専用のIAMユーザーを作成し、最低限のアクセス権を付与する
      例えばAWSのあるサービスを操作するAプログラム用のIAMユーザを作成した後、そのサービスを操作しない別プログラム(B)を作成・操作する場合には、Bプログラム専用のIAMユーザを作成するなどの対策
    • CloudTrailでイベントログ(IAMユーザーのAPI実行ログ(操作ログ)を保管し、特定イベントが発生した場合にはCloudWatchでアラートメールを自動送信させる
    • CloudWatchの請求アラートを有効化する

    など、不正利用が発生する事を想定した対策を実施する事がベストかと思います。

    以下へアクセスキー/AWSアカウントをセキュアに利用するためのベストプラクティスおよびCloudTrailとCloudWatchによるアラートメールの参考例を記載いたしますので、上記以外の対策/具体的な設定方法の参考として頂ければと思います。

    Best practices for managing AWS access keys(英語サイト)
    自分の AWS アカウントとそのリソースをセキュアにするためのベストプラクティスについて教えてください。
    CloudTrailとCloudWatchによるアラートメールの参考例(英語サイト)

    最新のコラム記事

    LOADING...

    セキュアイノベーション サービス一覧

    ネットワーク・サーバー

    Webサイトを守る

    ヘルプデスク・サポート