Jie*_*eng 2 security amazon-web-services aws-lambda
我使用 CloudFormation/AWS SAM 创建了 RDS 数据库和 Lambda 函数。我目前通过环境变量传递数据库连接信息,但不确定这是否是推荐的方式,因为在 AWS 仪表板中,我可以以明文形式看到密码
TestApiFunction:
Type: AWS::Serverless::Function
DependsOn: DB
Properties:
Handler: src/test.handler
FunctionName: Test
VpcConfig:
SecurityGroupIds:
- !Ref DataTierSecurityGroup
SubnetIds:
- !Ref PrivateSubnet1
- !Ref PrivateSubnet2
- !Ref PrivateSubnet3
Environment:
Variables:
'DB_HOST': !GetAtt DB.Endpoint.Address
'DB_USER': !Ref DBUser
'DB_PASSWORD': !Ref DBPassword
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 MySQL 或与 MySQL 兼容的 Aurora,则可以使用IAM 数据库身份验证来使用 IAM 角色(而不是用户名和密码)来连接到数据库。
您只需在 RDS 实例上启用 IAM 数据库身份验证,创建具有rds-db:connect权限的角色,并将该角色附加到 Lambda 函数。本文将介绍有关设置的更详细说明。
不幸的是,您似乎无法从 CloudFormation 启用 IAM 数据库身份验证,因此如果这是不行的或者您没有使用兼容的数据库引擎,您还可以查看AWS Secrets Manager。您需要创建一个IAM 角色来访问您的 Secrets Manager 密钥并将该角色附加到您的 Lambda 函数。这种方法的好处之一是, AWS为您提供 RDS 用户名/密码的开箱即用的密钥轮换。
| 归档时间: |
|
| 查看次数: |
1757 次 |
| 最近记录: |