📜  DynamoDB-访问控制

📅  最后修改于: 2020-11-28 14:05:21             🧑  作者: Mango


DynamoDB使用您提供的凭据对请求进行身份验证。这些凭证是必需的,并且必须包含用于AWS资源访问的权限。这些权限实际上涵盖了DynamoDB的各个方面,直至操作或功能的次要功能。

权限类型

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

验证用户

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

AWS建议您仅将根证书用于创建管理帐户。这使您可以使用较少的权限创建IAM帐户/用户。 IAM用户是使用IAM服务生成的其他帐户。他们的访问权限/特权包括对安全页面的访问和某些自定义权限,例如表修改。

访问密钥为其他帐户和访问提供了另一个选项。使用它们可以授予访问权限,并且在某些情况下还可以避免手动授予访问权限。联合用户通过允许通过身份提供者进行访问来提供另一种选择。

行政

AWS资源仍属于账户所有权。权限策略控制授予产生或访问资源的权限。管理员将权限策略与IAM身份(角色,组,用户和服务)相关联。他们还将权限附加到资源。

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

运作与资源

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

Type ARN (Amazon Resource Name)
Stream arn:aws:dynamodb:region:account-id:table/table-name/stream/stream-label
Index arn:aws:dynamodb:region:account-id:table/table-name/index/index-name
Table arn:aws:dynamodb:region:account-id:table/table-name

所有权

资源所有者定义为产生资源的AWS帐户,或负责资源创建中的请求身份验证的主体实体帐户。考虑一下它如何在DynamoDB环境中起作用-

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

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

  • 在创建IAM用户并授予该用户以及任何能够担当此角色的人的权限后,可以创建表,您的帐户仍然是资源所有者。

管理资源访问

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

基于身份的(IAM)策略允许您通过以下方式授予特权-

  • 将权限附加到用户或组。
  • 将权限附加到角色以获取跨帐户权限。

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

政策要素

政策定义了行动,效果,资源和原则;并授予执行这些操作的权限。

注意-API操作可能需要多个操作的权限。

仔细研究以下策略元素-

  • 资源-ARN对此进行标识。

  • 行动-关键字标识这些资源操作以及允许还是拒绝。

  • 效果-它指定用户请求操作的效果,意味着允许或拒绝,默认设置为拒绝。

  • 主体-这标识了附加到策略的用户。

条件

在授予权限时,您可以指定策略何时生效(例如在特定日期)的条件。使用条件键来表达条件,其中包括AWS系统范围键和DynamoDB键。这些键将在本教程的后面部分详细讨论。

控制台权限

用户需要某些基本权限才能使用控制台。他们还需要其他标准服务中的控制台权限-

  • CloudWatch
  • 数据管道
  • 身份和访问管理
  • 通知服务
  • 拉姆达

如果证明IAM策略过于有限,则用户将无法有效使用控制台。另外,您不必担心仅调用CLI或API的用户的权限。

通用Iam政策

AWS使用独立的IAM托管策略涵盖权限中的常见操作。它们提供了关键权限,使您可以避免对必须授予的内容进行深入研究。

其中一些如下-

  • AmazonDynamoDBReadOnlyAccess-它通过控制台提供只读访问。

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

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

您当然也可以制定自定义策略。

授予特权:使用Shell

您可以使用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" 
      } 
   ] 
}

您可以查看以下三个示例-

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

{ 
   "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/*" 
         ] 
      } 
   ] 
}

阻止用户进行预留容量产品购买。

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

授予特权:使用GUI控制台

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

步骤1-选择访问控制选项卡。

步骤2-选择身份提供者,操作和策略属性。输入所有设置后,选择创建策略

步骤3-选择“附加策略说明” ,然后完成每个必需的步骤,以将该策略与适当的IAM角色相关联。