amazon-web-services - 使用 AWS SAM 和 DynamoDB 限制 Lambda 权限
问题描述
我一直在尝试使用 Cloudformation/SAM 将堆栈放在一起。下面的 lambda 函数是在 DynamoDB 中创建联系人的处理程序,所以我认为给它必要的最少权限是谨慎的做法。
我注意到 DynamoDBWritePolicy 允许的不仅仅是 PutItem,所以我想知道进一步锁定事物的最佳方法是什么。我很欣赏这可能有点矫枉过正,但这是出于学习目的。
这是我的 Lambda 定义:
CreateContact:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs12.x
Policies:
- AWSLambdaBasicExecutionRole
- DynamoDBWritePolicy:
TableName: contacts
CodeUri: ./src/handlers/create-contact
Events:
ApiEvent:
Type: Api
Properties:
Path: /
Method: post
RestApiId:
Ref: APIGateway
所以我的问题是:我应该只为 PutItem 创建一个新策略还是依赖于权限边界之类的东西,还是我忽略了任何其他选项?
解决方案
你的方法没有错。您可以创建一个新策略来“允许”对特定资源的某些特定操作。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SpecificTable",
"Effect": "Allow",
"Action": [
"dynamodb:PutItem"
],
"Resource": "arn:aws:dynamodb:*:*:table/MyTable"
}
]
}
推荐阅读
- jenkins - 如何阻止在特定日期和时间每分钟运行一次的 Jenkins 作业
- reactjs - Word Counter React - 显示词频
- spring - 在所有 @Retryables 上执行的 RetryListenerSupport 处理程序
- php - 使用 php 在 mysql 数据库中添加用户名、电子邮件和密码时出错
- automation - 我可以使用什么编程语言和库来自动化这个 Blender 到 Unreal Engine 的管道?
- angular - 模拟服务中的方法被调用,但 toHaveBeenCalled() 在 Angular Jasmine 中失败
- sql-server - 使用“插入选择 IDENT_CURRENT()”和“从表中插入选择 IDENT_CURRENT()”时 IDENT_CURRENT() 的值
- git - ~/.ssh/config 正在导入
- python - AttributeError:“str”对象没有属性“configure”
- excel - 连续单元格的VBA部分匹配(值/字符串)