AWS IAMユーザーにAuthyを使い多要素認証(MFA)を設定する方法

投稿者: | 2020-07-12

前回はAWSのIAMを使用しIAMユーザー、グループを作成しポリシーを適用するところまでを説明しました。今回はIAMユーザーにAuthyを使い多要素認証(MFA)を設定する方法について説明します。

多要素認証(MFA)とは

多要素認証とは、知識情報、所有情報、生体情報の3つのうち2つ以上で認証することを指します。各種情報の意味は以下のとおりです。

■知識情報

ユーザーの知っている情報のことです。主にパスワードや秘密の質問等があります。

■所有情報

ユーザーの所有している情報のことです。主にデバイスやカード等があります。

■生体情報

ユーザーの特徴を使用した情報です。主に顔認証や指紋認証等があります。

ユーザー名とパスワードのみで認証を行う場合、ユーザー名、パスワードの流出によりアカウントの悪用や情報の漏洩等に繋がるリスクがあります。多要素認証を行うことで、攻撃者がパスワードを知り得たとしても、所有情報、生体情報が足りないことにより攻撃を防ぐことができます。そのため、Webサービス等のログイン時のセキュリティが向上します。

Authyとは

Authyは各種Webサービスのパスワードとスマートフォンを使い多要素認証を行うためのアプリケーションです。YahooやAmazon、Facebook、Twitter、AWS等、有名なサービスで多要素認証を行うことができるため多くの人に使われています。

・Twilio Authy 2-Factor Authentication – Google Playのアプリ

https://play.google.com/store/apps/details?id=com.authy.authy&hl=ja

・「Twilio Authy」をApp Storeで

https://apps.apple.com/jp/app/authy/id494168017

前提条件

今回の作業を行うために、事前に多要素認証の設定を行うIAMユーザーの作成と自身のスマートフォンにAuthyをインストールしておいてください。

多要素認証(MFA)に必要なIAMポリシー

IAMユーザーで多要素認証を行うためには、多要素認証関連のアクセス権限が必要となります。今回は事前にCreateMFAPolicyという多要素認証に関するアクセスを一通りできるポリシーをIAMユーザー(グループ)にアタッチしています。

AWSのrootユーザーやAWSの全てのアクセス権限を付与しているユーザーであれば、今回のIAMポリシーの設定は不要のためスキップしてください。

■CreateMFAPolicy
-----------------------------------------------------------
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListUsers",
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIndividualUserToListOnlyTheirOwnMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListMFADevices"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/*",
                "arn:aws:iam::*:user/*"
            ]
        },
        {
            "Sid": "AllowIndividualUserToManageTheirOwnMFA",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/*",
                "arn:aws:iam::*:user/*"
            ]
        },
        {
            "Sid": "AllowIndividualUserToDeactivateOnlyTheirOwnMFAOnlyWhenUsingMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/*",
                "arn:aws:iam::*:user/*"
            ],
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]
}
-----------------------------------------------------------

多要素認証(MFA)の設定

初めに、AWSコンソールの上部にあるユーザー名から「マイセキュリティ資格情報」をクリックします。

「セキュリティ認証情報」画面の下部にある多要素認証(MFA)の「MFAデバイスの割り当て」をクリックします。

「MFAデバイスの管理」画面ではAuthyを使用した多要素認証を行うため「仮想MFAデバイス」を選択し「続行」をクリックします。

「仮想MFAデバイスの設定」でQRコードによるMFAコードの認証を求められるため、「QRコードの表示」をクリックしQRコードを表示します。

QRコード表示後、Authyを開き「Add Acount」をクリックします。

QRコードのスキャンを求められる画面が表示されるため、「Scan QR Code」をクリックし、AWS側で表示させているQRコードを読み込みます。

QRコードを読み込むとアカウントのユーザー名が表示されるため、問題なければ「Save」をクリックします。

登録後、MFAコードの1つ目が表示されるため、AWS側の「MFAコード1」に6桁の数字を入力します。1つ目のコードに関しては表示時間が少し短いため注意が必要です。

1つ目のコードの表示終了後、MFAコードの2つ目が表示されるため、AWS側の「MFAコード2」に6桁の数字を入力します。2つ目のMFAコード入力後「MFAの割り当て」をクリックします。

AWS側で以下のように表示されれば多要素認証の設定は終了です。

動作確認

多要素認証の設定後、一度サインアウトし、多要素認証を設定したユーザーでサインインします。ユーザー名とパスワードの入力後にMFAコードを求められれば多要素認証が設定されています。

MFAコードのサインインについては、Authyを開き該当ユーザーのアカウントをタップし6桁のMFAコードをAWS側で入力し「送信」をクリックしてください。

多要素認証(MFA)の削除

仮想デバイスからU2Fデバイスへ変更する、等の理由で一度設定した多要素認証を削除する場合は、「セキュリティ認証情報」画面の「MFAデバイスの管理」をクリックします。

「MFAデバイスの管理」画面で「削除」を選択し、右下の「削除」をクリックします。

rootユーザーの多要素認証(MFA)について

今回はIAMユーザーに対して多要素認証を設定しましたが、rootユーザーに関しても同様の手順で設定することができます。rootユーザーに関しては、多要素認証を行っていないとTrusted Advisorの「ルートアカウントのMFA」という項目で引っかかってしまうため、Authy等を使用して多要素認証を行っておきましょう。