AWS CLI and MFA



我创建了一个IAM用户(没有MFA(,并将以下策略附加到该用户。这是为了确保对S3的调用使用MFA。但是,当我通过AWS CLI为该用户使用AccessKeys时,我能够在没有任何授权错误的情况下执行S3操作aws s3 ls

我是做错了什么还是AWS中的错误?

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

不完全确定OP中的策略语句不起作用的原因。但是我确实将AmazonS3FullAccess策略与以下策略之一附加在一起,它的行为与预期的一样。对于long-term credentials,我不能执行S3操作,而对于temporary credentials,当通过MFA认证时,我能够执行S3操作。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
{
"Version": "2012-10-17",
"Id": "123",
"Statement": [
{
"Effect": "Deny",
"Resource": "*",
"Action": "s3:*",
"Condition": {
"Null": {
"aws:MultiFactorAuthAge": true
}
}
}
]
}

您使用的是Allow,但应该使用AWS文档中解释的Deny。示例:

{
"Version": "2012-10-17",
"Id": "123",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*",
"Condition": { "Null": { "aws:MultiFactorAuthAge": true }}
}
]
}

仔细阅读AWS文档,因为如果您使用Deny不正确,您可能会将自己锁定在存储桶之外。

最新更新