我正在尝试使用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"
}
}
你能帮我吗,因为我做了那么多事情,但我没能解决这个问题。提前感谢!
转到您从iammadmin为地形创建的用户,然后检查策略。我发现;AWSCompromised KeyQuarantineV2";直接附加了策略。该政策的描述是:
政策ARNarn:aws:iam::aws:policy/AWSCompromisedKeyQuarantineV2描述在IAM用户的凭据被泄露或公开的情况下,拒绝访问AWS团队应用的某些操作。请勿删除此策略。相反,请按照为您创建的有关此事件的支持案例中指定的说明进行操作。
检查aws通知中的未决问题,它将向您显示IAM隔离风险
您的AWS帐户可能会被泄露!我们已经打开了一个包含更多详细信息的支持案例。请访问AWS支持中心https://aws.amazon.com/support审查我们为您打开的案例并立即采取行动。
您也遇到了这个错误,我通过在AWS IAM控制台中重新创建用户,然后访问/secret密钥来修复这个错误。发生这种情况的原因是,我错误地将具有访问密钥和密钥的tfvars文件上传到了我的github repo,该文件由AWS识别,然后它限制了对特定IAM用户的访问。对于以下微观级别的监控和安全标准,向AWS致敬。
您可以在运行模板时尝试启用调试,这样您就可以更好地了解缺少哪个权限块。
启用登录Windows:
SET TF_LOG=DEBUG
在Mac或其他Linux中:
export TF_LOG=DEBUG
然后运行Terraform命令查看详细日志,例如:
terraform apply
请使用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/
请转到您的AWS控制台,查看您是否设置了该用户的权限边界。如果是,您可以尝试将它们全部删除。
也许原因是:
- 这是一个新的AWS帐户,激活过程尚未完成
- 您的AWS密钥没有足够的权限来启动EC2实例
对我来说,问题是试图在组织的服务控制策略禁止的区域中创建资源。用户凭据正常。
我收到这个错误是因为我在AWS配置文件中访问了一个错误的配置文件。
[default]
aws_access_key_id = AKIA........
aws_secret_access_key = JFV............
[org_1]
aws_access_key_id = AKIA............
aws_secret_access_key = EVg.................
发生这种情况是因为我试图使用默认配置文件中的凭据创建资源,而不必创建EC2实例。
然而,通过更改配置以指向我打算使用的配置文件org_1解决了这一问题
因此,如果您的AWS配置文件包含多个配置文件,请在terraform文件中引用正确的配置文件。例如
provider "aws" {
profile = "org_1"
region = "us-west-..."
}
更正IAM角色
1 AdministratorAccess2管理员访问放大
如果您选择第二个IAM角色,则会出现错误,因此请更改为第一个IAM角色
我遇到了这个问题。我通过编辑环境变量,在windows机器中手动设置aws访问密钥和密钥。虽然不确定为什么在设置";aws配置";有了密钥和所有密钥,它没有更新机器中的env变量。我拥有的IAM用户具有AdministratorAccess权限。HTH。
如果你已经将地形文件上传到某个地方,你将不得不在IAM中重新创建用户,为我工作
您可以检查IAM用户权限。如果附加了此策略,则可以直接将其删除。
AWS兼容KeyQuarantineV2
我的问题是用户的用户组有两个权限策略(AmazonEC2FullAccess和Force_MFA-如果您没有MFA,则拒绝访问的自定义策略)。因此,使用访问密钥方法当然不起作用,因为它不使用MFA!