如何使用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实例,而不是依赖环境变量中的凭证。