メニュー
AWS Identity and Access Management
ユーザーガイド

チュートリアル: ユーザーが自分の認証情報および MFA を設定できるようにする

ユーザーが各自の多要素認証 (MFA) デバイスと認証情報を自己管理するようにできます。少人数のユーザーに対しては AWS マネジメントコンソールを使用して認証情報 (アクセスキー、パスワード、署名証明書、SSH パブリックキー) および MFA デバイスを設定できますが、その作業はユーザー数の増大に伴って急速に時間がかかるようになる場合があります。セキュリティ上のベストプラクティスでは、ユーザーが定期的にパスワードを変更すること、アクセスキーを更新すること、不要な認証情報を削除または非アクティブ化すること、さらに重要な操作については少なくても MFA を使用することが求められます。このチュートリアルの目的は、このようなベストプラクティスを管理者に負担を与えずに実現する方法を示すことです。

このチュートリアルでは、AWS サービスへのアクセスをユーザーに許可する方法を示します。ただし、ユーザーが MFA を使用してサインインした場合に限ります。MFA でサインインしていない場合にその他のサービスにアクセスするには、MFA デバイスによる初回サインインが必要になります。

このワークフローには 3 つの基本的なステップがあります。

ステップ 1: MFA サインインを強制するポリシーを作成する

認証情報の変更と MFA デバイスの管理を有効にする特定の IAM API を除いて、すべてのアクションを禁止するカスタマー管理ポリシーを作成します。

ステップ 2: テストグループにポリシーを関連付ける

AWS 管理ポリシー (AmazonEC2FullAccess) と最初のステップで作成したカスタマー管理ポリシーの両方をアタッチして、MFA でサインインした場合にすべての Amazon EC2 アクションにフルアクセスできるメンバーのグループを作成します。

ステップ 3: ユーザーアクセスをテストする

テストユーザーとしてサインインし、MFA デバイスを作成してそのデバイスを使用してサインインするまで、Amazon EC2 へのアクセスがブロックされることを確認します。

前提条件

このチュートリアルのステップを実行するには、以下を持っている必要があります:

  • 管理者権限を持つ IAM ユーザーとしてサインインできる AWS アカウント。

  • ステップ 1 のポリシーに入力するアカウント ID 番号。

    アカウント ID 番号を確認するには、ページ上部のナビゲーションバーで [Support]、[Support Center] の順に選択します。アカウント ID 番号は、このページの [Support] メニューの下で確認できます。

  • グループのメンバーであるテスト IAM ユーザーは次のとおりです。

ユーザーアカウントを作成する グループアカウントを作成して設定する
ユーザー名 その他の手順 グループ名 メンバーとしてユーザーを追加する その他の手順
MFAUser [AWS マネジメントコンソール access] のオプションのみを選択し、パスワードを割り当てます。 EC2MFA MFAUser このグループへのポリシーのアタッチや、アクセス権限の付与は行わないでください。

ステップ 1: MFA サインインを強制するポリシーを作成する

