[AWS] MFA(多要素認証)の有効化/IAM運用の基本

AWS運用における基本的なセキュリティ対策として、強い権限をもつIAMユーザにはMFAの設定が必須です。

基礎知識

MFA(Multi-Factor Authentication)とは

  • MFA = 多要素認証
    • 本人確認のための要素を複数、ユーザーに要求する認証方式
      • 例えば、スマホのSMSでパスワードを送る方式や、一時的なパスワードを入力する方式を体験したことのある方が多いと思います
        • 高いセキュリティを求められるサービスではデファクトになりつつあります
      • 万が一、ユーザ名&パスワードが流出しても悪用を防げることがメリット
    • AWSではIAMユーザ毎にMFAを設定可能

AWSのアカウント管理について

詳細な説明は省きますが、AWSのIAM運用の基本的な考え方を以下に示します。この辺りを理解するには、AWS Solution Architect等の資格の取得がお勧めです。

  • IAM運用の基本的な構成
    • Master Account
      • 危険なので基本的に使用禁止
      • MFAを必ず有効化
    • AWS管理者用:Admin権限をもつIAMユーザ
      • 危険なので常用はしない。使用するのはユーザ追加の時等。
      • MFAを有効化して、重要な作業を実施する際にだけ利用
    • 作業者用:PJメンバのIAMユーザ
      • より上位のIAMユーザを持っているメンバも基本的にこちらを使って作業

より大きな枠組みのマルチアカウント構成やOrganizationの話は省いておりますが、その辺りはAWS SysOps Administratorを取得すれば理解できるので興味があれば勉強してみるといいと思います。

MFA設定手順

  • 前提

    • IAMを弄る権限を持つIAMユーザで設定
    • 今回はスマホのMFAアプリを使います
      • 社用スマホがあれば基本的にこの手法でOK
  • AWSコンソールのサービス一覧より、IAMを選択

  • 左のナビゲーションペインよりユーザーを選択

  • MFAを有効化したいユーザを選択

  • 認証情報タブを選択
    IAM User概要

  • MFAデバイスの割り当ての右の”管理”を押下

  • 次へ
    image

  • ”QRコードの表示”を押下
    image

  • 好きなMFAアプリでQRコードを読み込む

    • 今回はMS Authenticatorを使いました
      • ”2段階認証のセットアップ”からQRコードを読み込めます
  • MFAアプリに表示されるワンタイムパスワードを入力

  • MFAの割り当てを押下

  • 以下のように表示されればOKです

設定後の認証の流れ

  • AWS Consoleのログイン画面にアクセス
  • Account/IAM User名/Passwordを入力
  • 連携させたMFAアプリに表示されるワンタイムパスワードを入力
@EventEmitter @Input @Output @ViewChild ACM AMP API Gateway AR AR.js AR.js Studio AWS AWS Amplify AWS Budgets AWS Cost Explorer AWS SDK for JavaScript AddThis Adobe XD Alexa Amazon CloudWatch Amazon Honycode Amazon SNS Android Angular Angular Material AngularFire AppSync Augury C CDN CI/CD Cloud Craft Cloud9 CloudFormation CloudFront CloudTrail Cognito Cost Anomaly Detection Cubase ai Cubasis LE DTM Disqus DynamoDB Elgato HD 60S Firebase Firebase Hosting Former2 Github Github Actions Github.com GithubEnterprise GithubPages Google Chrome Google Cloud Shell GraphQL Hexo Hosting IAM Ionic JSON JavaScript LadioCast Logging LowCode MFA MS Authentication MacBook Pro 16 Mind Node NETDUETTO Netflix Party Netlify Network NoCode Observable PO PdM Promise RPA ReactiveForm Recognition Route53 S3 SAM(Serverless Application Model) SAR SSL SYNCROOM Schematics ScrumInc Serverless Service Siri Sitemap Spark AR Steinberg UR44C Teams Touch Cast Studio Treetable TypeScript UI UI Bakery WAF WAFv2 WEB Page Dev WEB会議 WebAR WebSocketAPI Webhook Windows Power Automate Wireshark aot async/await aws config cloud9 display.land draw.io e2e test filter() forkJoin() google search console hexo-generator-amp iOS iPad Pro iPhone icarus map() mat input mat tree mat-checkbox mat-input mat-selection-list mmhmm ngFor plantUML popIn Aladdin2 then() vscode ”global is not defined” らくがきAR アジャイル アジャイル開発 クロスプラットフォーム ショートカット スクラム スクラム開発 テレワーク ファイル操作 ブラウザ型IDE プロダクトオーナー プロダクトマネージャー プロトタイピング リモートセッション 共同開発 双方向データバインディング 待ち合わせ処理 認定スクラムマスター 静的WEB Hosting 静的WEBサイトHosting
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×