我正在构建一个将在亚马逊上使用无服务器架构的产品(使用此example project)。
现在任何人都可以使用该产品。但是,我不希望任何人能够从数据库中添加/更新/删除。我做希望任何人能够读取。所以,我想使用两组不同的凭据。第一个将与应用程序一起分发,并允许只读访问。第二组仍然是内部的,并且将嵌入到应用程序将使用的OS变量中。
看起来这些权限是在serverless.yml文件中设置的,但这只适用于一组凭据。
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE}"
我如何设置两个不同的角色?
答案 0 :(得分:1)
IAM为DynamoDB提供了许多预定义的托管IAM策略,包括:
使用这些托管策略创建两个IAM角色:一个用于只读应用程序,另一个用于内部系统。如果其中一个/两个都在EC2上运行,那么您可以使用相关的IAM角色启动这些EC2实例,而不是依赖于环境变量中的凭据。