【问题标题】:Setting different permissions for different resources in Serverless在 Serverless 中为不同的资源设置不同的权限
【发布时间】:2022-07-26 03:09:52
【问题描述】:
我正在使用无服务器,并且我有一个正在运行的堆栈,其中包含 Lambda、Dynamodb 与...但是,出于安全原因,我想再部署一个具有不同权限的 lambda。例如;我希望它只有我的数据库的读取权限。但是,我构建的其他 Lambda 需要对 dbs 具有写权限。
我想出了两种不同的解决方案;
- 在无服务器部署后更改 Lambda 的权限。 (我不赞成这样做;我使用无服务器的原因是为了逃避部署配置,例如这种)
- 因此创建 2 个不同的项目,两个不同的无服务器文件,并对它们进行操作。 (这也会带来开销并使维护复杂化)
如果有一种方法可以在一个 Serverless.yml 中为不同资源定义不同的权限,那将是最好的。但是,我找不到有关此主题的资源。
感谢您的宝贵时间!
【问题讨论】:
标签:
amazon-web-services
security
serverless
【解决方案1】:
有一个名为“Serverless IAM Roles Per Function”的无服务器插件,允许您为函数创建单独的角色。您还可以拥有将在某些函数中继承的默认角色。
简而言之是这样的:
provider:
name: aws
iamRoleStatements:
- Effect: "Allow"
Action:
- xray:PutTelemetryRecords
- xray:PutTraceSegments
Resource: "*"
...
functions:
func1:
handler: handler.get
iamRoleStatementsInherit: true
iamRoleStatements:
- Effect: "Allow"
Action: s3:GetObject
Resource: arn:aws:s3:::my-bucket/*
Here 是作者的所有详细信息,here 是关于它的无服务器官方页面。