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

无需认证通过AWS内部VPC访问S3 Bucket的可行方案咨询

解决方案:VPC内无认证访问S3 + 外部IAM角色访问并存

可以实现你的需求,核心是通过S3网关型VPC端点结合存储桶策略来区分VPC内和外部的访问规则,同时保持对象私有、公共访问禁用。

1. 创建S3网关型VPC端点

  • 在AWS控制台或通过aws ec2 create-vpc-endpoint命令创建S3网关端点,关联到你的EKS集群节点所在的私有子网。
  • 确保私有子网的路由表中添加指向该端点的路由,目标前缀为S3对应区域的前缀(如pl-xxxxxx),目标为VPC端点ID。
  • 网关端点无额外收费,仅允许同区域VPC内流量访问S3,不走公网。

2. 配置存储桶策略

编写存储桶策略,同时允许两种访问场景:VPC内无认证访问、指定外部IAM角色的认证访问。策略示例如下(替换占位符为实际资源信息):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": "vpc-xxxxxxxxx" // EKS集群所在VPC ID
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/your-external-access-role" // 外部访问用的IAM角色ARN
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}
  • 第一条规则:允许指定VPC内的所有请求(无需IAM认证)执行指定S3操作;
  • 第二条规则:允许指定IAM角色执行S3操作(外部访问需通过该角色认证);
  • 第三条规则:强制所有请求使用HTTPS,提升传输安全性。

3. 验证GitLab Runner访问

  • 确认EKS私有节点在关联网关端点的子网内,且路由表配置正确;
  • GitLab Runner无需配置任何AWS凭证环境变量,直接使用S3区域域名(如your-bucket-name.s3.us-east-1.amazonaws.com)或路径式访问即可完成对象操作。

关键注意事项

  • S3网关端点仅支持同区域访问,确保EKS集群与S3存储桶在同一AWS区域;
  • 存储桶策略权限最小化,仅授予实际需要的操作(如仅读取则保留s3:GetObject和s3:ListBucket);
  • 保持存储桶公共访问完全阻止的设置,该设置会覆盖策略中的公共访问规则,确保对象私有;
  • 外部访问的IAM角色需自身具备对应S3权限(通过IAM策略授予),存储桶策略仅作为访问允许的补充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:34:55