DynamoDB - 访问控制

DynamoDB使用您提供的凭据来验证请求.这些凭据是必需的,必须包含AWS资源访问权限.这些权限几乎涵盖DynamoDB的每个方面,直至操作或功能的次要功能.

权限类型

在本节中,我们将讨论有关DynamoDB中的各种权限和资源访问.

验证用户

在注册时,您提供了一个密码和电子邮件,用作root凭据. DynamoDB将此数据与您的AWS账户相关联,并使用它来提供对所有资源的完全访问权限.

AWS建议您仅将root凭据用于创建管理帐户.这允许您创建具有较少权限的IAM帐户/用户. IAM用户是使用IAM服务生成的其他帐户.他们的访问权限/权限包括访问安全页面和某些自定义权限,如表格修改.

访问键为其他帐户和访问提供了另一种选择.使用它们来授予访问权限,并避免在某些情况下手动授予访问权限.联合用户通过允许通过身份提供商进行访问来提供另一种选择.

管理

AWS资源仍属于帐户所有权.权限策略管理授予生成或访问资源的权限.管理员将权限策略与IAM身份相关联,这意味着角色,组,用户和服务.它们还附加了对资源的权限.

权限指定用户,资源和操作.注意管理员只是具有管理员权限的帐户.

操作和资源

表仍然是DynamoDB中的主要资源.子资源用作附加资源,例如流和索引.这些资源使用唯一的名称,其中一些在下表中提及 :

键入ARN(亚马逊资源名称)
Streamarn:aws:dynamodb:region:account-id:table/table-name/stream/stream-label
索引arn:aws :dynamodb:region:account-id:table/table-name/index/index-name
arn:aws:dynamodb:region:account-id:table/table-name

所有权

资源所有者被定义为产生资源的AWS账户,或负责资源创建中的请求认证的主要实体账户.请考虑它在DynamoDB环境中的运行方式 :

  • 在使用根凭据创建表时,您的帐户仍然是资源所有者.

  • 在创建IAM用户并授予用户创建表的权限时,您的帐户仍然是资源所有者.

  • 在创建IAM用户并授予用户权限以及任何能够担任该角色的人员(创建表格的权限)时,您的帐户仍然是资源所有者.

管理资源访问

访问管理主要需要关注描述用户和资源访问的权限策略.您将策略与IAM身份或资源相关联.但是,DynamoDB仅支持IAM/身份策略.

基于身份的(IAM)策略允许您以下列方式授予权限 :

  • 将权限附加到用户或组.

  • 为角色附加跨帐户权限的权限.

其他AWS允许基于资源的策略.这些策略允许访问诸如S3存储桶之类的东西.

策略元素

策略定义操作,效果,资源和主体;并授予执行这些操作的权限.

注意 :  API操作可能需要多个操作的权限.

仔细查看以下政策元素 :

  • 资源 :  ARN识别出这一点.

  • 行动 : 关键字标识这些资源操作,以及是否允许或拒绝.

  • 效果 : 它指定用户请求操作的效果,即允许或拒绝拒绝作为默认值.

  • Principal : 这标识了附加到策略的用户.

条件

在授予权限时,您可以指定策略何时变为活动状态(例如特定日期)的条件.使用条件键表达条件,包括AWS系统范围的密钥和DynamoDB密钥.这些密钥将在本教程后面详细讨论.

控制台权限

用户需要某些基本权限才能使用控制台.他们还要求其他标准服务中的控制台权限减去;

  • CloudWatch

  • 数据管道

  • 身份和访问管理

  • 通知服务

  • Lambda

如果IAM策略证明太有限,则用户无法有效使用控制台.此外,您无需担心仅调用CLI或API的用户权限.

常用Iam策略

AWS涵盖常见操作具有独立IAM托管策略的权限.它们提供关键权限,允许您避免深入调查您必须授予的内容.

其中一些如下 :

  • AmazonDynamoDBReadOnlyAccess : 它通过控制台提供只读访问权限.

  • AmazonDynamoDBFullAccess : 它通过控制台提供完全访问权限.

  • AmazonDynamoDBFullAccesswithDataPipeline : 它通过控制台提供完全访问权限,并允许使用数据管道导出/导入.

您还可以制定自定义策略.

授予权限:使用命令行管理程序

您可以使用Javascript shell授予权限.以下程序显示了典型的权限策略 :

{ 
   "Version": "2016-05-22", 
   "Statement": [ 
      { 
         "Sid": "DescribeQueryScanToolsTable", 
         "Effect": "Deny", 
         
         "Action": [ 
            "dynamodb:DescribeTable", 
            "dynamodb:Query", 
            "dynamodb:Scan" 
         ], 
         "Resource": "arn:aws:dynamodb:us-west-2:account-id:table/Tools" 
      } 
   ] 
}

你可以查看三个示例如下 :

阻止用户执行任何表操作.

 
 {
"版本":"2016-05-23",
"声明":[
 {
"Sid":"AllAPIActionsOnTools",
"效果":"拒绝",
"动作":"dynamodb:*",
"资源":"arn:aws:dynamo db:us-west-2:155556789012:table/Tools"
} 
] 
}

阻止访问表及其索引.

{ 
   "Version": "2016-05-23", 
   "Statement": [ 
      { 
         "Sid": "AllAPIActionsOnTools", 
         "Effect": "Deny", 
         "Action": "dynamodb:*", 
         "Resource": "arn:aws:dynamodb:us-west-2:155556789012:table/Tools" 
      } 
   ] 
}

阻止用户进行预订容量购买.

{ 
   "Version": "2016-05-23", 
   "Statement": [ 
      { 
         "Sid": "AccessAllIndexesOnTools", 
         "Effect": "Deny", 
         "Action": [
            "dynamodb:*" 
         ], 
         "Resource": [ 
            "arn:aws:dynamodb:us-west-2:155556789012:table/Tools", 
            "arn:aws:dynamodb:us-west-2:155556789012:table/Tools/index/*" 
         ] 
      } 
   ] 
}

授予权限:使用GUI控制台

您还可以使用GUI控制台创建IAM策略.首先,从导航窗格中选择.在表格列表中,选择目标表格并按照以下步骤操作.

步骤1 : 选择访问控制标签.

第2步 : 选择身份提供者,操作和策略属性.输入所有设置后,选择创建政策.

步骤3 : 选择附加政策说明,并完成将政策与相应的IAM角色相关联的所有必需步骤.