みなさんこんにちは!
クラウドコンサルティング課の滝澤です。
担当しているプロジェクトでMFAでWinAuthを使うことがあり、弊社のブログを見ていたのですが、 3年前の記事となっておりマネジメントコンソールのUIもアップデートされているので再度ブログを書くことにしました。
過去の記事はこちら
WinAuthダウンロード
まず、WinAuthを公式ページからダウンロードします。 winauth.github.io
現在の最新バージョンであるWinAuth 3.5.1 (2016-06-07)をダウンロードします。
WinAuth 3.5.1のと書いてあるリンクをクリックするとWinAuth-3.5.1.zipがダウンロードされます。
MFA仮想デバイス設定
ダウンロードしたWinAuth-3.5.1.zipをインストールするWindows PCの任意の場所で展開し、フォルダ内のWinAuth.exeをダブルクリックで実行します。
「Add」ボタンから、「Authenticator」を選択します。
続いて、AWS側の設定を行います。
AWSマネジメントコンソールにログインし、右上のユーザーを選択します。
「セキュリティ認証情報」を選択します。
多要素認証(MFA)で、「MFAデバイスの割り当て」を選択します。
※後述しますが、MFA関連の操作許可ポリシーが付与されていない場合、「MFAデバイスの割り当て」は実行できません。
MFAデバイスを選択画面で、デバイス名とデバイスオプションを選択します。
今回WinAuthを登録するため、「認証アプリケーション」を選択します。
デバイスの設定画面で②の「シークレットキーを表示」を選択し、表示されたシークレットキーをコピーします。
ここでコピーしたシークレットキーをWinAuth側で使用します。
WinAuthに戻り、Add Authenticator画面で「Name」に任意のデバイス名を設定します。
1. Enter the Secret Code for your authenticator. ~
の入力フォームに前の手順でコピーしたシークレットキーを入力します。
2. Choose if this is a time-based or a counter-based authenticator.
でTime-basedのラジオボタンを選択します。
「Verify Authenticator」を押下すると、4. Verify the following code matches your service.
にワンタイムパスワードが表示されるのでコピーします。
コードは30秒で変わってしまうので注意してください。
AWSマネジメントコンソールに戻り、前の手順でコピーしたワンタイムパスワードを③の「仮想アプリケーションのコードを以下で入力してください」に入力します。
30秒経過したのち、WinAuthで生成された新しいワンタイムパスワードを同様に「30秒待ってから、2つ目のコードエントリを入力してください。」に入力します。
入力が完了したら「MFAを追加」を押下します。
正常に割り当てが完了すると「割り当て済みのMFAデバイス」が表示され、多要素認証(MFA)に追加したMFAデバイスが表示されます。
以上でWinAuthでのMFA仮想デバイスの追加が完了となります!
サインイン確認
設定したMFA仮想デバイスでサインインができるか確認しましょう!
通常通り、サインインを行うとMFAのコード入力が求められるので、WinAuthに表示された6桁のコードを入力します。
「Sign In」を押下します。
問題なくログインできたことが確認できましたね!
以上でWinAuthを使ったMFAでのサインインは完了です!
MFAデバイス関連の操作許可ポリシーについて
さて、「MFAデバイスの割り当て」手順でMFA関連の操作許可ポリシーが付与されていない場合、「MFAデバイスの割り当て」は実行できません
と記載しました。
具体的には、以下のような権限が必要となりますので、AWS管理者へ連絡して付与してもらうか、ご自身で権限を付与してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListActions", "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:ListVirtualMFADevices" ], "Resource": "*" }, { "Sid": "AllowUserToCreateVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/*" }, { "Sid": "AllowUserToManageTheirOwnMFA", "Effect": "Allow", "Action": [ "iam:EnableMFADevice", "iam:GetMFADevice", "iam:ListMFADevices", "iam:ResyncMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowUserToDeactivateTheirOwnMFAOnlyWhenUsingMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice" ], "Resource": [ "arn:aws:iam::*:user/${aws:username}" ], "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } } }, { "Sid": "BlockMostAccessUnlessSignedInWithMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:ListMFADevices", "iam:ListUsers", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }
上記ポリシーでは、MFAデバイスの操作を許可するポリシーとMFAが有効になっていない場合ほとんどの操作を拒否するポリシーとなっています。
AWSのDocsにも記載があるので参考にしてください。
docs.aws.amazon.com
まとめ
WinAuthのMFAデバイス登録をやってみましたがいかがだったでしょうか?昨今のセキュリティではMFAが必須となっている場合がほとんどだと思います。
Google AuthenticatorやMicrosoft Authenticatorとさまざまなものがありますが、Windows端末の場合はWinAuthが選択肢になってくる場合もあると思います。
ただし、MFAの本質を考えた場合、PCにMFAアプリがインストールされているとPCを紛失/盗難された場合、アクセスされてしまう可能性が高くなるので、
可能であれば、スマートフォンなど別の端末へのMFAアプリのインストールを推奨します。
この記事が誰かの役に立つと幸いです。
kento.takizawa(記事一覧)
妻と娘をこよなく愛すエンジニア