まず、IAM ユーザー各自の認証情報と MFA デバイスの管理に必要な権限を除いて、すべてのアクセス権限を拒否する IAM カスタマー管理ポリシーを作成します。

  1. 管理者認証情報を使用してユーザーとして AWS マネジメントコンソールにサインインします。IAM ベストプラクティスに準拠するため、AWS アカウントのルートユーザーの認証情報でサインインしないでください。詳細については、「個々の IAM ユーザーの作成」を参照してください。

  2. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  3. ナビゲーションペインで、[Policies] を選択し、[Create Policy] を選択します。

  4. [Create Policy] ページで、[Create Your Own Policy] の横の [Select] を選択します。

  5. [Review Policy] ページで、[Policy Name] に「Force_MFA」と入力します。また、[Description] に「このポリシーでは、ユーザーに各自のパスワードと MFA デバイスの管理を許可するが、MFA で認証しない限り、その他の操作を許可しない。」のように入力します。

  6. [Policy Document] エディタウィンドウで、次のポリシーテキストを貼り付け、出現する accountid をすべて実際のアカウント ID 番号に置き換えます。

    Copy
    { "Version": "2012-10-17", "Statement":[ { "Sid": "AllowAllUsersToListAccounts", "Effect": "Allow", "Action":[ "iam:ListAccountAliases", "iam:ListUsers", "iam:GetAccountSummary" ], "Resource": "*" }, { "Sid": "AllowIndividualUserToSeeAndManageOnlyTheirOwnAccountInformation", "Effect": "Allow", "Action":[ "iam:ChangePassword", "iam:CreateAccessKey", "iam:CreateLoginProfile", "iam:DeleteAccessKey", "iam:DeleteLoginProfile", "iam:GetAccountPasswordPolicy", "iam:GetLoginProfile", "iam:ListAccessKeys", "iam:UpdateAccessKey", "iam:UpdateLoginProfile", "iam:ListSigningCertificates", "iam:DeleteSigningCertificate", "iam:UpdateSigningCertificate", "iam:UploadSigningCertificate", "iam:ListSSHPublicKeys", "iam:GetSSHPublicKey", "iam:DeleteSSHPublicKey", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::accountid:user/${aws:username}" }, { "Sid": "AllowIndividualUserToListOnlyTheirOwnMFA", "Effect": "Allow", "Action":[ "iam:ListVirtualMFADevices", "iam:ListMFADevices" ], "Resource":[ "arn:aws:iam::accountid:mfa/*", "arn:aws:iam::accountid:user/${aws:username}" ] }, { "Sid": "AllowIndividualUserToManageTheirOwnMFA", "Effect": "Allow", "Action":[ "iam:CreateVirtualMFADevice", "iam:DeleteVirtualMFADevice", "iam:RequestSmsMfaRegistration", "iam:FinalizeSmsMfaRegistration", "iam:EnableMFADevice", "iam:ResyncMFADevice" ], "Resource":[ "arn:aws:iam::accountid:mfa/${aws:username}", "arn:aws:iam::accountid:user/${aws:username}" ] }, { "Sid": "AllowIndividualUserToDeactivateOnlyTheirOwnMFAOnlyWhenUsingMFA", "Effect": "Allow", "Action":[ "iam:DeactivateMFADevice" ], "Resource":[ "arn:aws:iam::accountid:mfa/${aws:username}", "arn:aws:iam::accountid:user/${aws:username}" ], "Condition":{ "Bool": { "aws:MultiFactorAuthPresent": "true" } } }, { "Sid": "BlockAnyAccessOtherThanAboveUnlessSignedInWithMFA", "Effect": "Deny", "NotAction": "iam:*", "Resource": "*", "Condition":{ "BoolIfExists":{ "aws:MultiFactorAuthPresent": "false"}} } ] }

    このポリシーで行うこと

    • 最初のステートメントにより、ユーザーはアカウントに関する基本情報と、そのユーザーを IAM コンソールで表示できます。この 3 つのアクセス権限は独自のステートメントにある必要があります。これは、アクセス権限が特定のリソース ARN の指定をサポートせず、また指定する必要がなく、その代わりに "Resource" : "*" を指定するためです。

    • 2 番目のステートメントにより、ユーザーは自分のユーザー、パスワード、アクセスキー、署名証明書、SSH パブリックキー、および MFA 情報を IAM コンソールで管理できます (それらの作成と変更を含む)。リソース ARN は、これらのアクセス権限の使用をユーザー独自の IAM ユーザーエンティティにのみ制限します。

    • 3 番目のステートメントにより、ユーザーは MFA デバイスに関する情報と、どれが自分の IAM ユーザーエンティティに関連付けられているかを表示できます。

    • 4 番目のステートメントでは、ユーザーが各自の MFA デバイスをプロビジョニングまたは管理することを許可します。4 番目のステートメントのリソース ARN は、現在サインインしているユーザーと正確に名前が一致するユーザーまたは MFA デバイスにのみアクセスを許可することに注意してください。ユーザーは、各自の MFA デバイス以外の MFA デバイスを作成または変更することはできません。

    • 5 行目のステートメントでは、ユーザーが、自分の MFA デバイスのみ無効化できるようにすることで、管理権限を完了します。これは、MFA を使用してサインインした場合に限ります。アクセスキーのみ所有している (MFA デバイスは所有していない) ユーザーが MFA デバイスを無効化し、自分のデバイスと置き換えるシナリオを防ぐには、この 1 つの管理権限で MFA によるサインインを行う必要があります。

    • 6 行目および最後のステートメントでは、ユーザーが MFA でサインインしていない場合"Deny""NotAction" の組み合わせを、それ以外の AWS サービスのすべてのアクションに使用します。ユーザーが MFA でサインインしている場合、"Condition" テストは失敗し、最後の "deny" ステートメントは失効します。また、ユーザーに付与されている他のアクセス権限が発効します。この最後のステートメントにより、ユーザーが MFA を使ってサインインしていない場合、最初の 4 つのステートメントで許可された IAM アクションしか実行できないようになります。...IfExists バージョンの Bool 演算子は、ユーザーがアクセスキーなど長期的な認証情報で API にアクセスし aws:MultiFactorAuthPresent キーが見つからない場合、条件は true を返し、ステートメントは引き続き適用され、ユーザーは IAM API 以外へのアクセスを拒否されます。

  7. [Validate Policy] を選択して、ポリシーが適切であることを検証します。上のプレースホルダーをアカウント ID に置き換えることを忘れないでください。検証に合格したら、[Create Policy] を選択します。

ステップ 2: テストグループにポリシーを関連付ける

次に、MFA で保護されたアクセス権限を付与するために使用されるテスト IAM グループに、2 つのポリシーをアタッチします。

  1. ナビゲーションペインで、[ Groups] を選択します。

  2. 検索ボックスに EC2MFA と入力し、リストのグループ名 (チェックボックスではありません) を選択します。

  3. [Permissions] タブで、[Attach Policy] をクリックします。

  4. [Attach Policy] ページで、検索ボックスに EC2Full と入力し、リストの [AmazonEC2FullAccess] の横にあるチェックボックスを選択します。変更はまだ保存しないでください。

  5. 検索ボックスに Force と入力し、リストの [Force_MFA] の横にあるチェックボックスを選択します。

  6. [Attach Policy] を選択します。

ステップ 3: ユーザーアクセスをテストする

チュートリアルのこの部分では、テストユーザーとしてサインインし、ポリシーが意図したとおりに動作することを確認します。

  1. 前のセクションで割り当てたパスワードを使用し、MFAUser として AWS アカウントにサインインします。URL: https://<alias or account ID number>.signin.aws.amazon.com/console を使用します。

  2. [EC2] を選択して Amazon EC2 コンソールを開き、ユーザーには一切の操作を行う権限がないことを確認します。

  3. ナビゲーションバーで [Services] を選択し、[IAM] を選択して IAM コンソールを開きます。

  4. ナビゲーションペインで、[Users] を選択し、ユーザーとして (チェックボックスではなく) [MFAUser] を選択します。デフォルトで [Groups] タブが表示される場合は、グループメンバーシップを表示するアクセス権限がないことを意味します。

  5. ここで MFA デバイスを追加します。[Security Credentials] タブを選択します。[Assigned MFA device] の横にある編集アイコン ( )をクリックします。

  6. このチュートリアルでは、テキストメッセージベースの SMS MFA を使用します。[An SMS MFA device] を選択し、[Next Step] をクリックします。

  7. 携帯電話番号を入力し、[Next Step] を選択します。携帯電話でテキストメッセージとして確認コードを受け取ったら、コードをボックスに入力し、[Activate SMS MFA] を選択して、[Finish] を選択します。ここで MFA を使用し、このユーザーとしてサインインできます。

  8. コンソールからサインアウトし、再度 MFAUser としてサインインします。今回は AWS により、携帯電話から MFA コードを取得するよう求められます。コードを取得したら、それをボックスに入力し、[Submit] を選択します。

  9. [EC2] を選択して Amazon EC2 コンソールを開き、今回はすべての情報が表示されて、すべての必要なアクションを実行できることを確認します。このユーザーとしてその他のコンソールにアクセスすると、このチュートリアルのポリシーは Amazon EC2 へのアクセスのみ許可するため、"アクセス拒否" メッセージが表示されます。

IAM ユーザーガイド』の関連情報については、以下の関連リソースを参照してください。

概要

このチュートリアルでは、MFA デバイスでサインインしたユーザーに限り、すべてのアクションへのアクセスを許可する IAM ポリシーを作成する方法について学びました。このポリシーでは、パスワード、アクセスキー、MFA デバイスの自己プロビジョニングが許可されるため、ユーザーは各自の MFA デバイスを作成できます (まだ作成していない場合)。これにより、AWS アカウントのセキュリティ体制全体が改善されますが、ユーザーの MFA デバイスのプロビジョニングが管理スタッフに転嫁されて彼らの負担が増えるということはありません。