允许 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 时,我可以毫无问题地连接到数据库。
两个问题:
- 我对文档有误解吗?
- 是否可以将 ECS 任务添加到预定义的安全组中,以便我只需要将这个特定的安全组列入白名单?
此策略允许您使用 CLI 生成临时凭据作为特定 IAM user/role,您仍然需要通过网络进行入站访问才能连接。
如果您想简化此连接过程,您可以使用 2 个安全组选项:
- 将任务所在的子网范围列入白名单,如果这是一个安全问题,可以将任务移到特定的子网中以更容易地列入白名单。
- 创建一个空白安全组,您将其附加到需要连接到 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 时,我可以毫无问题地连接到数据库。
两个问题:
- 我对文档有误解吗?
- 是否可以将 ECS 任务添加到预定义的安全组中,以便我只需要将这个特定的安全组列入白名单?
此策略允许您使用 CLI 生成临时凭据作为特定 IAM user/role,您仍然需要通过网络进行入站访问才能连接。
如果您想简化此连接过程,您可以使用 2 个安全组选项:
- 将任务所在的子网范围列入白名单,如果这是一个安全问题,可以将任务移到特定的子网中以更容易地列入白名单。
- 创建一个空白安全组,您将其附加到需要连接到 RDS 的任何任务,然后将其添加为入站源。安全组可以在所有任务中重复使用,只是为了确定它应该具有访问权限。