【问题标题】:Unable to create AWS security group via Terraform无法通过 Terraform 创建 AWS 安全组
【发布时间】:2019-08-20 18:06:15
【问题描述】:

我正在使用 Jenkins 自动化 Terraform 来创建我的 AWS 环境。尽管 Jenkins 拥有 CreateSecurityGroup 的权限,但当 Jenkins 运行我的 Terraform 主文件时出现此错误:

* aws_security_group.lambda_security_group: aws_security_group.lambda_security_group: UnauthorizedOperation: You are not authorized to perform this operation.status code: 403, request id: 08c21dbe-5b86-4ad1-8ff3-13611bdb178c

有了 CreateSecurityGroup 权限——我很好奇为什么我无法执行该操作。

我已确保将这些权限分配给创建安全组的 Jenkins 角色:

        {
            "Sid": "AllowEC2Control",
            "Action": [
                "ec2:CreateSecurityGroup"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        }

这是我的 Terraform 文件中的代码:

创建安全组:

resource "aws_security_group" "lambda_security_group" {
  name = "security group"
  description = "Security group for data ingestion lambda"
  vpc_id = "${var.vpc_id}"

  egress {
    from_port = 0
    to_port = 0
    protocol = "-1"
    cidr_blocks = [
      "0.0.0.0/0"
    ]
  }

  tags {
    Service = "${var.tags_service_name}"
    environment = "${var.environment}"
  }
}

创建 lambda:

resource "aws_lambda_function" "some_lambda" {
  function_name = "my_lambda"
  s3_bucket = "${aws_s3_bucket.my_data.bucket}"
  s3_key = "lambda.zip"
  role    = "${aws_iam_role.my_iam_role.arn}"
  handler = "lambda_function.lambda_handler"
  runtime = "python3.6"
  timeout = 900
  memory_size = 128
  source_code_hash = "${var.GIT_SHA}"
  vpc_config {
    security_group_ids = [
      "${aws_security_group.lambda_security_group.id}"
    ]
    subnet_ids = "${var.subnets}"
  }

不幸的是,当 Jenkins 执行 Terraform 脚本时,我在顶部发布了错误消息。我希望拥有创建此安全组的适当权限

【问题讨论】:

  • jenkins 如何接收凭证?是通过 ec2 实例角色还是您手动配置了访问密钥?
  • Jenkins 用户使用 Terraform 假设的 IAM 可能需要的不仅仅是“创建”来创建安全组。由于 Terraform 执行 CRUD 样式的操作,因此可能还需要“读取”权限。
  • 我会给你的 Jenkins 角色所有 ec2:* 权限来测试它,然后尝试创建更细化的权限。您需要一些权限才能使该代码正常运行。

标签: amazon-ec2 terraform aws-security-group aws-vpc


【解决方案1】:

您只需授权您的詹金斯创建安全组,并在您想要添加和出口的 terraform 代码中。

您也必须授予出口权限。这里有一个参考 https://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html#security-group

为了能够添加/更新/删除您更改更改您的 iam 规则

        {
            "Sid": "AllowEC2Control",
            "Action": [
                "ec2:CreateSecurityGroup",
                "ec2:*SecurityGroupEgress",
                "ec2:*SecurityGroupIngress",

            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        }

【讨论】:

  • 这不包括创建标签的权限。
猜你喜欢
  • 2020-08-30
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2020-05-30
  • 2021-05-08
  • 2020-08-27
  • 2021-07-06
  • 1970-01-01
相关资源
最近更新 更多