【问题标题】:Admin access to AWS console, but no access via CLI管理员可以访问 AWS 控制台,但不能通过 CLI 访问
【发布时间】:2021-01-26 10:06:27
【问题描述】:

我使用几个不同的帐户并将所有凭据保存在 ~/.aws/credentials 中。 CLI 在所有其他帐户上都可以正常工作,因此这不是配置问题。唯一有效的是aws sts get-caller-identity

奇怪的是,我属于管理员组(就像现在每个人一样),尽管拥有访问密钥和完整的管理员权限,但我们都没有 CLI 访问权限。

我虽然是因为 MFA,但我通过 CLI 使用另一个具有 MFA 的帐户就可以了。账户上也有这个政策(但看起来没有限制?):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "iam:ListAccountAliases",
        "iam:ListUsers",
        "iam:GetAccountSummary",
        "iam:GetAccountPasswordPolicy"
      ],
      "Resource": "*",
      "Effect": "Allow",
      "Sid": "AllowAllUsersToListAccounts"
    },
    {
      "Action": [
        "iam:ChangePassword",
        "iam:CreateLoginProfile",
        "iam:DeleteLoginProfile",
        "iam:GetLoginProfile",
        "iam:ListAccessKeys",
        "iam:UpdateLoginProfile",
        "iam:ListSigningCertificates",
        "iam:ListSSHPublicKeys",
        "iam:GetSSHPublicKey",
        "iam:UploadSSHPublicKey",
        "iam:DeleteSSHPublicKey"
      ],
      "Resource": [
        "arn:aws:iam::____________:user/${aws:username}"
      ],
      "Effect": "Allow",
      "Sid": "AllowIndividualUserToSeeAndManageTheirOwnAccountInformation"
    },
    {
      "Action": [
        "iam:ListVirtualMFADevices",
        "iam:ListMFADevices"
      ],
      "Resource": [
        "arn:aws:iam::____________:mfa/*",
        "arn:aws:iam::____________:user/${aws:username}"
      ],
      "Effect": "Allow",
      "Sid": "AllowIndividualUserToListTheirOwnMFA"
    },
    {
      "Action": [
        "iam:CreateVirtualMFADevice",
        "iam:RequestSmsMfaRegistration",
        "iam:FinalizeSmsMfaRegistration",
        "iam:EnableMFADevice",
        "iam:ResyncMFADevice"
      ],
      "Resource": [
        "arn:aws:iam::____________:mfa/${aws:username}",
        "arn:aws:iam::____________:user/${aws:username}"
      ],
      "Effect": "Allow",
      "Sid": "AllowIndividualUserToManageTheirOwnMFA"
    }
  ]
}

会是什么?

【问题讨论】:

  • “没有 CLI 访问权限”是什么意思?请提供一些例子。
  • 收到An error occurred (AccessDenied) when calling the ListBuckets operation: Access DeniedAccessDenied: User: arn:aws:iam::______:user/username is not authorized to perform: iam:ListAccountAliases on resource: * with an explicit deny status code: 403 等错误
  • 没有“无 CLI 访问”的概念。 AWS CLI 是一个 Python 程序,它使用适用于 Python 的 AWS 开发工具包 (boto3) 进行 API 调用。 AWS 收到每个 API 调用时都会单独评估。上述错误表示不允许用户列出 Amazon S3 存储桶,这将是准确的,因为您提供的策略未授予 Amazon S3 的任何权限。但是,策略确实授予了权限,因此您应该能够使用 aws iam list-account-aliases,这表明 AWS CLI 未使用您期望的凭证。
  • 谢谢!我检查了几次凭据并重新生成了访问密钥 - 仍然没有区别。但我可以随意更改帐户,没有其他帐户会导致类似问题。

标签: amazon-web-services authentication terraform command-line-interface aws-cli


【解决方案1】:

没有“无 CLI 访问”的概念。 AWS CLI 是一个 Python 程序,它使用适用于 Python 的 AWS 开发工具包 (boto3) 进行 API 调用。 AWS 收到每个 API 调用时都会单独评估。

您提供的错误消息是说不允许用户列出 Amazon S3 存储桶,这是准确的,因为您提供的策略没有授予 Amazon S3 任何权限。

另一个错误提到了explicit deny——所以它要么是没有使用您列出的策略,要么是Service control policy有效,这限制了允许的API调用.

【讨论】:

  • 除了aws sts get-caller-identity 之外,根本无法从控制台外部访问。此外,我的帐户附加了两项政策,我的问题中提供的一项和管理员访问权限:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }
  • 能否 SCP 拒绝来自控制台外部的访问,同时还授予我在控制台中的完全管理员权限?
  • 不,行为将是相同的。 get-caller-identity 的结果是否与登录控制台的 IAM 用户匹配?
  • 是的,确实匹配用户
猜你喜欢
  • 1970-01-01
  • 2019-07-30
  • 1970-01-01
  • 2015-06-25
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多