1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Adminユーザ発行時に最低限やっておきたいMFA必須化

Last updated at Posted at 2025-02-08

はじめに

  • 本記事の目的と背景
    同一のAWSアカウント内で複数の開発メンバーと検証を行う必要が生じました。その際、自身が管理するAWSアカウント内に、他メンバーに管理者権限を付与したIAMユーザを発行することになりました(本来的には必要なポリシーのみをアタッチすることが推奨されますが…)。初めてのIAMユーザ発行だったため、GPTやAWSドキュメントを参考にポリシー内容を調査し、備忘録としてまとめることを目的としています。

前提・注意点

管理者権限の付与は誤操作や不正利用、情報漏洩といった重大なリスクを伴います。
検証対象のリソース・アクションを規定し、最小権限の原則を守ることがベストプラクティスです。

設定手順

今回の設定は以下の手順で実施します。

  1. カスタムポリシーの作成
    MFAデバイスの管理許可&MFAを用いたサインインを実施していない場合、
    アクションを拒否する設定
  2. ユーザグループの作成
    1のカスタムポリシーと「AdministratorAccess」をグループにアタッチ
  3. ユーザグループにユーザを割当

カスタムポリシーの作成

ポリシー作成>ポリシーエディタにて以下のアクセス許可ステートメントを設定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowIndividualUserToManageTheirOwnMFA",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice",
                "iam:ListMFADevices"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/${aws:username}",
                "arn:aws:iam::*:user/${aws:username}"
            ]
        },
        {
            "Sid": "BlockMostAccessUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice",
                "iam:ListMFADevices"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
  • 1つめのブロック
    このステートメントはユーザーが自身のMFA(多要素認証)デバイスを管理できるようにするためのものです。各設定内容の意味は以下の通りです。

    • iam:CreateVirtualMFADevice:仮想MFAデバイスの作成
    • iam:DeleteVirtualMFADevice:仮想MFAデバイスの削除
    • iam:DeactivateMFADevice:MFAデバイスの無効化
    • iam:EnableMFADevice:MFAデバイスの有効化
    • iam:ResyncMFADevice:MFAデバイスの再同期
    • iam:ListMFADevices:MFAデバイスの一覧取得

Resourceで指定されているARN(Amazonリソースネーム)は、リクエストを実行するユーザー自身に紐付くMFAデバイスとユーザー情報(${aws:username})に限定されており、他のユーザへの影響を防止します。

  • 2つめのブロック
    このステートメントは、ユーザーがMFA(多要素認証)によるサインインを使用していない場合、MFAの設定や管理に関連するアクション(上記の設定内容と同様)以外は拒否することを示しています。

ここでは上記のステートメントを設定したポリシーを「mustSetMFA」という名称で保存します。

ユーザグループの作成

ユーザグループを作成し(ここでは「admin」という名称で作成しています)許可に、
前提で作成したカスタムポリシーとデフォルトで存在する「AdministratorAccess」をアタッチします。

image.png

ユーザグループにユーザを割当

ユーザにグループを割り当て、上記のグループを割り当てます。
※当該のユーザにはコンソールアクセス提供オプションを設定する
image.png

image.png

検証

各リソースへのアクセス・実行許可がないことを確認する

上記手順でグループに割り当てたIAMユーザにて、サインインして検証してみます。
image.png

以下にて各サービスの表示・実行権限がないことを確認できます。

▼コンソールホーム
image.png

▼VPCダッシュボード
image.png

▼VPC作成画面
image.png

MFAを設定し各リソースへのアクセス・実行許可が存在することを確認する

IAM>セキュリティ認証情報よりMFAデバイスの割り当てが選択できることを確認し、MFAデバイスを設定します。

image.png

設定後、一度サインアウトしてから再度サインインし各サービスの表示・実行権限が存在することを確認できます。

▼コンソールホーム
image.png

▼VPCダッシュボード
image.png

▼VPC作成画面 ※正常に作成可能
image.png

まとめ

本記事では、管理者権限のリスクを踏まえた上で、MFAを利用したセキュリティ強化策を適用したIAMユーザ作成手順を簡単にまとめました。前提・注意点に記載通り検証対象のリソース・アクションを規定することが原則のため、本記事を参照の際はご注意ください。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?