允许 ECS 任务访问 RDS

Allow ECS Tasks to access RDS

我有几个 ECS 任务(fargate,通过 Lambda 函数执行)需要连接到 RDS。 每个任务都有自己的角色定义策略(例如)访问 S3 存储桶。

我的每个任务都有自己的安全组。

我现在可以将 RDS 上的每个任务安全组列入白名单,但这很麻烦,因为每天都会添加新任务。

我认为一定可以添加允许访问 RDS (as described in the docs) 的策略:

- PolicyName: RDSAccess
  PolicyDocument:
    Statement:
      - Effect: Allow
        Action:
          - rds-db:connect
        Resource: 'arn:aws:rds-db:REGION:ID:dbuser:DB_ID/DB_USER'

不幸的是,这不起作用 - 我仍然无法连接到数据库。

如前所述:当明确地将每个任务安全组添加到 RDS 时,我可以毫无问题地连接到数据库。

两个问题:

  1. 我对文档有误解吗?
  2. 是否可以将 ECS 任务添加到预定义的安全组中,以便我只需要将这个特定的安全组列入白名单?

此策略允许您使用 CLI 生成临时凭据作为特定 IAM user/role,您仍然需要通过网络进行入站访问才能连接。

如果您想简化此连接过程,您可以使用 2 个安全组选项:

  • 将任务所在的子网范围列入白名单,如果这是一个安全问题,可以将任务移到特定的子网中以更容易地列入白名单。
  • 创建一个空白安全组,您将其附加到需要连接到 RDS 的任何任务,然后将其添加为入站源。安全组可以在所有任务中重复使用,只是为了确定它应该具有访问权限。