Posted at

AWS CLI の全てのコマンドをMFA認証必須にする


AWS CLIでMFA認証を必須にする

AWS CLIはアクセスキーを使用して認証するのでアクセスキーが流出してしまうと

そのユーザの権限でなんでもできてしまう。権限を絞ることで被害を抑えることもできるが

AWS CLIでもMFAの認証を行うこともできる。

明示的な拒否のポリシーの方が強いのでMFA認証されるまでは全てのアクションが拒否されるが

認証後は全てのアクションが許可される。

AWS CLIでMFA認証するためのaws sts get-session-tokenを実行するのに必要な権限はない


policy

{

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": false
}
}
}
]
}


認証方法

MFA認証するにはget-session-tokenでセッショントークンを取得して環境変数に入れる必要がある。


console

aws sts get-session-token --serial-number arn:aws:iam::アカウントID:mfa/ユーザ名 --token-code ワンタイムパスワード

{
"Credentials": {
"AccessKeyId": "xxxxxxxxxxxxxxxxxx",
"SecretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"SessionToken": "xxxxxxxxxxxxxxxxxxxxxxxx",
"Expiration": "yyyy-mm-ddThh:MM:ssZ"
}
}