DynamoDB - 访问控制



DynamoDB 使用您提供的凭证来验证请求。这些凭证是必需的,并且必须包含 AWS 资源访问权限。这些权限涵盖了 DynamoDB 的几乎所有方面,直至操作或功能的细微功能。

权限类型

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

用户身份验证

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

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

访问密钥为额外账户和访问提供了另一种选择。使用它们来授予访问权限,并在某些情况下避免手动授予访问权限。联合用户通过允许通过身份提供者访问提供了另一种选择。

管理

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

权限指定用户、资源和操作。请注意,管理员仅仅是拥有管理员权限的账户。

操作和资源

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

类型 ARN(Amazon 资源名称)
arn: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 标识此项。

  • 操作 - 关键字标识这些资源操作,以及是否允许或拒绝。

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

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

条件

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

控制台权限

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

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

如果 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 角色关联。

广告