我的IAM帐户至少具有“管理员”特权。我可以在Web控制台中执行所有操作。例如,
最近,我通过提供访问密钥,默认区域和输出格式下载了aws-cli和GREATEST()。然后,我尝试发出一些命令,发现其中大多数(但不是全部)都存在权限问题。例如
$ aws --version
aws-cli/1.16.243 Python/3.7.4 Windows/10 botocore/1.12.233
$ aws s3 ls s3://test-bucket
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
$ aws ec2 describe-instances
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
$ aws iam get-user
{
"User": {
"Path": "/",
"UserName": "xxx@xxx.xxx",
"UserId": "xxxxx",
"Arn": "arn:aws:iam::nnnnnnnnnn:user/xxx@xxx.xxx",
"CreateDate": "2019-08-21T17:09:25Z",
"PasswordLastUsed": "2019-09-21T16:11:34Z"
}
}
在我看来,使用访问密钥进行身份验证的cli与使用MFA进行身份验证的Web控制台具有不同的权限集。
为什么CLI和GUI之间的权限不一致?如何使其一致?
答案 0 :(得分:1)
我遇到了同样的问题,并通过将用户添加到IAM中具有管理员访问权限的新组来解决此问题。
要执行此操作,请转到IAM,用户,点击您的用户,然后点击[添加权限] 在下一个屏幕中,单击[创建组],然后选择管理员访问权限
答案 1 :(得分:1)
如果将BoolIfExists
替换为Bool
,它应该可以工作。您的CLI请求不会因为不使用MFA而被拒绝。
与https://aws.amazon.com/premiumsupport/knowledge-center/mfa-iam-user-aws-cli/相反
答案 2 :(得分:0)
事实证明,由于缺乏MFA,我的其中一项策略阻止了CLI访问。
{
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
},
"Resource": "*",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Sid": "DenyAllExceptListedIfNoMFA"
},
答案 3 :(得分:0)
为了保持真正的安全,请检查这个很好的解释:MFA token for AWS CLI
只需几步
aws sts get-session-token --serial-number arn:aws:iam::123456789012:mfa/user --token-code code-from-token
{
"Credentials": {
"SecretAccessKey": "secret-access-key",
"SessionToken": "temporary-session-token",
"Expiration": "expiration-date-time",
"AccessKeyId": "access-key-id"
}
}
[mfa]
aws_access_key_id = example-access-key-as-in-returned-output
aws_secret_access_key = example-secret-access-key-as-in-returned-output
aws_session_token = example-session-Token-as-in-returned-output
aws --profile mfa
Ps:不要按照建议执行 cron 工作,它又回到了安全性。