启动源实例时出错:UnauthorizedOperation:您无权执行此操作

问题描述 投票:0回答:12

我正在尝试使用 Terraform 启动 EC2 实例,但出现以下错误:

启动源实例时出错:UnauthorizedOperation:您无权执行此操作。

我已经将 AdministratorAccess 策略应用到我的 IAM 帐户,所以我想应该不存在 IAM 限制问题。

我还为我的帐户启用了 MFA,但我使用的是 STS 令牌,并且正在从亚马逊接受 API 调用,因此这也不应该是问题所在。

我正在使用的 Terraform 代码非常简单:

provider "aws"{
    region="us-east-1"
}
resource "aws_instance" "web" {
  ami           = "ami-00d4e9ff62bc40e03"
  instance_type = "t2.micro"
  tags = {
    Name = "HelloWorld"
  }
}

请你帮助我,因为我很累,但我没有设法解决问题。 提前致谢!

amazon-web-services terraform terraform-provider-aws
12个回答
7
投票

从 iamadmin 转到您为 terraform 创建的用户,然后检查 Policies 。 我发现直接附加了“AWSCompromisedKeyQuarantineV2”策略。 该政策的描述是:

政策 ARN arn:aws:iam::aws:policy/AWSCompromisedKeyQuarantineV2 描述 拒绝访问 AWS 团队在 IAM 用户的凭证被泄露或公开暴露的情况下应用的某些操作。不要删除此策略。相反,请按照为您创建的有关此事件的支持案例中指定的说明进行操作。

在 aws 通知中查看未解决的问题,它将向您显示风险 IAM 隔离区

您的 AWS 账户可能已被盗用!我们已经打开了一个包含更多详细信息的支持案例。请访问 AWS 支持中心 https://aws.amazon.com/support 查看我们为您打开的案例并立即采取行动。


5
投票

你也遇到了这个错误,我通过在 AWS IAM 控制台中重新创建用户然后访问/密钥来解决同样的问题。发生这种情况的原因是我错误地将具有访问密钥和秘密密钥的 tfvars 文件上传到我的 github 存储库,该存储库由 AWS 识别,然后它限制了对该特定 IAM 用户的访问。对 AWS 的这种微观监控和安全标准表示敬意。


3
投票

您可以尝试在运行模板时启用调试,这样您就可以更好地了解缺少哪些权限。

要在 Windows 中启用日志记录:

SET TF_LOG=DEBUG

在 Mac 或其他 Linux 中:

export TF_LOG=DEBUG

然后运行您的 Terraform 命令以查看详细的日志,例如:

terraform apply

1
投票

请到您的 AWS 控制台查看您是否对该用户设置了权限边界。如果是,您可以尝试将它们全部删除。


1
投票

请使用 STS 服务解码您通过响应获得的授权令牌。它将说明您无权执行的确切操作。

例如,假设你有这个错误:

Error launching source instance: UnauthorizedOperation: You are not authorized to perform this operation. Encoded authorization failure message: ajF9SwmLaGcBxg...

要解码消息,请运行:

aws sts decode-authorization-message --encoded-message ajF9SwmLaGcBxg...

有关更多信息:https://aws.amazon.com/premiumsupport/knowledge-center/ec2-not-auth-launch/


0
投票

可能是因为:

  • 这是一个新的 AWS 账户,激活过程还没有完成。
  • 您的 AWS 密钥没有足够的权限来启动 EC2 实例。

0
投票

对我来说,问题是试图在我组织的服务控制策略禁止的区域中创建资源。用户凭据很好。


0
投票

我收到此错误是因为我在我的 AWS 配置文件中访问了错误的配置文件。

[default]
aws_access_key_id = AKIA........
aws_secret_access_key = JFV............

[org_1]
aws_access_key_id = AKIA............
aws_secret_access_key = EVg.................

发生这种情况是因为我尝试使用 default 配置文件中的凭据创建资源,而不必创建 EC2 实例。

然而,这通过更改配置以指向我打算使用的配置文件org_1解决了

因此,如果您的 AWS 配置文件包含多个配置文件,请在您的 terraform 文件中引用正确的配置文件。例如;

provider "aws" {
profile = "org_1"
region  = "us-west-..."
}

0
投票

更正您的 IAM 角色
1个管理员权限 2 AdministratorAccess-放大

如果您选择第二个 IAM 角色,则会出现该错误,因此请更改为第一个 IAM 角色


0
投票

我遇到了这个问题。我通过编辑环境变量在我的 Windows 机器中手动设置我的 aws 访问密钥和密钥。不确定为什么在使用密钥和所有设置“aws configure”之后,它没有更新机器中的 env 变量。我拥有的 IAM 用户具有 AdministratorAccess。 HTH.


0
投票

如果您已将 terraform 文件上传到某处,则必须在 IAM 中重新创建用户,这对我来说很有效


0
投票

可以查看IAM用户权限。如果附加了此政策,您可以直接将其删除。

AWSCompromisedKeyQuarantineV2

© www.soinside.com 2019 - 2024. All rights reserved.