Wenn Sie MFA für den IAM-Benutzer für den Zugriff auf die AWS Management Console konfiguriert haben Die MFA-Authentifizierung ist auch erforderlich, wenn Sie die AWS-CLI mit demselben Benutzer verwenden. Ich habe es bald vergessen, also habe ich es zu einem Befehl gemacht.
source ~ / .bashrc
.bashrc
function AWSCLIINIT() {
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
aws configure
mfa_arn=`aws sts get-caller-identity --query 'Arn' --output text 2>/dev/null | sed -e "s/:user\//:mfa\//g"`
if [ -n "$mfa_arn" ]
then
echo "YourMFA :"$mfa_arn
echo -n INPUT YourMFA-Code :
read mfa_code
get_session_token=`aws sts get-session-token --output text --serial-number $mfa_arn --token-code $mfa_code 2>/dev/null`
if [ -n "$get_session_token" ]
then
set -- $get_session_token
export AWS_ACCESS_KEY_ID=$2
export AWS_SECRET_ACCESS_KEY=$4
export AWS_SESSION_TOKEN=$5
else
echo "MFA ERROR"
fi
else
echo "aws configure is wrong"
fi
}
AWSCLIINIT
$ AWSCLIINIT
AWS Access Key ID [********************]:
AWS Secret Access Key [********************]:
Default region name [ap-northeast-1]:
Default output format [json]:
YourMFA :arn:aws:iam::123456789012:mfa/abcdefg
INPUT YourMFA-Code :123456
$
Wenn kein Fehler vorliegt, ist die Authentifizierung erfolgreich. Token usw. werden in der Umgebungsvariablen festgelegt.
Vor der MFA-Zertifizierung
$ aws iam get-user
An error occurred (AccessDenied) when calling the GetUser operation: User: arn:aws:iam::123456789012:user/abcdefg is not authorized to perform: iam:GetUser on resource: user abcdefg with an explicit deny
Bei Verwendung dieses Befehls
$ aws iam get-user
{
"User": {
"UserName": "abcdefg",
"PasswordLastUsed": "2020-01-25T01:16:10Z",
"CreateDate": "2019-12-10T02:55:57Z",
"UserId": "AAAAAAAAAAAAAAAAAA",
"Path": "/",
"Arn": "arn:aws:iam::123456789012:user/abcdefg"
}
}