如何使用dynamodb具有只读用户和全部访问用户的两个不同凭证?
问题描述:
我正在构建一个将在亚马逊上使用无服务器体系结构的产品(使用此example project)。如何使用dynamodb具有只读用户和全部访问用户的两个不同凭证?
现在任何人都可以使用该产品。但是,我不希望只有任何人能够从数据库中添加/更新/删除。我做想要任何人能够从它读取虽然。所以,我想使用两套不同的凭证。第一个将随应用程序一起分发,并允许只读访问。第二组仍然是内部的,并将嵌入到应用程序将使用的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}"
我如何设置两个不同的角色?
答
IAM提供了一些预先定义的,管理的DynamoDB IAM政策,包括:
- AmazonDynamoDBReadOnlyAccess
- AmazonDynamoDBFullAccess
创建这些管理政策2个IAM角色:一个是你的只读应用程序,另一个用于内部系统。如果其中一个/两个都在EC2上运行,那么您可以启动这些具有相关IAM角色的EC2实例,而不是依赖环境变量中的凭证。