title | emoji | type | topics | published | |||
---|---|---|---|---|---|---|---|
【AWS】IAMで読み取り専用ユーザー本人がMFAの設定が出来るようにする方法 |
👨🏭 |
tech |
|
true |
社内の有志メンバーでの活動で本人がMFAの設定をする機会がありました。 この経験は、何度もある事ではないと思いますので、備忘録として執筆します。
ReadOnlyAccess
のユーザーを作成後にMFAの認証を行うとしましたが、下記のエラーメッセージが表示されました。
どうやら、「権限がありません」と記載されています。
なので、ポリシーで追加する必要がありそうです。
:::message alert
User: arn:aws:iam::XXXXXXXXXXXX:user/test_user is not authorized to perform: iam:CreateVirtualMFADevice on resource: arn:aws:iam::XXXXXXXXXXXX:mfa/deviceName because no identity-based policy allows the iam:CreateVirtualMFADevice action
:::
{
"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"
],
"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",
"iam:DeleteVirtualMFADevice"
],
"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:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
単語 | 意味 |
---|---|
AllowViewAccountInfo | IAMユーザーがアカウント情報を表示するために許可されているアクションが定義されています。具体的には、アカウントのパスワードポリシーを取得したり、アカウントのサマリー情報を取得したり、仮想多要素認証(MFA)デバイスのリストを取得することができます |
AllowManageOwnPasswords | IAMユーザーが自分自身のパスワードを管理するために許可されているアクションが定義されています。具体的には、パスワードの変更、自分自身のログインプロファイルの作成と削除、ログインプロファイルの取得と更新が許可されています |
AllowManageOwnAccessKeys | IAMユーザーが自分自身のアクセスキーを管理するために許可されているアクションが定義されています。具体的には、アクセスキーの作成、削除、リストの表示、アクセスキーの更新が許可されています |
AllowManageOwnSigningCertificates | IAMユーザーが自分自身の署名証明書を管理するために許可されているアクションが定義されています。具体的には、署名証明書の削除、リストの表示、署名証明書の更新とアップロードが許可されています |
AllowManageOwnSSHPublicKeys | IAMユーザーが自分自身のSSH公開鍵を管理するために許可されているアクションが定義されています。具体的には、SSH公開鍵の削除、取得、リストの表示、SSH公開鍵の更新とアップロードが許可されています |
AllowManageOwnGitCredentials | IAMユーザーが自分自身のGitクレデンシャルを管理するために許可されているアクションが定義されています。具体的には、サービス固有のクレデンシャルの作成、削除、リストの表示、サービス固有のクレデンシャルのリセットと更新が許可されています。 |
AllowManageOwnVirtualMFADevice | IAMユーザーが自分自身の仮想多要素認証(MFA)デバイスを管理するために許可されているアクションが定義されています。具体的には、仮想MFAデバイスの作成と削除が許可されています |
AllowManageOwnUserMFA | IAMユーザーが自分自身のMFAデバイスを管理するために許可されているアクションが定義されています。具体的には、MFAデバイスの無効化と有効化、MFAデバイスのリストの表示、MFAデバイスの再同期が許可されています |
DenyAllExceptListedIfNoMFA | MFAが無効化されている場合に、ユーザーに許可されるアクションを制限する条件が定義されています。MFAが無効な場合、特定のアクション(仮想MFAデバイスの作成、MFAデバイスの有効化、パスワード変更など)に対してのみ許可され、それ以外のアクションに対しては拒否されます |
ポリシー名
の欄に任意の名前を入力します。 ※今回は、test-MFA
という名前で作成します。許可
の欄にIAM
がある事を確認する ※先ほどのJSONでIAM
の内容の設定が反映されました。- 内容を確認し、
ポリシーの作成
をクリックする
-
左側の
ユーザー
をクリックする -
ポリシーを直接アタッチする
を選択する -
検索欄にキーワードを入力し調べやすくします。 ※
test-MFA
だったのでtest
というキーワードで検索しています。 -
先ほど作成した
test-MFA
に✅を付ける -
対象ユーザーと付与するポリシーを確認する
-
ポリシーが追加されました
という成功メッセージを確認する
-
登録するデバイス名を
デバイス名
の入力欄に記入する :::message alert 【注意1】 他のメンバーと同じデバイス名を登録する事が出来ません。 NG : Aさん=iPhone, Bさん=iPhone OK : Aさん=iPhone-A, Bさん=iPhone-B ::: :::message alert 【注意2】 一度入力したデバイス名は、登録してなくても利用する事が出来ません。 ::: -
認証アプリケーション
を選択する -
認証アプリケーション
をスマホにダウンロードする :::message 公式による認証アプリケーションは下記参照です。 @card ::: 自分は下記を利用しました。 @card -
QRコードを表示
をクリックし、QRコードさせる -
スマホの画面に30秒に1回6桁の数字が表示されるので、連続で6桁の数字を2回分入力する
セキュリティ対策として大切な設定なので必ず行いたいですね。