
AWS (Amazon Web Services) コンソールにIAMユーザーでログインする際、通常のデフォルト状態だとユーザー名とパスワードのみでログイン出来る。しかし、ITにおいてセキュリティが非常に重要となる昨今、それだけでは不安な利用シーンも数多く存在する。
そこで、本ナレッジではAWSコンソールへのログイン時MFA (多要素認証) を必須化することで、ITセキュリティを向上させる手順を説明する。
その方法としては、IAM (Identity and Access Management) ポリシーを設定しそれをIAMユーザに付与することにより、設定、実装する。
MFA強制用IAMポリシー作成
AWSコンソールへのログイン時MFAを必須化するため、最初にMFA強制用のIAMポリシーを作成する。
このIAMポリシーはMFAを設定していない状態で、ユーザ名とパスワードのみでAWSコンソールにログインした場合、MFA設定以外のAWS上リソースの操作や閲覧を禁止するIAMポリシーとなる。
- AWSコンソールにルートユーザーかIAMポリシーを作成できる権限を持つIAMユーザにてログイン
- 画面上部の検索欄にて「IAM」を検索およびクリックし、IAMダッシュボードにアクセス
- 画面右上部のリージョン欄を確認し、「グローバル」リージョンであることを確認
- 画面左部メニューの「ポリシー」をクリック
- 「ポリシーの作成」をクリック
- 「ポリシーの作成」画面が表示されるのを確認
- 「アクセス許可を指定」画面が表示されるので、「ポリシーエディタ」の「JSON」をクリック
- ポリシーエディタにて、既存の内容を削除し、下記JSONコードをコピーして記載
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowViewAccountInfo",
"Effect": "Allow",
"Action": [
"iam:GetAccountPasswordPolicy",
"iam:ListVirtualMFADevices"
],
"Resource": "*"
},
{
"Sid": "AllowManageOwnPasswords",
"Effect": "Allow",
"Action": [
"iam:ChangePassword",
"iam:GetUser"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnAccessKeys",
"Effect": "Allow",
"Action": [
"iam:CreateAccessKey",
"iam:DeleteAccessKey",
"iam:ListAccessKeys",
"iam:UpdateAccessKey",
"iam:GetAccessKeyLastUsed"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnSigningCertificates",
"Effect": "Allow",
"Action": [
"iam:DeleteSigningCertificate",
"iam:ListSigningCertificates",
"iam:UpdateSigningCertificate",
"iam:UploadSigningCertificate"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnSSHPublicKeys",
"Effect": "Allow",
"Action": [
"iam:DeleteSSHPublicKey",
"iam:GetSSHPublicKey",
"iam:ListSSHPublicKeys",
"iam:UpdateSSHPublicKey",
"iam:UploadSSHPublicKey"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnGitCredentials",
"Effect": "Allow",
"Action": [
"iam:CreateServiceSpecificCredential",
"iam:DeleteServiceSpecificCredential",
"iam:ListServiceSpecificCredentials",
"iam:ResetServiceSpecificCredential",
"iam:UpdateServiceSpecificCredential"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnVirtualMFADevice",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice"
],
"Resource": "arn:aws:iam::*:mfa/*"
},
{
"Sid": "AllowManageOwnUserMFA",
"Effect": "Allow",
"Action": [
"iam:DeactivateMFADevice",
"iam:EnableMFADevice",
"iam:ListMFADevices",
"iam:ResyncMFADevice"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:GetMFADevice",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"iam:ChangePassword",
"iam:GetAccountPasswordPolicy",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
- 画面右下部の「次へ」をクリック
- 「確認して作成」画面が表示されるので、下記を入力
- ポリシーの詳細
- ポリシー名
- 任意のポリシー名 (例: Force_MFA)
- 説明
- 任意の説明 (例: 空欄)
- ポリシー名
- このポリシーで定義されている許可 (本設定は既に設定内容が入っており、確認のみ)
- 明示的拒否
- 後述の「許可」以外のすべて
- 許可
- サービス – IAM、 アクセスレベル – 制限あり: 読み取り, リスト, 書き込み、 リソース – Multiple、 リクエストの条件 – None
- 明示的拒否
- タグを追加 – オプション
- 任意のタグ (例: 空欄)
- ポリシーの詳細
- 画面右下部の「ポリシーの作成」をクリック
- IAMポリシー画面となり、画面上部にIAMポリシーが作成された旨のメッセージが表示される、そして、ポリシーの検索窓で作成したポリシーを検索すると対象のポリシーがあることが確認できる
上記のJSONコードは、下記のAWS公式ページに存在するサンプルJSONコードと少し差異がある。
公式ページのサンプルJSONコードでは、新規ユーザ作成の際、仮パスワード発行して初回ログイン時パスワード変更を必須とした運用とすると、パスワード変更が出来ずログインできなくなってしまう。
そのため、MFA未使用でもパスワードは変更可とするよう本手順では下記「// add」部分の2行を追加している。
ただし、これではMFAを実施していなくてもパスワードが変更可となってしまうため、セキュリティと利便性のトレードオフとなっている。運用シーンに応じて適宜適切なJSONコードを設定する。
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:GetMFADevice",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"iam:ChangePassword", // add
"iam:GetAccountPasswordPolicy", // add
"sts:GetSessionToken"
],
IAMユーザへのMFA強制用IAMポリシー付与
その後、作成したMFA強制用IAMポリシーをIAMユーザーに付与することで、AWSコンソールログイン時、MFA設定以外のAWS上リソースの操作や閲覧等が出来なくすることが出来る。
IAMポリシー付与は、IAMユーザー作成時に「許可を設定」画面にて、「ポリシーを直接アタッチする」で付与することが可能である。
また、IAMユーザーグループに「許可ポリシーを添付」でIAMポリシーを付与した後、IAMユーザーをそのIAMユーザーグループに所属させることでも実現出来る。
以上がIAMポリシーによる、AWS MFA (多要素認証) 必須化設定手順 となる。
また、実際にIAMユーザーでログインしMFAを設定する手順については別ナレッジにて記載する。






