You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform中跨账户源安全组ID无法白名单的问题求助

解决跨账户安全组SSH访问的Terraform实现方案

你的问题出在跨账户安全组规则的写法上——AWS Terraform provider并不支持把账户ID和安全组ID拼接成账户ID:SG-ID的格式传入source_security_group_id,正确做法是拆分使用两个参数:source_security_group_id(仅填安全组ID)和source_security_group_owner_id(填对方账户ID)。

修正后的代码示例

resource "aws_security_group" "builder_sg" {
  name        = "Builder-Dev-SG"
  description = "SG for dev account builds"
  vpc_id      = data.aws_vpc.staging_vpc.id
}

resource "aws_security_group_rule" "builder_sg_ingress_0" {
  security_group_id = aws_security_group.builder_sg.id
  description       = "Allow SSH from central account CI/CD SG"

  type      = "ingress"
  protocol  = "tcp"
  from_port = 22
  to_port   = 22

  # 仅填中央账户的CI/CD安全组ID
  source_security_group_id = "sg-0a32d4ae223c46901"
  # 指定安全组所属的中央账户ID
  source_security_group_owner_id = "12345678910"
}

关键说明

  • source_security_group_owner_id参数用于告诉AWS:这个安全组属于另一个账户,需要跨账户查找验证。
  • 无需在中央账户做额外配置,只要次级账户的IAM身份(执行Terraform的角色/用户)拥有ec2:AuthorizeSecurityGroupIngress权限,且目标安全组(中央账户的CI/CD SG)存在即可。

执行terraform apply时,AWS会通过你指定的账户ID去对应账户查找安全组,不会再出现Security group not found或InvalidGroupId.Malformed的错误。

内容的提问来源于stack exchange,提问作者user21190291

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:57:29