5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS初心者がMFA必須のIAMユーザを払い出してもらった際、初回アクセスする手順

Last updated at Posted at 2020-05-05

昨日から大学時代の友人と3人でWEBサービス作成中のちゃらとりです。
AWSを利用してサービス構築することにしたので、僕のAWSアカウント上に友人たちのIAMユーザを払い出すことにしました。
彼らに向けて、AWSコンソールにログインしてもらう際の手順をまとめました。

# 普通に過ごしているとQiitaに書くようなネタが何にも思いつかなかったのに、
# ただ仲間と一緒に何かに取り組んでるだけなのに、こんなにネタが湧いてくるのスゲー、
# って思いながら書いてます。

# アウトプットするためには、実際に伝える相手がいると違いますね。

前提

IAMグループとしてadministratorとdeveloperを作成しています。
image.png

developerのアクセス権限は下記の2つのポリシーを設定しています。
image.png

ReadOnlyAccessは、AWSが最初から用意しているIAMポリシーで、すべてのサービスの閲覧権限が設定されています。
Force-MFAは、自分で作成したIAMポリシーで、ざっくり言うと、MFA(Multi-Factor-Authentication:多要素認証)をしてログインしない限り、何もできなくするポリシーです。※名前の通り、MFAを強制するポリシー。
Force-MFAのポリシーについては、コチラの記事を参考に設定しました。

僕が払い出すIAMユーザは、初回ログイン時にパスワードの変更を必須としているため、参考記事で紹介されているポリシー設定をちょっと変えて、下記を設定しています。

Force-MFAのポリシー詳細
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowListActions",
      "Effect": "Allow",
      "Action": [
        "iam:ListUsers",
        "iam:ListVirtualMFADevices",
        "iam:ChangePassword",
        "iam:GetAccountPasswordPolicy"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowIndividualUserToListOnlyTheirOwnMFA",
      "Effect": "Allow",
      "Action": [
        "iam:ListMFADevices"
      ],
      "Resource": [
        "arn:aws:iam::*:mfa/*",
        "arn:aws:iam::*:user/${aws:username}"
      ]
    },
    {
      "Sid": "AllowIndividualUserToManageTheirOwnMFA",
      "Effect": "Allow",
      "Action": [
        "iam:CreateVirtualMFADevice",
        "iam:DeleteVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ResyncMFADevice"
      ],
      "Resource": [
        "arn:aws:iam::*:mfa/${aws:username}",
        "arn:aws:iam::*:user/${aws:username}"
      ]
    },
    {
      "Sid": "AllowIndividualUserToDeactivateOnlyTheirOwnMFAOnlyWhenUsingMFA",
      "Effect": "Allow",
      "Action": [
        "iam:DeactivateMFADevice"
      ],
      "Resource": [
        "arn:aws:iam::*:mfa/${aws:username}",
        "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",
        "iam:ChangePassword",
        "iam:GetAccountPasswordPolicy"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

※初回アクセス時、MFA設定していない状態でもパスワード変更ができるように、"iam:ChangePassword"と"iam:GetAccountPasswordPolicy"の権限を付与しているところが変更点。

初回アクセス時、ログインしてからMFA登録するまでの手順

アクセス情報

IAMユーザ発行時に生成されるcredentials.csvにAWSコンソールにログインするために必要な

  • ユーザ名
  • 初期パスワード
  • AWSコンソールのログインURL

が記載されています。
管理者からcredentials.csvを受け取ってから以下の手順を実施してください。

AWSコンソールにアクセスしログインする

ブラウザを起動して、credentials.csvに記載のConsole login link (https://[12桁のAWSアカウント番号].signin.aws.amazon.com/console)にアクセスします。
すると、下記のような画面が表示されますので、ユーザー名にcredentials.csvのUser nameを、パスワードにcredentials.csvのPasswordを入力してサインインボタンをクリックします。

image.png

下記のようなパスワード変更画面が表示されるので、古いパスワードと新しいパスワードを入力して「パスワード変更の確認」ボタンをクリックします。

image.png

なお、僕のAWSアカウントでは、下記のパスワードポリシーを設定しているので、16桁以上で大文字小文字混在かつ数字記号を含むパスワードを設定してもらうことにしています。
image.png

新しいパスワードの設定に成功するとログイン完了です。
image.png

ただ、このままではMFA設定をしていないので、何も見れません。

image.png

なので、MFA設定をしていきます。

MFA設定の準備

MFA設定を行うために、認証アプリを入手してください。
※すでに持っている場合は、この手順はスキップして次の「AWSコンソール上でMFA設定を行う」に進んでください。

Android または iPhone であれば、Google製の認証アプリをアプリストアからダウンロードできます。
コチラの公式手順に従って、アプリをダウンロードしてください。

Windowsの場合は、WinAuthなどのアプリが利用可能です。
コチラの記事などを参考にインストールしてください。

※認証アプリは1つあればいいので、上記のどちらかでOKです。
※簡単なのはAndroid または iPhone用の認証アプリです。なので、この先の説明ではAndroidで認証アプリをダウンロードした前提で進めます。

AWSコンソール上でMFA設定を行う

認証アプリをゲットしたら、再びAWSコンソールに戻って以下の操作を行います。

画面上部の自分の「ユーザ名@12桁のAWSアカウント番号」が書かれている部分をクリックし、
ドロップダウンメニューから「マイセキュリティ情報」をクリックします。

image.png

ページの中ほどにある「MFAデバイスの割り当て」ボタンを見つけて、クリックして下さい。

image.png

すると、下記のポップアップが出てくるので、仮想MFAデバイスが選択されていることを確認して、「続行」ボタンをクリックしてください。

image.png

AndroidまたはiPhoneの認証アプリを利用する場合、
QRコードの表示をクリックしてQRコードを表示させてください。

image.png

AndroidまたはiPhoneの認証アプリを起動し、
①右下の+ボタンを押して「バーコードをスキャン」してください。

image.png

②スキャンに成功すると6桁の数字が出てくるので、
その数字をAWSコンソール側のポップアップのMFAコード1に入力してください。

image.png

しばらく待つと、認証アプリ側の6桁の数字が変化するので、次の6桁の番号をMFAコード2に入力して
「MFAの割り当て」ボタンをクリックしてください。

これでMFA設定が完了しました。

一度サインアウトしてから再度サインインする

この状態ではまだ、MFA認証を使ってサインインしていない状態のため、一度サインアウトして再度サインインする必要があります。

AWSコンソールの上部にある「ユーザ名@12桁のAWSアカウント番号」の部分をクリックし、ドロップダウンメニューから「サインアウト」を選択してください。
image.png

再度、credentials.csvに記載のConsole login linkのURLにアクセスして、サインインしてください。
※パスワードは初回ログイン時に変更した新しいパスワードになります。

image.png

MFA設定をしたので、次の画面が表示されます。
MFAコードに、認証アプリに表示されている6桁の数字を入力して、送信ボタンをクリックしてください。

image.png

無事ログインできました。

image.png

AWS上の各種リソースの状況を閲覧できるようになっています。

image.png

2回目以降、AWSコンソールにログインする手順

すぐ上で説明した、「一度サインアウトしてから再度サインインする」の手順に記載のサインイン方法でサインインできます。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?