Dynamodb 简明教程
DynamoDB - Access Control
DynamoDB 使用您提供用于验证请求的凭证。这些凭证是必需的并且必须包括 AWS 资源访问权限。这些权限跨越 DynamoDB 的几乎每个方面,直到操作或功能的次要特征。
Types of Permissions
在本节中,我们将讨论 DynamoDB 中的各种权限和资源访问。
Authenticating Users
在注册时,您提供了一个密码和电子邮件,它们作为根凭证。DynamoDB 将此数据与您的 AWS 帐户相关联,并使用它来授予对所有资源的完全访问权限。
AWS 建议您仅将根凭证用于创建管理帐户。这允许您创建具有较少权限的 IAM 帐户/用户。IAM 用户是使用 IAM 服务衍生的其他帐户。他们的访问权限/特权包括访问安全页面和某些自定义权限,如表修改。
访问密钥为其他帐户和访问提供了另一个选项。使用它们来授予访问权限,并且在某些情况下还可以避免手动授予访问权限。联合用户通过允许通过身份提供程序进行访问,提供了另一种选择。
Administration
AWS 资源仍归帐户所有。权限策略管理授予生成或访问资源的权限。管理员将权限策略与 IAM 身份相关联,这意味着角色、组、用户和服务。他们还将权限附加到资源。
权限指定用户、资源和操作。注意,管理员只是具有管理员权限的帐户。
Operation and Resources
表仍然是 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 |
Ownership
资源所有者被定义为生成资源的 AWS 帐户,或在资源创建中负责请求验证的负责人实体帐户。考虑它如何在 DynamoDB 环境中起作用:
-
在使用根凭证创建表时,您的帐户仍然是资源所有者。
-
在创建 IAM 用户并授予该用户创建表的权限时,您的帐户仍然是资源所有者。
-
在创建 IAM 用户和授予该用户,以及任何能够担当此角色的人员创建表的权限时,您的帐户仍然是资源所有者。
Manage Resource Access
访问管理主要需要关注描述用户和资源访问的权限策略。您将策略与 IAM 身份或资源相关联。但是,DynamoDB 仅支持 IAM/身份策略。
基于身份(IAM)的策略允许您以以下方式授予特权:
-
将权限附加到用户或组。
-
将权限附加到角色以获得跨帐户权限。
其他 AWS 允许基于资源的策略。这些策略允许访问诸如 S3 存储桶之类的资源。
Policy Elements
策略定义动作、效果、资源和主体;并授予执行这些操作的权限。
Note − API 操作可能需要针对多个动作的权限。
仔细查看以下策略元素−
-
Resource − ARN 标识此项。
-
Action − 关键词标识这些资源操作,以及允许还是拒绝。
-
Effect − 它指定对于用户针对动作发出的请求的效果,即允许或拒绝,默认情况下为拒绝。
-
Principal − 这标识附加到策略的用户。
Granting Privileges: Using The 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"
}
]
}
您可以查看以下三个示例−
Block the user from executing any table action.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "AllAPIActionsOnTools",
"Effect": "Deny",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:table/Tools"
}
]
}
Block access to a table and its indices.
{
"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/*"
]
}
]
}
Block a user from making a reserved capacity offering purchase.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "BlockReservedCapacityPurchases",
"Effect": "Deny",
"Action": "dynamodb:PurchaseReservedCapacityOfferings",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:*"
}
]
}