AWS Identity and Access Management
ユーザーガイド

AWS: MFA で認証された IAM ユーザーが [My Security Credentials (セキュリティ認証情報)] ページで自分の MFA デバイスを管理できるようにします。

次のようなポリシーを作成する方法を示します。この例では、 は、Multi-Factor Authentication (MFA) を使用して認証された IAM ユーザーが [My Security Credentials (セキュリティ認証情報)] ページで自分の MFA デバイスを管理できるようにします。この AWS マネジメントコンソール ページにはアカウントとユーザー情報が表示されますが、ユーザーは自分の MFA デバイスを表示および編集することしかできません。ユーザーに MFA を使用して自らのすべての認証情報を管理することを許可するには、「AWS: MFA で認証された IAM ユーザーが [My Security Credentials (セキュリティ認証情報)] ページで自分の認証情報を管理できるようにします。」を参照してください。

ユーザーが [My Security Credentials (セキュリティ認証情報)] ページにアクセスする方法については、「IAM ユーザー自身によるパスワードの変更方法 (コンソール)」を参照してください。

このポリシーで行うこと

  • この AllowViewAccountInfo ステートメントでは、ユーザーに対して有効になっている仮想 MFA デバイスに関する詳細を表示することを許可します。このアクセス許可は、リソース ARN の指定をサポートしていないため、独自のステートメント内になければなりません。または "Resource" : "*" を指定する必要があります。

  • この AllowManageOwnVirtualMFADevice ステートメントにより、ユーザーは自分の仮想 MFA デバイスを作成、更新、削除できます。リソース ARN は、現在サインインしているユーザーと名前が一致する MFA デバイスにのみアクセスを許可することに注意してください。ユーザーは、各自の仮想 MFA デバイス以外の MFA デバイスを作成または削除することはできません。

  • この AllowManageOwnUserMFA ステートメントでは、ユーザーは自分のユーザーの仮想、U2F、またはハードウェア MFA デバイスを表示または管理できます。このステートメントのリソース ARN は、ユーザー自身の IAM ユーザーにのみアクセスを許可します。ユーザーは他のユーザーの MFA デバイスを表示または管理することはできません。

  • DenyAllExceptListedIfNoMFA ステートメントは、いくつかのリストされたアクションを除いて、すべての AWS のサービスのすべてのアクションへのアクセスを拒否しますが、ユーザーが MFA でサインインしていない場合のみ許可します。このステートメントでは、"Deny""NotAction" の組み合わせを使用して、表示されていないすべてのアクションへのアクセスを明示的に拒否しています。リストされている項目は、このステートメントによって拒否または許可されていません。ただし、アクションはポリシー内の他のステートメントによって許可されています。このステートメントのロジックの詳細については、「Deny での NotAction の使用」を参照してください。ユーザーが MFA でサインインしている場合、Condition テストは失敗し、このステートメントはアクションを拒否しません。この場合、ユーザーの他のポリシーまたは文によってユーザーのアクセス許可が決まります。

    このステートメントは、ユーザーが MFA にサインインしていないときに、リストされているアクションのみを実行できることを保証します。さらに、他のステートメントまたはポリシーがそれらのアクションへのアクセスを許可している場合にのみ、リストされているアクションを実行できます。

    ...IfExists バージョンの Bool 演算子により、aws:MultiFactorAuthPresent キーが見つからない場合、条件は必ず true を返します。つまり、アクセスキーなどの長期認証情報を使用して API オペレーションにアクセスするユーザーは IAM 以外の API オペレーションへのアクセスを拒否されます。

このポリシーでは、IAM コンソールで [ユーザー] ページを表示したり、そのページを使用して自分のユーザー情報にアクセスすることはできません。これを許可するには、 iam:ListUsers アクションを AllowViewAccountInfo ステートメントと DenyAllExceptListedIfNoMFA ステートメントに追加します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": "iam:ListVirtualMFADevices", "Resource": "*" }, { "Sid": "AllowManageOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice", "iam:DeleteVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/${aws:username}" }, { "Sid": "AllowManageOwnUserMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ResyncMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } } ] }