AWS MFAの設定手順


前提

AWSのIAM払い出しが完了し、初めてのログイン

環境

Windows10

インストールしたもの一覧

  • Google ChromeにAuthenticator
  • AWS-CLI(AWSCLIV2.msi)
  • python(python-3.9.0-amd64.exe)

MFA有効化までの手順

  1. AWSにログインしIAMのページへ
    AWS内でIAMで検索しても辿り着ける
  2. IAM->ユーザ->自分のユーザに行く
  3. 認証情報タブ->コンソールのパスワードで管理をクリック
    コンソールへのアクセス:有効化
    パスワードの設定:カスタムパスワード
    を選択し、新パスワードを入力する
  4. Google ChromeにAuthenticatorをインストールする
  5. 認証情報タブ->MFAデバイスの割り当てで管理をクリック
    QRコードの表示と拡張機能からQRコードの読み込みを行う
    MFAコードを入力
    1分後のMFAコードを入力
    ブラウザをシークレットウィンドウでひらき、AWSコンソールにログインできることを確認する

ローカルでMFA有効化とCLIが使えるようにする

  1. AWS-CLIをインストールする
    AWSCLIV2.msi
  2. pythonをインストールする
    python-3.9.0-amd64.exe
  3. 認証情報タブでアクセスキーの作成をクリック
    作成されたアクセスキーIDとシークレットアクセスキーを表示し、メモしておく。
  4. コマンドプロンプトを立ち上げる
  5. cloud{ホニャララ}という名前のプロファイルを作成するため、以下のコマンドを実行する
    aws configure --profile cloud{ホニャララ}-long-term
  6. メモしてあるアクセスキーとシークレットアクセスキーを入力する.
    例:
    AWS Access Key ID []:アクセスキーを入力
    AWS Secret Access Key []:シークレットアクセスキーを入力
    Default region name []:ap-northeast-1を入力
    Defult output format [None]:何も入力せずエンター
  7. %USERPROFILE%¥.awsにエクスプローラーで移動する
  8. credentialsに追記する
    aws_mfa_device = arn:aws:iam::**********:mfa/{ユーザ名}
    ※認証情報タブ->MFA デバイスの割り当てに記載されているID
  9. credentialsの先頭に[cloud{ホニャララ}]の行を追記する
    例:
   [cloud{ホニャララ}]
   [cloud{ホニャララ}-long-term]
   aws_access_key_id = {アクセスキー}
   aws_secret_access_key = {シークレットアクセスキー}
   aws_mfa_device = arn:aws:iam::**********:mfa/{ユーザ名}

毎回実行(ローカルでCLI作業前に実行)

  1. コマンドプロンプトで環境変数を設定
    set AWS_PROFILE=cloud{ホニャララ}
    set MFA_STS_DURATION=43200
    ※プロキシ環境の場合、以下も必要
    set HTTP_PROXY=http://{ID}:{PASS}@{プロキシサーバアドレス}:{ポート}
    set HTTPS_PROXY=http://{ID}:{PASS}@{プロキシサーバアドレス}:{ポート}

    ※GitBashでも実行できるのでGitBashの場合は
    ~/.bashrcなどにexportで上記4つを書いておけば起動時に設定されてて楽になった
  2. コマンドでMFAの認証コードを入力すると、~/.aws/credentialsに一時アクセスキーとトークンが設定されたプロファイルが生成・更新される
    aws-mfa --profile cloud{ホニャララ}
    例:
[cloud{ホニャララ}]
assumed_role = False
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットアクセスキー}
aws_session_token = {トークン}
aws_security_token = {トークン}
expiration = {更新日時}

[cloud{ホニャララ}-long-term]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットアクセスキー}
aws_mfa_device = arn:aws:iam::**********:mfa/{ユーザ名}